Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Программа в Pascal

Ответить
Настройки темы
Разное - [решено] Программа в Pascal

Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Изменения
Автор: asus a9rp
Дата: 24-08-2009
Описание: Добавил новую версию программы
Я создавал программу как опрос. Вот она:
Код: Выделить весь код
Uses Crt;
Var x, y: Integer;
 begin
  ClrScr;
  y:=0;
  Write ('Какой у Вас Windows? [XP - 1, Vista - 2] -> '); Readln (x);
  If  x=1 Then
   begin
    inc(y)
   end
  Else  If x=2 Then
   begin
    inc(y)
   end
  Else  Writeln ('Значение не верно! Учитывается как 0!');
  Writeln('Код: ',y);
  Readln;
 end.
Ну так вот. Есть "inc(y)" и добавляет к результату (коду) 1. Мне нужно, чтобы в определённых местах добавлялось 3, 10, 20, 400, 1000 и т.д. Помогите. Заранее спасибо.
Опыт у меня примерно двухнедельный

Сейчас программа выглядет так (ориентируйтесь на эту версию):
читать дальше »
Код: Выделить весь код
Uses Crt;
Var x, y: Integer;
  begin
   TextBackGround(1); ClrScr;
   y:=0;
   Writeln ('Какой у Вас Windows?');
   Writeln ('');
   Writeln ('XP    -  1');
   Writeln ('Vista -  2');
   Writeln ('2000  -  3');
   Writeln ('Seven -  4');
   Writeln (''); Readln (x);
  case x of
   1:inc(y, 10);
   2:inc(y, 20);
   3:inc(y, 30);
   4:inc(y, 40);
   Else
      Writeln ('Значение не верно! Учитывается как 0!'); Readln;
   End;
   ClrScr;
   Writeln ('Какой у Вас Office?');
   Writeln ('');
   Writeln ('2003 -  1');
   Writeln ('2007 -  2');
   Writeln ('2010 -  3');
   Writeln (''); Readln (x);
  case x of
   1:inc(y);
   2:inc(y, 2);
   3:inc(y, 3);
   Else
      Writeln ('Значение не верно! Учитывается как 0!'); Readln;
   End;
   ClrScr;
   Writeln('');
   Writeln('Код: ',y);
   Readln;
 end.

Отправлено: 22:27, 20-08-2009

 

Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


У меня ещё один вопрос появился. Поидее последний. У моей программы теперь последующий вопрос должен зависить от предыдущего. Я пробовал так:
читать дальше »
Код: Выделить весь код
Uses Crt;
Var a, b, y, z: Integer;
  begin
   TextBackGround(1); ClrScr;
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln (''); Readln (y);
  case y of
   1:inc(a, 10);
   2:inc(a, 20);
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
   If a=20 Then
   begin
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln (''); Readln (y);
  case y of
   1:inc(b, 1);
   2:inc(b, 2);
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.

Он жалуется на "If a=10 Then". Как это прописать иначе, что-бы всё было нормально?

Отправлено: 20:56, 14-09-2009 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


asus a9rp, на память не помню, но проверь конструкцию
case <переменная> of
Операторные скобки какие? end case; помоему нужен. Help тебя спасет.
Код: Выделить весь код
var Item:Integer;
begin
readln(Item);
case Item of 
    1: Writeln('1');
    2: Writeln('2');
    else: witeln('not 1 or 2');
end case;
end.
Т.е. ты должен четко отделить оператор множественного выбора case от оператора условия if
Цитата asus a9rp:
Он жалуется на "If a=10 Then" »
Как именно жалуется?

По алгоритму, ИМХО сложновато для анализа "на вскидку", одно-буквенные переменные мешают анализу. Отсутствие комментариев тоже не способствует.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 22:01, 14-09-2009 | #32


Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


http://www.pascaler.ru/pascal/constructions/uslovie/4/
Блок case должен заканчиваться end;
Код: Выделить весь код
case y of
   1:inc(a, 10);
   2:inc(a, 20); end;
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:02, 14-09-2009 | #33


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Alan85, Получилось, но теперь ещё одно.

Последний раз редактировалось asus a9rp, 04-10-2009 в 00:16.


Отправлено: 22:52, 14-09-2009 | #34


Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


Цитата asus a9rp:
If a=20 Then
begin
ClrScr;
Writeln ('?');
Writeln ('');
Writeln ('1');
Writeln ('2');
Writeln ('');
Readln (y); »
тут end; в конце забыл
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:58, 15-09-2009 | #35


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Спасибо, тепреть всё в порядке.... за исключением одного. В первом вопросе ответ 1, во втором - 1, но в конце (где должно быль 10+1=11) выводится 12. А если ответы 2 и 2, то в конце - 24, а не 22.

П.С. Программа теперь выдлядет так:
читать дальше »
Код: Выделить весь код
Uses Crt;
Var a, b, y, z: Integer;
  begin
   TextBackGround(1); ClrScr;
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('10');
   Writeln ('20');
   Writeln ('');
   Readln (y);
  case y of
   1:inc(a, 10);
   2:inc(a, 20);
  end;
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
    end;
   If a=20 Then
   begin
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln ('');
   Readln (y);
   end;
  case y of
   1:inc(b, 1);
   2:inc(b, 2);
  end;
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.

