Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 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
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Дам вам темы которые по своему содержанию напоминают ваш топик

Помогите пожалуйста с задачами на паскале
Помогите пожалуйста с массивами на паскале
Пожалуйста, помогите с задачами в Паскале
Помогите, пожалуйста, с программой на Паскале
Помогите с задачами, пожалуйста. Нужно написать на языке С

Старый 22.05.2014, 14:43   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Алёнка Посмотреть сообщение
Помогите пожалуйста.
Но прежде всего отмечу, что искусственным впихиванием процедур туда, где они, извините, ни нафиг не нужны, я заниматься не буду. А не нужны они ни в одной из приведенных задач, кроме последней.
Цитата:
Сообщение от Алёнка Посмотреть сообщение
Суть задачи: вводим строку из символов А и В, считаем их, сравниваем и если В больше, то удаляем В все.
Но у Вас в программе поставлено условие "если количество "А" больше, то удаляем все "В"".
Цитата:
Сообщение от Алёнка Посмотреть сообщение
Суть задачи находим сумму максимальных элементов каждой строки.
Ход мысли правильный, но вот реализация... Вот это что за такое за ахинея:
Цитата:
Сообщение от Алёнка Посмотреть сообщение
writekn(summa:, summa);
Имелось в виду, вероятно
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 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)
Vladimir_S
Специалист
 
Регистрация: 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.
Попробуйте ему скормить такой вариант - авось проглотит.
Vladimir_S вне форума   Ответить с цитированием
Старый 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
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:03.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.