Страница 2 из 4

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 09:36
BHy4ok
Здесь уже ошибка Bhy4ok'a.

Лишний end и недостающий цикл -); Делай так:

Код: Выделить всё

for i:= 1 to length(s) do if s[i] in c then inc(n);
P.S. и не забудь поменять кодировку (C:=['а'..'я','А'..'Я'];) на DOS.
'end' - не лишний!
торопился т.к. времени мало было и пропустил цикл :)

зы. уже поправил.

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 13:06
Колядин Максим
BHy4ok писал(а):'end' - не лишний!
Хе-хе... То есть ты хочешь сказать, что там недостающий begin? -));

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 13:14
Колядин Максим
и вообще, зачем нужно было исправлять код, если я уже его исправил? так сказать, штрихом на экзамене не пользуются.
Ps - но с End'ом ты конечно загнул, и главное, в полном своем сознании-);

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 13:40
BHy4ok
Не загнул, но в сознании. Потому-что первоначально делал не просто 'do', а 'do begin', поэтому использование сдесь 'end' уместно.

Конечно можно было обойтись более упрощенным вариантом, но сделал так.

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 14:17
Колядин Максим
На будущее: begin и end используется как обрамбление субпрограммы. А субпрограмма, соответственно, должна состоять из 2 или более операций. Использование begin и end для однооперационных участков кода лишь уменьшит быстродействие программы, увеличит длинну самого кода и осложнит твой алгоритм. (грубо говоря).
В общем, не будем уделять внимание мелким ошибкам.

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 14:24
Начинающая
Колядин Максим писал(а):Задача №5:

Код: Выделить всё

var i,a,b: integer;

[B][I][U]function figures_amount[/U][/I][/B](x: integer):integer;
var s: string;
begin
str(x,s);
figures_amount:=length(s);
end;

begin
readln(a);
readln(b);
if (a<0) or (b<0) then exit;
if [U][I][B]figures_amount(a)>figures_amount(b) [/B][/I][/U]then writeln('Кол-во цифр числа A больше чем B');
{проделай это же с "меньше" и "равно"}
readln;
end.
а что это за function figures_amount ? это по школьной программе? мы такого тне проходили...а то будет мне потом)))) скажет,мол, откуда ты это взяла.это ж 5-ый курс института!))))

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 14:29
Начинающая
ну вы мужчины блин загнули!!!! что мне терь делать? менять че-то или нет? :confused: :) ;) кто прав то?

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 07 май 2007, 15:15
Колядин Максим
Начинающая писал(а):А что это за function figures_amount ?
По условию задачи было сказано "создать функцию для нахождения количества цифр" - вот я и создал. Скажи ей - "это я функцию для нахождения количества цифр здесь объвила." - вот и всё.
Начинающая писал(а): что мне терь делать? менять че-то или нет? кто прав то?
В какой задаче ты собираешься что-то менять? BHy4ok сделал небольшую ошибочку, я её подправил - теперь все правы.
Вот код:

Код: Выделить всё

type 
Chars = set of char];
writeln('Введите строку: ');
readln(s);
for i:= 1 to length(s) do if s[i] in c then inc(k);
writeln('Русских букв в строке: ',k);
readln;
end. 

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 08 май 2007, 10:46
Хыиуду
Гы... повеселили меня :)
Ну, во-первых, функция figures_amount вполне сокращается до одной строки:
function figures_amount(x:integer):integer;
begin
figures_amount:=length(str(x));
end;
Во-вторых, в задачке с русскими буквами, думаю, имеется в виду, найти, сколько раз встречается буква А, сколько раз - Б, и т.д.

Код: Выделить всё

var letters:array['А'..'Я'] of integer;
i:byte; s:string;
begin
  for i:=1 to length(s) do
  if s[i] in ['А'..'Я'] then inc(letters[s[i]]);
end.
Естественно, вначале надо обнулить весь массив letters и задать строку s
Со степенью такое решение (для целых чисел) тоже не пройдет, если основание степени будет отрицательным, прога радостно рухнет. Вот нормальный вариант

Код: Выделить всё

function step(x,n:integer):real;
var i:integer;s:real;
begin
  s:=1;
  for i:=1 to abs(n) do s:=s*x;
  if n<0 then s:=1/s;
  step:=s;
end;

Re: помогите пож-та решить несколько задач, оч. хочется хорошую оценку в аттестате

Добавлено: 08 май 2007, 13:59
Колядин Максим
Гы... повеселили меня
Гы... тебя всякая фигня постоянно смешит. Сократил код - молодец, а своим преждесловием ты лишь поднял свою самооценку.
P.S. культурный человек сам себя никогда не хвалит -):