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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2008, 21:40   #1
lubafffka
Пользователь
 
Регистрация: 05.11.2008
Сообщений: 46
Вопрос Сохранить текст в массиве

надо Сохранить текст в массиве , определить, в тексте больше символов цифр, символов букв латинского алфавита или остальных символов

write('Введите текст:');
read(ch);
zif:=0;
lat:=0;
ost:=0;
while ch<> #13#10 do
begin
case ch of
'a'..'z':lat:=lat+1;
'0'..'9':zif:=zif+1
else
ost:=ost+1;
end;
if zif> lat then begin
if zif> ost then
write('больше цифр')
else
write ('больше остальных')
end
else if lat> ost then
write('больше букв')
else
write ('больше остальных');
readkey;
end;
end.

че не так? почему она не работает???
lubafffka вне форума Ответить с цитированием
Старый 06.11.2008, 12:28   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

while ch<> #13#10 do - ch строка никогда там символа 13 при вводе с клавиатуры не будет. Цикл бесконечен

case ch of - снова попытка считать строку за 1 символ

Код:
var
  s: string;
  mas: array[1..255] of char;
  i: byte;
  zif, lat, ost: byte;
begin
  zif := 0;
  lat := 0;
  ost := 0;
  write('vvod = ');
  readln(s);
  for i := 1 to length(s) do
  begin
    mas[i] := s[i];//сохраняем в массив (если правильно понял задание)
    case s[i] of //s[i] - один символ
      'A'..'Z', 'a'..'z': inc(lat);//могут быть и большие буквы
      '0'..'9': inc(zif);
      else inc(ost)
    end
  end;
  writeln('lat = ', lat);
  writeln('zif = ', zif);
  writeln('ost = ', ost);
  if lat < zif then
    if ost < zif then writeln('bolee zif')
    else writeln('bolee ost')
  else
    if ost > lat then writeln('bolee ost')
    else writeln('bolee lat');
  for i := 1 to length(s) do write(mas[i], ' ');//вывод массива
  //пробел после каждого символа для наглядности, можно и убрать
  readln
end.
eoln вне форума Ответить с цитированием
Старый 06.11.2008, 12:39   #3
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

вот без ограничения на колличество симолов....
Код:
uses crt;
var ch:char;
    zif,lat,ost:longint;
begin
writeln('Vvedite text:');
ch:=readkey;
zif:=0;
lat:=0;
ost:=0;
while ch<> #13 do
 begin
  case ch of
   'a'..'z':lat:=lat+1;
   '0'..'9':zif:=zif+1
  else
   ost:=ost+1;
  end;
  write(ch);
  ch:=readkey;
 end;
writeln;
if(zif>lat) and (zif>ost) then writeln('Zifr Bolshe')
else
if(zif<lat) and (ost<lat) then writeln('lat Bolshe')
else
writeln('Ost bolshe');
readln;
end.
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать какой текст выделен в текст поле mogul82 JavaScript, Ajax 2 02.11.2008 16:32
Снова о массиве Constellation Общие вопросы Delphi 2 09.02.2008 20:42
Как сохранить текст из мемо в блакнот? BETONOMESHALKA Общие вопросы Delphi 2 22.12.2007 02:16
Как сохранить текст в DOS кодировке? oleg kutkov Общие вопросы Delphi 9 06.08.2007 09:32
Обмен блоков в массиве Irik Помощь студентам 6 29.04.2007 14:08