27.01.2009, 21:08 | #41 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Program C2; Var a:array [1..10,1..10]of integer; i,j,m,S:integer; BEGIN For i:=1 to 10 do begin For j:=1 to 10 do a[i,j]:=random(1000); end; For i:=1 to 10 do begin For j:=1 to 10 do write(a[i,j],' '); writeln; end; S:=0; For i:=1 to 10 do begin m:=a[i,1]; For i:=1 to 10 do If a[i,j]>m then m:=a[i,j]; S:=S+m; end; writeln('S=',S); END. Программа нормально работает, но преподаватель сказал, что это и это действия можно объединить в одно. Как это сделать? |
27.01.2009, 21:21 | #42 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Полагаю, что так:
For i:=1 to 10 do begin For j:=1 to 10 do begin a[i,j]:=random(1000); write(a[i,j],' '); end; writeln; end; |
29.01.2009, 20:03 | #44 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Возникла проблема со следующей задачей: дан двумерный массив 5 на 6, заполненный целыми числами. Сформировать одномерный массив, каждый элемент которого равен произведению четных положительных элементов соответствующего столбца.
Решение: Program K4_W1_1; Var a:array[1..100,1..100] of integer; b:array[1..100] of integer; i,j,p,n,m:integer; BEGIN writeln; randomize; write('n=');readln(n); write('m=');readln(m); For i:=1 to n do begin For j:=1 to m do begin a[i,j]:=random(45)-22; write(a[i,j]:4); end; writeln; end; For j:=1 to m do begin p:=1; For i:=1 to n do If (a[i,j]>0)and(a[i,j] mod 2=0) then p:=p*a[i,j]; If p<>1 then begin writeln('столбец ',j,' p=',p); b[j]:=p; end else begin writeln('в столбце ',j,' нет четных положительных чисел'); b[j]:=0; end; For i:=1 to n do write(b[j],' '); readln; end; END. Получается все, кроме заполнения одномерного массива((((( n=5 m=6 -11 5 -15 13 11 -14 8 -4 -17 -17 -4 -14 -5 -13 5 9 7 -8 11 -3 6 -22 -10 10 -14 -7 -15 8 20 -10 столбец 1 p=8 8 8 8 8 8 в столбце 2 нет четных положительных чисел 0 0 0 0 0 столбец 3 p=6 6 6 6 6 6 столбец 4 p=8 8 8 8 8 8 столбец 5 p=20 20 20 20 20 20 столбец 6 p=10 10 10 10 10 10 Подскажите, как это сделать. |
29.01.2009, 21:29 | #45 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да просто исправить ошибку в пятой строке снизу. Должно быть
For j:=1 to m do а у Вас For i:=1 to n do Да, еще одно - end в предпоследней строке не на месте: его надо поставить ПЕРЕД последним циклом. Т.е. конец программы должен быть таким: b[j]:=0; end; end; For j:=1 to m do write(b[j],' '); readln; END. Последний раз редактировалось Vladimir_S; 29.01.2009 в 22:35 Причина: Уточнение |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
30.01.2009, 07:19 | #46 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Спасибо большое за помощь! Опечатки в книге просто достали!
Программу изменила, и теперь она нормально работает! Последний раз редактировалось ummasha; 30.01.2009 в 08:01 |
09.02.2009, 07:21 | #47 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Я попробовала написать программу на Паскале, похожую на "ЭКГ" ( http://www.tehnari.ru/showthread.php?t=18977 ), которая выводит в блокнот данные (имя, фамилия, год рождения и т.д.), но запуталась в незнакомых типах данных. Скажите, как сделать такую программу.
|
09.02.2009, 10:14 | #48 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
|
|
09.02.2009, 15:17 | #49 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Я бы очень хотела разобраться с типами данных "строка" и "символьный". Во-первых, их не объясняли в школе, во-вторых, данные таких типов есть в ЕГЭ, а в-третьих, я стала решать эти задачи из ЕГЭ, но ничего не получается((( Пробовала набирать программу как в книжке, а Паскаль выдает ошибку.
|
09.02.2009, 15:53 | #50 (permalink) |
Member
Регистрация: 24.12.2008
Сообщений: 419
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1311
|
Вот одна из задач, которые я пыталась решить:
http://www.tehnari.ru/picture.php?al...&pictureid=391 Вот решение, приведенное в книге и набранное мной в Паскале: Program C4; Var a:array[1..300] of record Name:string; Sum:integer; end; C:char; i,j,S,m,n:integer; BEGIN readln(n); For i:=1 to n do begin a[i].name:=''; repeat read(C); a[i].name:=a[i].name+c until c=''; repeat read(C); a[i].name:=a[i].name+c until c=''; S:=0; For j:=1 to 3 do begin read(m);a[i].Sum:=m; If a[i].Sum>=30 then S:=S+1; end; If S=3 then writeln(a[i].name); readln;end; END. У меня возникло несколько вопросов: 1)Зачем здесь нужен end и почему перед ним не стоит begin; 2)Что за странное "приглашение"; 3)Что требуется поставить здесь - кавычки или апострофы (в книге их вообще было 3 штуки, но программа указывала на ошибку). Последний раз редактировалось ummasha; 09.02.2009 в 15:59 |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|