Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Ппрограмма на Паскале как улучшить???

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Ппрограмма на Паскале как улучшить???
Имя
Сообщение << Старые топики   Новые топики >>
Ппрограмма на Паскале как улучшить??? - 2008-12-25 14:44:18.073333   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
Задача такова:Задан двумерный массив,вставить второй столбец после столбца в котором все элементы положительны…
я сделала примерно так:program lab_7; uses crt; var mas:array[1..100,1..100] of integer; spec:array[1..100,1..100] of integer; x,y,p,q,z,a:integer; begin writeln('start...'); readkey; clrscr; write('kol-vo strok='); read(p); writeln('...'); write('kol-vo stolbzov='); read(q); x:=0; clrscr; while p&gt;x do begin x:=x+1; y:=0; while q&gt;y do begin write('elemetz of massiv=massive[') ; write(x); write(','); write(y+1); write(']='); y:=y+1; read(mas[x,y]); clrscr; end; end; for x:=1 to p do for y:=1 to q do begin writeln(mas[x,y]); end; readkey; clrscr; for y:=1 to q do begin z:=0; for x:=1 to p do begin if mas[x,y]&gt;=0 then z:=z+1 else x:=p; if z=p then begin z:=y; x:=p; y:=q; end; end; end; for x:=1 to p do begin writeln(mas[x,z]); readkey; end; clrscr; for x:=1 to p do for y:=1 to z do begin spec[x,y]:=mas[x,y]; end; writeln('vvedite stolbez ++'); read(a); clrscr; y:=z+1; for x:=1 to p do begin spec[x,y]:=mas[x,a]; end; for x:=1 to p do for y:=y+1 to q+1 do begin a:=y-1; spec[x,y]:=mas[x,a]; end; for x:=1 to p do for y:=1 to q+1 do begin writeln(spec[x,y]); end; readkey; end.
если не сложно подскажите как улучшить(как сделать красивый вывод матрицы) или что исправить что бы программа была по меньше, что бы сократить число используемых переменных и сделать всё с помощью одного массива(переменную а можно вообще убрать заменив её на z)… так то у меня есть пара идей по этому поводу…но хотелось бы послушать более опытных людей…
Post #: 1
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 18:06:05.990000   
b[e]nd3p

Сообщений: 187
Оценки: 0
Присоединился: 2008-09-02 20:54:56.370000
Не могу долго читать оформи код как нормальный программист…
Post #: 2
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 19:28:23.233333   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
а как её оформляет нормальный програмист….подскажи как я переделаю…
Post #: 3
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 19:38:50.063333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: b[e]nd3p

Не могу долго читать оформи код как нормальный программист…


настоящий программист на любом языке может писать на фортране ;)
Post #: 4
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 20:37:04.636666   
Данила88

Сообщений: 38
Оценки: 0
Присоединился: 2008-12-06 14:44:29.386666
Fortran77
Массив n*m(до первого столбца с пол. эл-ми)

dimension a(1000,1000),b(1000),c(1000,1000)
read(*,*)m,n
do 2 i=1,n______________ построчная загрузка массива
do 1 j=1,m
read(*,*)a(i,j)
if(a(i,j).gt.0) then
w=w+1
endif
1 continue
if(w.eq.m) then ________________установление "положительного"столбца
l=j
endif
2 continue
if(l.eq.0) then
write(1,*)'net poloj stolb'
go to 111
endif
do 4 i=1,n
do 3 j=1,l
c(i,j)=a(i,j)
3 continue
4 continue
do 6 i=1,n
do 5 j=l,m
c(i,j+2)=a(i,j)
5 continue
6 continue
do 6 i=1,n
read(*,*)c(i,l+1)
6 continue
do 8 i=1,n
do 7 j=1,m+1
write(1,*)c(i,j)___________1-канал вывода
7 continue
8 continue
111 continue
end

a(1000,1000)-исходный массив
с(1000,1000)-полученный массив
Post #: 5
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 20:38:11.560000   
Данила88

Сообщений: 38
Оценки: 0
Присоединился: 2008-12-06 14:44:29.386666
Что-то такое…
Post #: 6
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 20:48:11.853333   
MEPOX

Сообщений: 868
Оценки: 0
Присоединился: 2008-03-16 10:11:26.610000
Мне кажется что у тебя слишком много строк и они идут слишком в линию=)
Писал бы простые операторы в одной строке, а то так перелистывать забадаешься..
И отступов у тя нету.
Post #: 7
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 20:52:54.070000   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
попробую…
Post #: 8
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 21:02:09.006666   
MEPOX

