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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 00:37   #1
MrVovun
Новичок
Джуниор
 
Аватар для MrVovun
 
Регистрация: 13.11.2011
Сообщений: 1
По умолчанию Pascal. Задачи на системы счисления и множества.

Доброго времени суток, Сородичи.
Так уж получилось, что учусь на прикладной математике-информатике. Из-за аналитической геометрии и примитивного знания языка Pascal (сам обучаюсь Java), возникли некоторые проблемы с решением нескольких задач. Не буду вилять, скажу прямо – мне нужна ваша помощь. То есть их нужно решить и объяснить, как это сделано. Задачи мне нужно сдать во вторник, но, судя по всему, они элементарны настолько, что программист уровня второго курса с ними справится запросто.

Задача 1. Дано натуральное число в 15-ричной С.С. Требуется перевести его в десятичную. Если сумма десятичных цифр числа кратна 4, то перевести его в 5-ричную, в ином случае – в 4-ричную.

Задача 2. Дано натуральное число в 15-ричной С.С. Требуется перевести его в десятичную. Если число содержит десятичную цифру 6, то перевести его в 6-ричную систему, иначе – в 4-ричную.

Задача 3. Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов, какие товары есть хотя бы в одном магазине и каких товаров нет ни в одном из них.

Задача 4. Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить, каких букв – гласных (a, e, i, o, u) или согласных – больше в этом тексте.
MrVovun вне форума Ответить с цитированием
Старый 14.11.2011, 01:19   #2
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

вот процедура для 4 задачи... поиск ведется по строке, т.е. для каждой строке вызываешь процедуру. Переменные countConsonants,countVowels глобальные.
Решение в лоб... если есть идеи говори)))
Код:
//глобальные переменные
  countConsonants,countVowels:integer;
//////////////////////////////
procedure Search(string str);
var
  massiv:array [1..26] of string=('a','b','c','d','e','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  i:integer;
  temp:string;
begin
  countConsonants:=0;
  countVowels:=0;
  for i:=0 to str.Length() do
  begin
     temp:=str[i];
     if (temp=massiv[1] or temp=massiv[5] or temp=massiv[9] or temp=massiv[15] or temp=massiv[21] or temp=massiv[25]) then
        inc(countVowels)
     for j:=2 to 26 do
       if (j<>2 or j<>3 or j<>4 or j<>6 or j<>7 or j<>8 or j<>10 or j<>11 or j<>12 or j<>13 or j<>14 or j<>16 or j<>17 or j<>18 or j<>19 or j<>20 or j<>22 or j<>23 or j<>24 or j<>26) then
         inc(countConsonants);
     end;
   writeln("Количество согласных: ",countConsonants); 
   writeln("Количество гласных: ",countVowels);
   readln;
end;
world12_tk вне форума Ответить с цитированием
Старый 14.11.2011, 08:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

world12_tk, ОМГ.

Цитата:
Задача 4. Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить, каких букв – гласных (a, e, i, o, u) или согласных – больше в этом тексте.
Код:
{гласные английские буквы}
const Glasn =  ['a','A','e','E','y','Y','u','U','i' ,'I','o','O'];

var ch : char;
  i, CountGlasn, CountSogl, CountDigit : integer;
begin   
  CountGlasn := 0; CountSogl := 0; CountDigit := 0;
  writeLn('Введите текст из цифр и латинских букв (в конце точка):');
  repeat
    read(ch);
    if ch<>'.' then
      if ch in ['0'..'9'] then inc(CountDigit)
      else if ch in Glasn then inc(CountGlasn)
      else inc(CountSogl);
  until ch='.';

  WriteLn('Результаты:');
  WriteLn('Гласных: ',CountGlasn, 
          ' согласных: ', CountSogl, ' цифр:', CountDigit);
  readln;
end.
примечания.
1. Y - тоже гласная латинская буква
2. подсчёт (счётчик) цифр здесь для красоты и исключительно в учебных целях. Можете убрать.
3. в задании ничего не сказано про пробелы и другие символы (знаки пунктуации, пробелы и т.д. если их нужно исключить из подсчёта, то достаточно строку
if s<>'.' then заменить на

Код:
    if ch in ['a'..'z','A'..'Z','0'..'9'] then begin
      if ch in ['0'..'9'] then inc(CountDigit)
      else if ch in Glasn then inc(CountGlasn)
      else inc(CountSogl);
    end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2011, 19:32   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
world12_tk
Код:
    if ch in ['a'..'z','A'..'Z','0'..'9'] then begin
      if ch in ['0'..'9'] then inc(CountDigit)
      else if ch in Glasn then inc(CountGlasn)
      else inc(CountSogl);
    end;
а может лучше на case of ???
Poma][a вне форума Ответить с цитированием
Старый 14.11.2011, 23:35   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а может лучше на case of ???
в данном случае - не вижу, чем лучше.

А там - хозяин барин - хоть на GOTO можно сделать
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системы счисления (задачи) Inglar Помощь студентам 4 30.06.2011 00:35
Очень нужно! Перевод системы счисления pascal evklid Помощь студентам 7 24.01.2011 12:31
Системы счисления .Pascal. Corpinccom Помощь студентам 2 18.08.2010 00:29