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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2008, 12:51   #1
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию Проверьте плиз задачу

Сделал задачу:
Цитата:
Выделить цветом и подсчитать число слов, удовлетворяющих следующим условиям:
1. Слово содержит не менее четверти гласных букв
2. Слово принадлежит столбцу, в котором есть хотя бы три слова из 5-ти букв.
K=2, L=7, M=20, N=10
Но сомневаюсь в правильности выполнения второго условия:
Код:
Program la1;
Uses
   Crt;
Const
   K = 2;
   L = 7;
   M = 20;
   N = 10;
Type
   Slovo = array[1..L] of char;
   Massiv = array[1..M,1..N] of Slovo;
Var
   A: massiv;
   Kol_Slov: integer;
   FindColumn: byte;

Procedure VvodSlova(var z: Slovo);
Var
   i,n: byte;
Begin
   n := K + Random(6);
   for i := 1 to L do
      if i <= n
      then z[i] := Chr(65 + Random(26))
      else z[i] := Chr(32);
End;

Function LenghtSlovo(sl: Slovo): byte;
Var
   i: byte;
Begin
   for i := 1 to L do
   begin
      if sl[i] = ' ' then
      begin
         LenghtSlovo := i - 1;
         Break;
      end;
   end;
End;

Function Proverka1(z: Slovo): boolean;
Const
   alf: string[6] = 'AEIJOUY';
Var
  i, j, lenght, kol: byte;
Begin
   kol := 0;
   Proverka1 := true;
   lenght := LenghtSlovo(z);
   for j := 1 to 6 do
   for i := 1 to lenght do
   if z[i]=alf[j] then
   begin
   inc(kol);
   break;
   end;
   if kol/lenght<1/4 then Proverka1:=false;
End;

Procedure Proverka2(var Column: byte; z: massiv);
Var
   i,j,kol,ColumnKol: byte;
Begin
   ColumnKol := 0;
   for j := 1 to N do
   begin
      kol := 0;
      for i:= 1 to M do
      begin
         if j mod 5 = 0 then Continue;
         if LenghtSlovo(z[i,j]) = 5 then Inc(kol);
      end;
      if kol > 3 then
      begin
         Column := j;
         ColumnKol := kol;
      end;
   end;
End;

Procedure VvodMass(var z: massiv);
Var
   i,j: byte;
Begin
   Randomize;
   for i := 1 to M do
      for j:= 1 to N do
         VvodSlova(z[i,j]);
End;

Procedure PrintMass(z: massiv; var kol: integer);
Var
   i,j: byte;
Begin
   kol := 0;
   for i := 1 to M do
   begin
      for j := 1 to N do
      begin
         if Proverka1(z[i,j]) = true
         then
            if j = FindColumn then
            begin
               TextColor(10);
               Inc(kol);
            end
            else TextColor(14)
         else TextColor(7);
         if j <> N then Write(z[i,j], ' ')
         else Write(z[i,j])
      end;
      Writeln;
   end;
End;

Begin
   ClrScr;
   VvodMass(A);
   Proverka2(FindColumn, A);
   PrintMass(A, Kol_Slov);
   Writeln;
   Write('Количество слов, удовлетворяющих условиям = ', Kol_Slov);
   Repeat Until KeyPressed
End.
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте на правильность плиз Agent[PNZ] Помощь студентам 3 11.06.2014 19:50
Помогите ришить задачу в Delphi плиз D.J.M.13 SNG Помощь студентам 1 12.10.2008 05:02
Помогите решить задачу, плиз Люда Помощь студентам 14 22.02.2007 13:21