Последний раз редактировалось asus a9rp, 16-09-2009 в 00:37.


Отправлено: 09:36, 15-09-2009 | #36


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


asus a9rp, расписываю твой код по структурам, убирая лишнее. У тебя просто идет нарушение операторных скобок
Код: Выделить весь код
Uses Crt;
Var a, b, y, z: Integer;
  begin
//инициализация переменных
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
//ввод  Y
   Readln (y);
  case y of --------начало case
   1:inc(a, 10);
   2:inc(a, 20);
  end; ------------- конец case
-------------------------------------------------------------------------------------------------------  
 If a=10 Then 
    begin -------------------------------------------------
     Writeln (''); Readln (y);
    end; --------------------------------------------------
---------if Кончился здесь! --------
------------не зависимый от if a=10 блок, т.е. тело программы --------------
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
    end;
----------------------------------
-----второй if 
   If a=20 Then    begin
   ClrScr;
   Readln (y);
   end;
-------------------------------
----y от второго if тут не учитывается ---------------
  case y of
   1:inc(b, 1);
   2:inc(b, 2);           
  end;
---------------------------
-------дальше прочие действия---------
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.
выделенные куски повторяются. С тем же успехом их можно было написать вместе. if a = ___ на них не влияет.

p.s. потом добавлю наглядную схему

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 15:00, 15-09-2009 | #37


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


Всё равно получилоссь то же. А Вы не могли бы просто взять мою программу и отредактировать без коментариев (что-бы скопировав и вставив он запустилась). И если есть возможность, то проверьте её, поделуйса, что-бы съэкономить время. Буду очень признателен.

Отправлено: 00:36, 16-09-2009 | #38


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Cтуденчество, совсем думать обленилось!
Исправленная версия

Код: Выделить весь код
Uses Crt;
Var a, b, y, z: Integer;
  begin
// инициализация переменных
     TextBackGround(1); 
     a:=0; b:=0; y:=0; z:=0;
     ClrScr;
//запрашиваем первый ввод
     Writeln ('?'); Writeln (''); Writeln ('10'); Writeln ('20'); Writeln ('');
     Readln (y); 
//смотрим что с ним делать
    case y of  
           1:inc(a, 10); 
           2:inc(a, 20);
    end; //case

   If a=10 Then //зачем нужен был впереди case не ясно, но пусть будет 
           begin
               ClrScr;
               Writeln ('?');      Writeln ('');     Writeln ('1');     Writeln ('2');     Writeln (''); 
               Readln (y);
               case y of // --------
                    1:inc(b, 1);//  |
                    2:inc(b, 2);//  |
               end; // case --------
           end; // if . Таким образом "case y of" выполняется внутри блока условия "if"

   If a=20 Then 
           begin
                ClrScr;
                Writeln ('?');    Writeln ('');   Writeln ('1');   Writeln ('2');   Writeln ('');
                Readln (y);
                case y of // --------
                     1:inc(b, 1);//  |
                     2:inc(b, 2);//  |
                end; // case --------
           end; // тоже самое

// завершающие действия
   z:=a+b;
   ClrScr;
   Writeln(a,' + ',b,' = ',z);
   Readln;
 end.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:04, 16-09-2009 | #39


Ветеран


Сообщения: 710
Благодарности: 12

Профиль | Отправить PM | Цитировать


lxa85, Огромнейшее спасибо! Всё работает.
Цитата lxa85:
Cтуденчество, совсем думать обленилось! »
Извините, но Вы меня просто не правильно поняли. У меня просто ничего не получалось как-бы я не пробовал и не понимал, в чём проблема. Вот и пришлось попросить у Вас. То, что было написано перед Вами давало тот же результат. Оказалось, что у меня было промерно так:
Код: Выделить весь код
If a=10 Then
 begin
 end;
Case y of
end;
А надо было так:
Код: Выделить весь код
If a=10 Then
 begin
Case y of
end;
end;
Теперь я всё понял.
Последний вопрос, но уже не по программе, а по самому Паскалю.
При копитовании из Паскаля в ОСь или наоборот, русские буквы заменяются вопросиками. Возможно ли это изправить?

П.С. Я не студент, а шольник (8-й класс).

Отправлено: 20:44, 17-09-2009 | #40



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Программа в Pascal

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) Loading Программирование и базы данных 41 20-05-2015 15:28
Разное - [решено] Графический режим Turbo Pascal и Windows 7 Hector Microsoft Windows 7 9 07-06-2010 13:53
Delphi - [решено] Помогите с задачей /Pascal/ Habetdin Программирование и базы данных 23 11-11-2009 22:46
Разное - Pascal ManHack Программирование и базы данных 2 01-09-2009 22:50
[решено] программирование на pascal PAUK Программирование и базы данных 2 09-11-2006 10:43




 
Переход