Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.10.2012, 23:13   #1
Frank63
 
Регистрация: 07.10.2012
Сообщений: 9
По умолчанию проверьте код и найдите ошибки

Задача: Подсчитать количество натуральных чисел, принадлежащих интервалу [a,b), в которых младшая цифра равна заданной, старшая цифра четная
Код:
program qq;
procedure vvod(var a,b,n:integer);
begin
  writeln('Введите a');
  readln(a);
  writeln('Введите b');
  readln(b);
  writeln('Введите n');
  readln(n);
end;
procedure algoritm(a,b,n:integer; var k:integer);
var i,x,y,z:integer;
begin
  k:=0;
  for i:=a to b-1 do begin
    x:=i;
    z:=x mod 10;
    while (x>0) and (x div 10>0) do begin
      y:=x mod 10;
      x:=x div 10;
    end;
    if (y mod 2=0) and (z=n) then begin
      k:=k+1;
      writeln('Число: ',i:3);
    end;
  end;
end;
procedure vyvod(k:integer);
begin
  writeln('Количество чисел: ',k);
end;
var 
a,b,n,k: integer;
begin
  vvod(a,b,n);
  algoritm(a,b,n,k);
  vyvod(k);
end.
Frank63 вне форума
Старый 25.10.2012, 23:25   #2
Frank63
 
Регистрация: 07.10.2012
Сообщений: 9
По умолчанию

Второй вариант программы (тоже не работает)
Найдите, пожалуйста, ошибки
Код:
procedure Vvod(var a,b,n:integer);
begin
  repeat
    writeln('Введите число a >');
    readln(a);
    writeln('Введите число b >');
    readln(b);
    writeln('Введите число n >');
    readln(n);
    if ((a<0) or (a>b)) then
      writeln('Числа a и b должны быть натуральными, причем a<b')
  until (a>0) and (b>a);
end;
function Resh(x:integer; var y,z:integer):boolean;
var n:byte;
begin
  z:=x mod 10;
  while (x>0) and (x div 10>0) do begin
    y:=x mod 10;
    x:=x div 10;
  end;
  Resh:=z=n;
end;
function Alg(a,b,y,z:integer; var k:integer):integer;
var i:integer;
begin
  k:=0;
  for i:=a to b-1 do
    if (y mod 2=0) and Resh(i,y,z) then k:=k+1;
      Alg:=k;
      writeln('Число: ',i:3);
end;
var a,b,n,y,z,k:integer;
begin
  Vvod(a,b,n);
  write('Количество: ',Alg(a,b,y,z,k));
end.
Frank63 вне форума
Старый 25.10.2012, 23:28   #3
Frank63
 
Регистрация: 07.10.2012
Сообщений: 9
По умолчанию

Найдите, пожалуйста, ошибки хотя бы в одном варианте из двух
Frank63 вне форума
Старый 25.10.2012, 23:32   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
program qq;

procedure vvod(var a, b, n: integer);
begin
  writeln('Введите a');
  readln(a);
  writeln('Введите b');
  readln(b);
  writeln('Введите n');
  readln(n);
end;

procedure algoritm(a, b, n: integer; var k: integer);
var
  i, x, y, z: integer;
begin
  k := 0;
  for i := a to b - 1 do 
  begin
    x := i;
    z := x mod 10;
    while (x >= 10) do 
      x := x div 10;
    if (x mod 2 = 0) and (z = n) then begin
      k := k + 1;
      writeln('Число: ', i:3);
    end;
  end;
end;

procedure vyvod(k: integer);
begin
  writeln('Количество чисел: ', k);
end;

var
  a, b, n, k: integer;

begin
  vvod(a, b, n);
  algoritm(a, b, n, k);
  vyvod(k);
end.
А так?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме
Старый 25.10.2012, 23:36   #5
Frank63
 
Регистрация: 07.10.2012
Сообщений: 9
По умолчанию

работает, большое спасибо=)
Frank63 вне форума
Старый 26.10.2012, 21:48   #6
werden
Новичок
Джуниор
 
Регистрация: 26.10.2012
Сообщений: 1
По умолчанию паскаль

Добрый вечер. я в паскале новичок!. сейчас решаю задачки(1-е домашнее задание), прошу подсказать, как проверить правильность решения задач в паскале.
werden вне форума
Старый 26.10.2012, 21:55   #7
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Тему отдельную надо создавать, и там уже описывать суть проблемы.
Люблю на ты.Я человек простой
Leshii вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найдите ошибки в составлении массива Yuuuu Помощь студентам 9 05.02.2012 22:56
Найдите ошибки zircul Паскаль, Turbo Pascal, PascalABC.NET 9 06.10.2010 17:23
найдите ошибки в запросе morindos Помощь студентам 2 23.06.2010 22:38
Проверьте пож код, есть ли там ошибки dimonpwnz Помощь студентам 0 13.04.2010 20:38