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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2014, 17:15   #1
GreenLaym
Новичок
Джуниор
 
Регистрация: 18.05.2014
Сообщений: 4
По умолчанию Школьная задачка вроде как)

4. Составить программу для решения приведенного ниже задания двумя способами, используя: а) команду выбора case; б) команду if. Придумать и задать входные данные так, чтобы выбор состоял из 4-7 альтернатив.
Ввести число от 5 до 9. Вывести его значение словом.

Последний раз редактировалось GreenLaym; 19.05.2014 в 17:21.
GreenLaym вне форума Ответить с цитированием
Старый 19.05.2014, 19:06   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Ввести n
Выбор n из
5: число:='пять';
// и по предложенному шаблону все остальные варианты
Иначе
Вывод 'нет такого варианта'
Конец выбора
Вот вкратце. Переводим на англ. яз, получаем паскаль
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 22.10.2014, 07:59   #3
Donald Ervin Knuth
Пользователь
 
Аватар для Donald Ervin Knuth
 
Регистрация: 15.10.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от GreenLaym Посмотреть сообщение
4. Составить программу для решения приведенного ниже задания двумя способами, используя: а) команду выбора case; б) команду if. Придумать и задать входные данные так, чтобы выбор состоял из 4-7 альтернатив.
Ввести число от 5 до 9. Вывести его значение словом.
Код:
program utro33;
var
st:string;
chislo:integer;
begin
writeln('Задайте число от 0 до 10 словами, напиример (один) ');
readln(st);
case st of
'ноль':chislo:=0;
'один':chislo:=1;
'два':chislo:=2;
'три':chislo:=3;
'четыре':chislo:=4;
'пять':chislo:=5;
'шесть':chislo:=6;
'семь':chislo:=7;
'восемь':chislo:=8;
'девять':chislo:=9;
'десять':chislo:=10;
else
writeln('Возможно Вы ошиблись при вводе');
end;
writeln('Вы ввели число= ',chislo,'  Метод case');
{--- end of case---}
if st='ноль' then chislo:=0
  else
    if st='один'then chislo:=1
      else
         if st='два'then chislo:=2
          else
            if st='три'then chislo:=3
              else
                if st='четыре'then chislo:=4
                  else
                    if st='пять'then chislo:=5
                      else
                      if st='шесть'then chislo:=6  
          else
             if st='семь'then chislo:=7  
          else
             if st='восемь'then chislo:=8
             else
             if st='девять'then chislo:=9
             else
             if st='десять'then chislo:=10
             else
             writeln('Возможно Вы ошиблись при вводе');
writeln('Вы ввели число= ',chislo,'  Метод if');
end.
Как бы все наоборот :-)
g25092011
Donald Ervin Knuth вне форума Ответить с цитированием
Старый 22.10.2014, 09:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Это неверный код.
Цитата:
Код:
st:string;
chislo:integer;
begin
  writeln('Задайте число от 0 до 10 словами, напиример (один) ');
  readln(st);
  case st of
     'ноль':chislo:=0;
case в Pascal (Delphi) работает только с перечисляемым типом данных.
Строки (string) таким не являются. Данный код не скомпилируется.

Да и автору темы нужно наоборот - ввести число и вывести слово.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2014, 12:37   #5
Donald Ervin Knuth
Пользователь
 
Аватар для Donald Ervin Knuth
 
Регистрация: 15.10.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Это неверный код.

case в Pascal (Delphi) работает только с перечисляемым типом данных.
Строки (string) таким не являются. Данный код не скомпилируется.

Да и автору темы нужно наоборот - ввести число и вывести слово.
Код:
program utro33_1;
var
ch:string;
st:integer;
begin
writeln('Задайте число от 0 до 10');
readln(st);
case st of
0:ch:='ноль';
1:ch:='один';
2:ch:='два';
3:ch:='три';
4:ch:='четыре';
5:ch:='пять';
6:ch:='шесть';
7:ch:='семь';
8:ch:='восемь';
9:ch:='девять';
10:ch:='десять';
else
writeln('Возможно Вы ошиблись при вводе');
end;
writeln('Вы ввели число= ',ch,'  Метод case');
{--- end of case---}
if st=0 then ch:='ноль'
  else
    if st=1 then ch:='один'
      else
         if st=2 then ch:='два'
          else
            if st=3 then ch:='три'
              else
                if st=4 then ch:='четыре'
                  else
                    if st=5 then ch:='пять'
                      else
                      if st=6 then ch:='шесть'
          else
             if st=7 then ch:='семь' 
          else
             if st=8 then ch:='восемь'
             else
             if st=9 then ch:='девять'
             else
             if st=10 then ch:='десять'
             else
             writeln('Возможно Вы ошиблись при вводе');
writeln('Вы ввели число= ',ch,'  Метод if');
end.
g25092011
Donald Ervin Knuth вне форума Ответить с цитированием
Старый 22.10.2014, 12:44   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сергей
Цитата:
case в Pascal (Delphi) работает только с перечисляемым типом данных
Не перечисляемыми (перечислимыми точнее), а порядковыми (integer, char, boolean).
Перечислимый тип данных это, если не ошибаюсь:
Код:
type Ttype = (first, second, third);
Вадим Мошев вне форума Ответить с цитированием
Старый 22.10.2014, 16:28   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Не перечисляемыми (перечислимыми точнее), а порядковыми (integer, char, boolean).
Вы абсолютно правы.
Только порядковый тип включается в себя и перечисляемый.
Отсюда
Цитата:
Порядковый типы данных
.....
Borland Pascal имеет 10 встроенных порядковых типов: Integer
(целое), Shortint (короткое целое), Longint (длинное целое), Byte
(длиной в байт), Word (длиной в слово), Boolean (булевское),
ByteBool (булевское размером в байт), WordBool (булевское разме-
ром в слово), LongBool (длинный булевский тип) и Char (символьный
тип). Кроме того, имеется два других класса определяемых пользо-
вателем порядковых типов: перечислимые типы и отрезки типов (под-
диапазоны).
Цитата:
Перечислимый тип данных это, если не ошибаюсь:
Код:
type Ttype = (first, second, third);
Точно. С ним Case за милую душу работает:
Код:
type Ttype = (first, second, third);

var t1 : Ttype;
  n : integer;
begin
  ReadLn(n);
  if n=1 then t1 := first
   else t1 := third;

  case t1 of
    first: WriteLn('t1 имеет значение Первый');
    second: WriteLn('t1 имеет значение Второй');
    third: WriteLn('t1 имеет значение Третий');
  end;

  readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2014, 17:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а) команду выбора case; б) команду if
Кокая убогая дурость прИпАдАвателя...

О времена, о нравы...
Чего уж знать ученикам
Коль скоро те, кто учит
Со всех сторон не правы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить в Uses модули(?) вроде Math Oldcentre Помощь студентам 6 17.11.2010 23:57
Вроде как калькулятор... Не могу понять ! EXeplor Помощь студентам 1 12.05.2010 02:07
Вроде несложная задачка britva666 Помощь студентам 2 28.06.2009 19:09
Не могу понять в чем ошибка (вроде школьная математика) Алён@ Общие вопросы Delphi 4 10.03.2009 20:25
Помогите, вроде несложная задачка, НО Nez Общие вопросы Delphi 17 12.03.2007 14:04