07.02.2011, 20:55 | #1 (permalink) |
Member
Регистрация: 07.02.2011
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Количество элементов до первого положительного
Определить одну процедуру, которая считает количество элементов до первого положительного в вещественных массивах x[20], y[20], z[20] и формирует из этих элементов новый массив NEW. Вывести на печать исходные и полученные массивы. |
07.02.2011, 20:55 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Полезные советы по решению проблемы можно найти в аналогичных обсуждениях Монтаж чип-элементов Компьютер не включается с первого раза Комп не загружается с первого раза Количество элементов массива С++ Количество элементов массива |
08.02.2011, 16:14 | #3 (permalink) |
Banned
Регистрация: 25.01.2011
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот программа, ишет числа и выводит массив, не процедура наверное (или я не прав)
Код:
var a:array[1..20] of real; b:array[1..20] of real; c:array[1..20] of real; NEW:array[0..100] of real; i,k:integer; begin k:=0; Writeln('Заполнение массива'); for i:=1 to 20 do begin Readln(a[i]); Writeln('a[',i,']=',a[i]); end; for i:=1 to 20 do begin Readln(b[i]); Writeln('b[',i,']=',b[i]); end; for i:=1 to 20 do begin Readln(c[i]); Writeln('c[',i,']=',c[i]); end; for i:=1 to 20 do begin if a[i]<=0 then begin new[k]:=a[i]; k:=k+1; end end; for i:=1 to 20 do begin if b[i]<=0 then begin new[k]:=b[i]; k:=k+1; end end; for i:=1 to 20 do begin if c[i]<=0 then begin new[k]:=c[i]; k:=k+1; end end; for i:=1 to k do Writeln('NEW[',i,']=',NEW[i]); for i:=1 to 20 do begin Write('a[',i,']=',a[i],' '); end; for i:=1 to 20 do begin Write('b[',i,']=',b[i],' '); end; for i:=1 to 20 do begin Write('c[',i,']=',c[i],' '); end; readln; end. |
08.02.2011, 21:14 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Знаете, вот я, имея программистский опыт в несколько десятилетий и будучи автором программ, занимающих отнюдь не пол странички, а сотни страниц, такого себе не позволяю - любая программа, которую я выкладываю (за очень редким исключением) мною обязательно транслируется и тщательно тестируется, и только потом появляется здесь. А Вы, чудо-ребенок, как видно, считаете себя выше этого. Так? А в данной программе ошибка заложена уже в самОй формулировке. Дело в том, что предложенное имя массива "NEW" свидетельствует о безграмотности составителя задачи, поскольку "NEW" - это зарезервированное служебное слово языка Паскаль, и любой транслятор тут же сообщит об ошибке уже на этапе трансляции. Далее. Вы не дали себе труда как следует внимательно прочитать условие задачи. В условии требуется собрать в новый массив элементы ДО ПЕРВОГО ПОЛОЖИТЕЛЬНОГО, т.е. как только появилось положительное число, обработку исходного массива следует прекратить и перейти к следующему. Или закончить, если это третий из исходных массивов. Вы же сбрасываете в новый массив все отрицательные элементы всех трех исходных массивов. Это не соответствует задаче. Не говоря уже о безобразной организации ввода-вывода массивов. Если бы Вы сподобились каким-то чудом запустить своё изделие, Вы бы это увидели и, надеюсь, исправили. Короче говоря, так. Если я еще раз увижу выложенный неотлаженный сырец, выдаваемый за рабочую программу, пойдете в бан. Причем вечный. Потому что репутация форума мне небезразлична. А Вы подобными действиями ее подрываете. |
|
08.02.2011, 21:48 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну и уж "раз пошла такая пьянка", придется выложить рабочий (естественно, оттестированный) вариант программы:
Код:
var a:array[1..20] of real; b:array[1..20] of real; c:array[1..20] of real; N_E_W:array[0..60] of real; i,k:integer; begin k:=0; Writeln('Заполнение массивов:'); for i:=1 to 20 do begin Write('a[',i:2,']= '); Readln(a[i]); end; for i:=1 to 20 do begin Write('b[',i:2,']= '); Readln(b[i]); end; for i:=1 to 20 do begin Write('c[',i:2,']= '); Readln(c[i]); end; i:=0; Repeat i:=i+1; if a[i]<=0 then begin k:=k+1; N_E_W[k]:=a[i]; end; Until (a[i]>0) or (i=20); i:=0; Repeat i:=i+1; if b[i]<=0 then begin k:=k+1; N_E_W[k]:=b[i]; end; Until (b[i]>0) or (i=20); i:=0; Repeat i:=i+1; if c[i]<=0 then begin k:=k+1; N_E_W[k]:=c[i]; end; Until (c[i]>0) or (i=20); WriteLn('Array a:'); for i:=1 to 20 do Write(a[i]:8:2); WriteLn; WriteLn('Array b:'); for i:=1 to 20 do Write(b[i]:8:2); WriteLn; WriteLn('Array c:'); for i:=1 to 20 do Write(c[i]:8:2); WriteLn; WriteLn('Array NEW:'); for i:=1 to k do Write(N_E_W[i]:8:2); WriteLn; readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
09.02.2011, 09:52 | #7 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Успехов! |
|
09.02.2011, 17:01 | #8 (permalink) |
Member
Регистрация: 07.02.2011
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо вам огромное) Разобраться не мог, я больше по С++
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|