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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2009, 21:42   #1
0101
 
Регистрация: 27.01.2009
Сообщений: 6
Вопрос Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом.

Задание.
С помощью ПСП сформировать двухмерный MxN массив из элементов. В качестве элементов использовать слова из K..L символов A..Z (одномерный массив символов латинского алфавита). Осуществить подсчет элементов, удовлетворяющих условиям задания. Проверку заданных условий поиска реализовать с использованием типа множества. Вывести на экран сформированный массив в виде таблицы, выделив цветом подсчитанные элементы. Результат подсчета вывести на экран в отдельном окне.
Указания:
При формировании массива использовать стандартные подпрограммы ПСП - Random, Randomize, а также, возможно использование функции CHR. Коды ASCII символов A..Z - 65..90. Слова формируются в одномерных массивах, каждый из которых состоит из L ячеек; буквы записываются без пробела, начиная с первой ячейки.
Незаполненные буквами позиции массива в конце слов заполнить символами пробела - код ASCII - 32.
Для вывода на экран строки заданного цвета необходимо:
- в программе указать об использовании модуля CRT (USES CRT);
- эта директива должна присутствовать в начале текста программы.
- перед использованием стандартной процедуры вывода необходимо задать цвет вывода соответствующим значением параметра X стандартной процедуры TextColor(X).

Сама задача:
Выделить цветом и подсчитать число слов, удовлетворяющих следующим условиям:
1) Средняя буква в слове стоит после согласной;
2) Слово пренажоежит строке, в которой сумарное число трёхбуквенных слов меньше чем пятибуквенных.
К=2
L=7
M=20
N=10

M и N - соответственно число строк и столбцов формируемой таблицы;
K и L - соответственно минимальное и максимальное число букв в формируемых словах - элементах массива.

Заранее спасибо)))
0101 вне форума Ответить с цитированием
Старый 03.02.2009, 11:41   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
uses crt;
const 
  K=2;  
  L=7;  
  M=20; 
  N=10; 
  AA=Ord('A');           {код буквы А в таблице символов} 
  ZZ=Ord('Z');            {код буквы Z в таблице символов} 
  sgl=['B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Z'];
var 
  mas:  array [1..M,1..N] of string[L];
  i,j,t,p,q, {счетчики циклов} 
  len,           {длина текущей строки=элемента матрицы (K..L)} 
  k3,k5,kp, {кол. из 3 букв, кол. из 5 букв, кол. пробелов в слове}
  kol: byte;              {кол-во слов, удовлетвлоряющих условию }
begin 
clrscr; 
randomize; 
for i:=1 to M do 
for j:=1 to N do
  begin
    len:=random(L-K+1)+K;
    mas[i,j]:='';         {строка соответствующая сначала пустая}
    for t:=1 to len do   {затем добавляем по одному к ней символы в количестве len}
    mas[i,j]:=mas[i,j]+Char(random(ZZ-AA+1)+AA); {псевдослучайные от A до Z}
    if length(mas[i,j])<L then {если слово меньше 7 букв}
    for p:=length(mas[i,j])+1 to L do {то в конец слова}
    mas[i,j] :=mas[i,j]+' '; {добавляем пробелы}
  end;
TextColor(15); {цвет текста по умолчанию}
kol:=0; {пока не нашли ни одного подходящего слова}
for i:=1 to M do {идем по строкам}
  begin
    k3:=0;k5:=0;
    for j:=1 to N  do {считаем слова из 3 и 5 букв в строках}
      begin
        kp:=0;
        for q:=1 to length(mas[i,j])do
        if mas[i,j][q]=' 'then kp:=kp+1;{считаем пробелы в словах}
        if kp=4 then k3:=k3+1 {если 4 пробела, то 3 буквы}
        else if kp=2 then k5:=k5+1; {если 2 пробела-5 букв}
      end;
    if k3<k5 then{если из 3 букв меньше}
      begin
        for p:=1 to N do {снова по этой строке}
           begin
             kp:=0;
             for q:=1 to length(mas[i,p])do
             if mas[i,p][q]=' 'then kp:=kp+1;{считаем пробелы в словах}
             if (kp mod 2=0)and(mas[i,p][(length(mas[i,p])-kp) div 2] in sgl)  then
             {если слово нечетной длины и буква перед средней согласная}
               begin
                TextColor(12);    {меняем цвет на красный}
                write(mas[i,p]:8); {выводим красным}
                kol:=kol+1;   {считаем количество}
                TextColor(15);  {цвет по умолчанию}
               end
            else write(mas[i,p]:8); {выводим обычные слова в этой строке}
           end;
       end
     else
       for j:=1 to N do
       write(mas[i,j]:8); {выводим обычным строки где к3>k5}
  end; 
writeln;
write('Kolichestvo slov=',kol);
readln
end.
puporev вне форума Ответить с цитированием
Старый 03.02.2009, 21:01   #3
0101
 
Регистрация: 27.01.2009
Сообщений: 6
Радость

Спасибо)
0101 вне форума Ответить с цитированием
Старый 17.12.2009, 23:57   #4
apel1806
 
Регистрация: 16.12.2009
Сообщений: 3
Восклицание

похожая задачка, не могу разобраться с правильностью условий...
Выделить цветом и подсчитать число слов, удовлетворяющих следующим условиям.
1. Нечетные буквы в слое -согласные.
2. Слово принадлежит строке, в которой первые три слова расположены в алфавитном порядке.
K=2, L=7, M=20, N=10
apel1806 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с ПСП помогите плиз! drag888 Паскаль, Turbo Pascal, PascalABC.NET 1 20.01.2009 19:22
Массивы, множества. Работа с цветом Olalya da Silva Паскаль, Turbo Pascal, PascalABC.NET 0 10.01.2009 22:44
Задача в Visual C++ 6.0, работа со строками Serezhik Visual C++ 6 30.11.2008 20:31
Работа со строками. Задача Memfis_nya Общие вопросы C/C++ 4 16.11.2008 18:42