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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2015, 14:19   #1
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  a:char;
begin
  writeln ('select student');
  writeln ('1 = Voytik  Ury Vasilevich');
  writeln ('2 = Petrov Ivan Ivanovich');
  writeln ('3 = Lukashenko Alexander Grigorevich');
  readln (a);
  case a of
  '1': writeln ('Voytik  Ury Vasilevich, g.Kolomna, d.7, kv.1');
  '2': writeln ('Petrov Ivan Ivanovich, g.Moskow, d.23, kv.10');
  '3': writeln ('Lukashenko Alexander Grigorevich, g.Muxasransk, d.1, kv.1');
  Else writeln ('information is absent');

  end;
  readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
как сделать тоже самое, только что бы не цифры char приходилось вводить, а сами фамилии...

ввожу так если
Код:
 
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  a:string [10];
begin
  readln (a);
  case a[10] of
  Voytik: writeln ('Voytik  Ury Vasilevich, g.Kolomna, d.7, kv.1');
  Petrov: writeln ('Petrov Ivan Ivanovich, g.Moskow, d.23, kv.10');
  Lukashenko: writeln ('Lukashenko Alexander Grigorevich, g.Muxasransk, d.1, kv.1');
  Else writeln ('information is absent');

  end;
  readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
То он ругается...
[Ошибка] Project2.dpr(12): Undeclared identifier: 'Voytik'

Последний раз редактировалось Stilet; 22.09.2015 в 15:06.
voytik вне форума Ответить с цитированием
Старый 22.09.2015, 14:33   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
case a of
После слова case должна быть переменная порядкового типа (например, integer, char, boolean).
String не является порядковым
Поэтому лучше заменить на If ... then ...
Код:
If a='Voytik' then
 writeln ('Voytik Ury Vasilevich, g.Kolomna, d.7, kv.1');
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 22.09.2015, 14:34   #3
voytik
Пользователь
 
Регистрация: 22.09.2015
Сообщений: 21
По умолчанию

я изначально неправильно понял задание, сейчас все сделал правильно
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var s,s1:string;
begin
writeln('Type Full name of the student');
read(s);
s1:=copy(s,1,pos(' ',s)+1)+'.';
delete(s,1,pos(' ',s));
delete(s,1,pos(' ',s));
s1:=s1+s[1]+'.';
write(s1);
readln;
readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
но все равно интересно как заставить case принимать значение стринг

спасибо!) во второй раз за день :D
p.s.: думал можно все таки со стрингом в кейсе работать, а так я уже сделал прогу, просто изначально немного не правильно ее понял...

Последний раз редактировалось Stilet; 22.09.2015 в 15:06.
voytik вне форума Ответить с цитированием
Старый 22.09.2015, 14:36   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
но все равно интересно как заставить case принимать значение стринг
Не получится!!!
Цитата:
спасибо!) во второй раз за день :D
Пожалуйста!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 22.09.2015, 16:28   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Не получится!!!

Пожалуйста!
Можно, но через "костыли". Каждому вопросу, задаёте номер. Потом выделяете этот номер из строки (он всегда в первых рядах). Переводите в один из вышеозначенных форматов (лучше в int). И наслаждаетесь полученным результатом.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.09.2015, 19:48   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Кстати, тот неправильный способ (case a[10] of) тоже иногда сработает. В случае если варианты : Иванов, Помидоров, Лукашенко
Код:
case a[1] of
  'И': writeln ('Иванов ...');
  'П': writeln ('Петров ...');
  'Л': writeln ('Лукашенко .. ');
  // ...
ибо a[1] - это как раз таки порядковый тип, а именно char. То есть 1-я букафка в строке a. А a[10] - 10-я.

Но этот способ однозначно не годится, потому что если хотя бы - Иванов, Лимонов, Лукашенко , то не получится.
type_Oleg вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение из case 1 в case 2(switch(), язык Си) Павел_95 Помощь студентам 13 11.01.2013 14:18
case Chugun Общие вопросы Delphi 13 13.10.2012 23:08
case of Ekzamenator Помощь студентам 2 12.11.2011 17:55
Case of Lemo Помощь студентам 4 06.06.2010 01:12
for и case zloy20 Помощь студентам 4 06.12.2009 02:03