Помощь - Поиск - Пользователи - Календарь
Полная версия: Операции с числами по условиям и работа со строкой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
MaxiRush
ТоварисЧи, огромная просьба о помощи. Нужно написать программу, которая решает две задачи: 1-даны пары целых чисел. Если числа не равны, то следует каждое из них заменить одним и тем же числом, равным большему из исходных, а если равны, то заменить числа на единицы. 2- дана строка. Подсчитать, сколько в ней букв r,k,t.
Буду очень сильно благодарен за помощь.

М
Название изменено.
Правила, п.4


TarasBer
Было бы что сложное, мы бы головы поломали. А так с нуля писать простую программу - неинтересно. Покажи хоть свой вариант кода, посмотрим, что не так.
MaxiRush
1-я задача, ток я не зная как быть с парами чесел, сделал для 2-х
program lol;
var m,n: integer;
x:=10000000;
y:=1;
Begin
Write ('m,n=');
Read(m,n);
if m<>n then begin m:=x; n:=x; end
else begin m:=y; n:=y;end;
Write('m=',m,' ','n=',n);
end.

2-я
program string_11;
var s:string;
a,b,c,i:integer;
begin write('введите строку');
readln(s);
a:=0;b:=0;c:=0;
for i:=1 to length(s) do
begin if s[i]='r' then a:=a+1;
if s[i]='k' then b:=b+1;
if s[i]='t' then c:=c+1
end;
writeln('количество букв r=',a);
writeln('количество букв k=',b);
writeln('количество букв t=',c);
readln;
end.

Ну а посложнее- в условии сказано, что в основной программе должен быть оператор выбора задач, оформленных в виде подпрограмм.
Очень прошу помочь, с паскалем у меня чего-то туговато...
TarasBer
> if m<>n then begin m:=x; n:=x; end

Надо по условию заменить на большее из исходных. Почему ты меняешь на 10000000?
Надо так:


if m <> n then begin
if m>n then
n:=m
else
m := n;
end;



По второй всё вроде верно, только названия переменных дурацкие. Вместо a,b,c лучше напиши count_r, count_k, count_t.

Добавлено через 4 мин.
Чтобы оформить задачу в подпрограмму, надо выделить кусок от var до end и написать перед ним procedure TwoNumbers; потом скопировать к нему такой же кусок из второй программы, в конец дописать begin end с выбором задачи. Типа такого:


program hz;

procedure TwoNumbers;
var
...
begin
...
end;

procedure Find_rkt;
var
...
begin
...
end;

var
task: integer;
begin
repeat
Write('enter task number: ');
ReadLn(task);
case task of
1: TwoNumbers();
2: Find_rkt();
end;
until task = 0;
end.

MaxiRush
Тем, у кого будет подобное задание... Вот что получилось:
program hz;
uses crt;
procedure TwoNumbers;
var m,n: integer;
y:=1;
Begin
Write ('Введите числа m,n=');
Read(m,n);
if m=n then begin m:=y; n:=y; end
else begin
if m>n then
n:=m
else
m := n;
end;
Write('m=',m,' ','n=',n);
end;

procedure Find_rkt;
var s:string;
a,b,c,i:integer;
begin write('введите строку');
readln(s);
a:=0;b:=0;c:=0;
for i:=1 to length(s) do
begin if s[i]='r' then a:=a+1;
if s[i]='k' then b:=b+1;
if s[i]='t' then c:=c+1
end;
writeln('количество букв r=',a);
writeln('количество букв k=',b);
writeln('количество букв t=',c);
readln;
end;

var
task: integer;
begin
repeat
writeln(' выберите программу : 1.первая, 2.вторая');
ReadLn(task);
case task of
1: TwoNumbers();
2: Find_rkt();
end;
until task = 0;
end.

Очень благодарен за помощь, если надо кидану денюшку на счет или номер, пиши если что в личку)
TarasBer
Не, раз ты сам почти всё сделал, то ничего не надо.
А то тут некоторые приходят "ничего не знаю, сделайте полностью за меня".
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.