22.05.2014, 13:29 | #1 (permalink) |
Новичок
Регистрация: 22.05.2014
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите, пожалуйста, с задачами на Паскале
№1 uses crt; var s: string; k,l,i: integer; c:char; begin write ('vvedi strocu iz bukv:'); readln (s); k:=0; l:=0; for i:=1 to length (s) do begin if s[i]='A' then k:=k+1; if s[i]='B' then l:=l+1; end; writeln ('A=',k); writeln ('B=',l); if k>l then begin for i:=length (s) downto 1 do if s[i]='B' then begin delete (s,i,1); write (i:4); c:=readkey; if c=#27 then halt(1); end; end; write(s); end. Суть задачи: вводим строку из символов А и В, считаем их, сравниваем и если В больше, то удаляем В все. №2 program mas6; var a:array[1..50,1..60] of integer; n,m,i,j,k,summa: integer; begin randomize; write('n='); readln(n); write('m='); readln(m); for i:=1 to n do for j:=1 to m do a[i,j]:=random(15)-3; for i:=1 to n do begin writeln; for j:=1 to m do begin write(a[i,j]:8; end; end; writeln; writeln; summa:=0; for i:=1 to n do begin k:=1; for j:=2 to m do if a[i,j]>a[i,k] then a[i,k]:=a[i,j]; summa:=summa+a[i,k]; end; writekn(summa:, summa); readln; end. Суть задачи находим сумму максимальных элементов каждой строки. №3 Сегодня получила новую задачку по одномерному массиву и не соображу как соединить две мысли в одну, да еще с помощью процедур. А задача следующая: найти наибольший простой элемент массива. Суть ясна. Ищем простые числа и по ходу сравниваем их. У меня мозг отказывается решать ее. помогите пожалуйста. |
22.05.2014, 13:29 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Дам вам темы которые по своему содержанию напоминают ваш топик Помогите пожалуйста с задачами на паскале Помогите пожалуйста с массивами на паскале Пожалуйста, помогите с задачами в Паскале Помогите, пожалуйста, с программой на Паскале Помогите с задачами, пожалуйста. Нужно написать на языке С |
22.05.2014, 14:43 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Но прежде всего отмечу, что искусственным впихиванием процедур туда, где они, извините, ни нафиг не нужны, я заниматься не буду. А не нужны они ни в одной из приведенных задач, кроме последней.
Цитата:
Ход мысли правильный, но вот реализация... Вот это что за такое за ахинея: Имелось в виду, вероятно writeln('summa: ', summa); Еще (но это, впрочем, мелочь): идентификатор k не нужен вовсе, ставьте вместо него 1 в индексах массива, да и всё. Зачем лишние усложнения? Есть еще одна тонкость. Во избежание возможных глюков транслятора, лучше писать не a[i,j]:=random(15)-3; а a[i,j]:=-3+random(15); Казалось бы, одно и то же, ан не всегда. Пожалуйста: Код:
Const N=160; Var A:Array[1..N] of Byte; i,Max:Byte; Function Test(J:Byte):Boolean; Var m:Byte; b:Boolean; begin if (J=2) or (J=3) then b:=true else if J=1 then b:=false else begin m:=(J div 2)+1; b:=true; repeat Dec(m); If (J mod m)=0 then b:=false; until (b=false) or (m=2); end; Test:=b; end; Begin Randomize; Max:=0; for i:=1 to N do A[i]:=Random(99)+1; for i:=1 to N do begin write(A[i]:4); if (Test(A[i])) and (A[i]>Max) then Max:=A[i]; end; writeln; writeln; if Max=0 then writeln('No primes in the array!') else writeln('Maximal prime is ',Max); Readln End. |
|
22.05.2014, 15:48 | #3 (permalink) |
Новичок
Регистрация: 22.05.2014
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S, большое спасибо за уделенное внимание!
Здравствуйте, ваши замечания по поводу опечаток действительно уместны: writeln('summa: ', summa); это отвлеклась и не проверила перед отправкой, а про строку из А и В поторопилась. После сравнения, если А больше, то удаляем все В. Мысли бегут быстрее, чем я печатаю. А вот на счет процедур - нужны или нет- преподаватель требует чтобы все было запроцедуренно, и когда я ему сдаю задачки, то он как коршун над цыпленком с этими процедурами ввода-вывода и т.д. а я как всегда чего-нибудь не туда пишу или вообще не дописываю. |
22.05.2014, 16:16 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Type Matr=array[1..50,1..60] of integer; Var a:matr; n,m,i,j,k,summa: integer; procedure Inp(p,q:integer; var c:Matr); begin for i:=1 to p do for j:=1 to q do c[i,j]:=-3+random(15); end; procedure Out(p,q:integer; c:Matr); begin for i:=1 to p do begin for j:=1 to q do write(c[i,j]:8); writeln; end; end; Function Find_Sum(p,q:integer; c:Matr):Integer; var FS,Max:Integer; begin FS:=0; for i:=1 to p do begin Max:=c[i,1]; for j:=2 to q do if c[i,j]>Max then Max:=c[i,j]; FS:=FS+Max; end; Find_Sum:=FS; end; Begin randomize; write('n= '); readln(n); write('m= '); readln(m); Inp(n,m,a); Out(n,m,a); writeln; writeln; summa:=Find_Sum(n,m,a); writeln('summa: ', summa); readln; End. |
|
22.05.2014, 16:56 | #5 (permalink) |
Новичок
Регистрация: 22.05.2014
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задачка (про максимальный простой элемент) замечательная, огромное спасибо, Vladimir_S! Я бы дня три точно промучилась бы, а то и больше. А на счет написания подпрограмм согласна полностью.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
22.05.2014, 16:59 | #6 (permalink) |
Новичок
Регистрация: 22.05.2014
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Попробую скормить, правда он привереда. Спасибо
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|