Сообщений: 868
Оценки: 0
Присоединился: 2008-03-16 10:11:26.610000
Давай я тебе напишу..
Только мне непонятно вот это –
>вставить второй столбец после столбца в котором все элементы положительны…
А если таких столбцов >1?
Post #: 9
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 21:09:01.620000   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
program lab_7; uses crt; var mas:array[1..100,1..100] of integer; spec:array[1..100,1..100] of integer; x,y,p,q,z,a:integer; begin writeln('начало...'); readkey; write('количество строк='); read(p); write('количество столбцов='); read(q); x:=0; clrscr; while p&gt;x do begin//заполнение массива... x:=x+1; y:=0; while q&gt;y do begin write('элемент матрицы['); write(x); write(','); write(y+1); write(']='); y:=y+1; read(mas[x,y]); clrscr; end; end; for x:=1 to p do//можно пропустить или удалить... for y:=1 to q do begin writeln(mas[x,y]); end; readkey; clrscr; for y:=1 to q do//поиск положительного столбца.... begin z:=0; for x:=1 to p do begin if mas[x,y]&gt;=0 then z:=z+1 else x:=p; if z=p then begin z:=y; x:=p; y:=q; end; end; end; for x:=1 to p do begin//вставка столбца в массив после первого положительного столбца... write(mas[x,z]); end; clrscr; for x:=1 to p do for y:=1 to z do begin spec[x,y]:=mas[x,y]; end; writeln('укажите столбец который вы хотите вставить '); y:=z+1; read(z); clrscr; for x:=1 to p do begin spec[x,y]:=mas[x,z]; end; for x:=1 to p do for y:=y+1 to q+1 do begin z:=y-1; spec[x,y]:=mas[x,z]; end; for x:=1 to p do for y:=1 to q+1 do begin writeln(spec[x,y]); end; readkey; end. так сойдёт…
Post #: 10
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-25 21:15:02.766666   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
quote:

ORIGINAL: MEPOX

Давай я тебе напишу..
Только мне непонятно вот это –
&gt;вставить второй столбец после столбца в котором все элементы положительны…
А если таких столбцов &gt;1?

первый попавшийся…
всё просто нужно что бы хотя бы один столбец был отрицательным….задачу то я в принципе решил….просто мне не нравиться вывод и прочая мутатень…хочу что бы матрица выводилась красиво….
Post #: 11
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-26 10:54:36.790000   
MEPOX

Сообщений: 868
Оценки: 0
Присоединился: 2008-03-16 10:11:26.610000
>хочу что бы матрица выводилась красиво….
write(Q:4); ":" Задает отступ
Будет нормально.
Или я тебя не так понял?
Post #: 12
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-26 14:17:03.513333   
b[e]nd3p

Сообщений: 187
Оценки: 0
Присоединился: 2008-09-02 20:54:56.370000
program lab_7;
uses
crt;
var
mas:array[1..100,1..100] of integer;
spec:array[1..100,1..100] of integer;
x,y,p,q,z,a:integer;

begin
writeln('начало…');
readkey;
write('количество строк=');
read(p);
write('количество столбцов=');
read(q);
x:=0;
clrscr;
while p>x do
begin//заполнение массива…
x:=x+1;
y:=0;
while q>y do
begin
write('элемент матрицы[');
write(x);
write(',');
write(y+1);
write(']=');
y:=y+1;
read(mas[x,y]); clrscr;
end;
end;

// не понял что делаешь?
for x:=1 to p do//можно пропустить или удалить…
for y:=1 to q do
begin
writeln(mas[x,y]);
end;
readkey;
clrscr;
// вот

//кусок в принципе не нужен не увидел отрицательных элементов столбцов
for y:=1 to q do//поиск положительного столбца….
begin
z:=0;
for x:=1 to p do
begin
if mas[x,y]>=0 then
z:=z+1
else x:=p;
if z=p then
begin
z:=y; x:=p; y:=q;
end;
end;
end;
//

for x:=1 to p do
begin//вставка столбца в массив после первого положительного столбца…
write(mas[x,z]);
end;
clrscr;
for x:=1 to p do
for y:=1 to z do
begin
spec[x,y]:=mas[x,y];
end;
writeln('укажите столбец который вы хотите вставить ');
y:=z+1;
read(z);
clrscr;
for x:=1 to p do
begin
spec[x,y]:=mas[x,z];
end;
for x:=1 to p do
for y:=y+1 to q+1 do
begin
z:=y-1;
spec[x,y]:=mas[x,z];
end;
for x:=1 to p do
for y:=1 to q+1 do
begin
writeln(spec[x,y]);
end;
readkey;
end. так только блоки посмотрел у тебя нет отрицательных столбцов, зачем тебе проводить поиск на положительный столбец?
Post #: 13
RE: Ппрограмма на Паскале как улучшить??? - 2008-12-26 16:23:07.266666   
9off

Сообщений: 696
Оценки: 0
Присоединился: 2008-10-16 07:09:00.173333
quote:

так только блоки посмотрел у тебя нет отрицательных столбцов, зачем тебе проводить поиск на положительный столбец?
….
quote:

всё просто нужно что бы хотя бы один столбец был отрицательным
так по задаче хотя ты прав можно и так схитрить…
Post #: 14
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Ппрограмма на Паскале как улучшить???







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.