Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разделить алфавит. Разделить алфавит на 5 груп и проверить 
:(
    Опции темы
Alex103
Дата 7.10.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Ребята помогите. Нужно сделать такую задачу. Берм английский алфавит и дели его на 5 частей без Z 
далее пользователь вводить последовательность из 5-6 символов и нам нужно проверить в какую из частей попало наибольшее кол-во символов.

У меня идея была такая но она слишком громоздкая помогите сделать проще.

Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
n1,n2:char;
i1,i2,i3,i4,i5 :integer;
begin
i1:=0;
i2:=0;
i3:=0;
i4:=0;
i5:=0;
writeln('Please enter Symbols: ');
readln(n1);
case n1 of
'A','B','C','D','E': inc(i1);
'F','G','H','I','J': inc(i2);
'K','L','M','N','O': inc(i3);
'P','Q','R','S','T': inc(i4);
'U','V','W','X','Y': inc(i5);
end;
writeln;
Writeln(i1,i2,i3,i4,i5);
readln;
end.



--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
volvo877
Дата 7.10.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Так?
Код

program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const n = 5;
var
  count: array[1 .. n] of integer;
  s: string;
  i: integer;

begin
  writeln('Please enter Symbols: ');
  // readln(s);
  s := 'ABefJkyYZZ';
  for i := 1 to length(s) do
    if upcase(s[i]) in ['A' .. 'Y'] then
      inc(count[ (ord(upcase(s[i])) - ord('A')) div 5 + 1 ]);

  for i := 1 to n do
    write(count[i]);
  writeln;
  readln;
end.

PM MAIL   Вверх
Alix
Дата 7.10.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



заведи массив hits : array [0..4] of integer; далее делай так:
Код

  // для каждой введенной буквы
  letter := upcase(letter);
  if letter in ['A'..'Y'] then
    inc(hits[ord(letter)-65 div 5]);


Добавлено @ 10:51
мда... я опоздал smile

Это сообщение отредактировал(а) Alix - 7.10.2007, 10:52


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Alex103
Дата 7.10.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Ребята этот вариант хорош, и я его буду использовать. Но могли ли бы вы помочь написать эту задачу операторм case of так как у меня


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Alix
Дата 7.10.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



хм... ну не хочеся мне 5 переменных использовать... тогда так:
Код
var
  hits : array [0..4] of integer;
  index : integer;

...
  case upcase(letter) of
    'A'..'E': index := 1;
    'F'..'J': index := 2;
    'K'..'O': index := 3;
    'P'..'T': index := 4;
    'U'..'Y': index := 5;
  end;
  inc(hits[index]);
...

Ну или можешь вместо index'а сразу inc'и ставить...


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
volvo877
Дата 7.10.2007, 12:33 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Alix, только
Код

inc(hits[index - 1]); // <--- иначе вылетишь за границы массива

PM MAIL   Вверх
Alix
Дата 7.10.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Ya, thanks smile


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Alex103
  Дата 7.10.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



После стольких ответов. Но задачу по прежнему решить неудаеться. Нужно решить ее чере оператор case of. Но как считать данные, потом проверить их через case of  Я так и не понял. Помогите. Можете разьеснить подробнее?


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Alix
Дата 7.10.2007, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



А чего тут непоятного??? Берешь программу volvo877, и ставишь тот case, который я написал:
Код
program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils;

var
  count: array[1..5] of integer;
  s: string;
  i: integer;
  index : integer;

begin
  // пользователь вводит символы
  writeln('Please enter Symbols: ');
  readln(s);

  // на всякий случай обнуляем массив
  for i := 1 to 5 do
    count[i] := 0;

  // просматриваем каждый введенный символ
  for i := 1 to length(s) do
    // в зависимости от того, что за буква увеличиваем на 1 соотв. элемент массива
    case upcase(letter) of
      'A'..'E': inc(count[1]);
      'F'..'J': inc(count[2]);
      'K'..'O': inc(count[3]);
      'P'..'T': inc(count[4]);
      'U'..'Y': inc(count[5]);
    end;

  // выводим результат
  for i := 1 to 5 do
    write(count[i], ' ');

  readln;
end.

Не компилировал.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.