Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 17.01.2013
Сообщений: 16
1

Вывести на экран сформированный массив, выделив цветом (мерцанием) указанные в варианте элементы

17.01.2013, 01:13. Показов 2854. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Люди добрые помогите, проверить доработать и дать советы в задачах:

С помощью ПСП сформировать двухмерный MxN массив из элементов. В качестве элементов использовать слова из K..L символов A..Z.
Осуществить действия по заданному алгоритму. Вывести на экран сфор-мированный массив, выделив цветом (мерцанием) указанные в варианте элементы. Вывести результаты на экран.
(Здесь: M и N - соответственно число строк и столбцов формируемой
матрицы; K и L - соответственно минимальное и максимальное число букв в
формируемых словах - элементах массива).

Методические указания
При формировании массива использовать стандартные подпрограммы ПСП -
Random ( Randomize ), а также, возможно использование функции CHR.
Коды ASCII символов A..Z - 65..90 (a..z - 97..122); Слова формируются в одномерных массивах, каждый из которых состоит из L ячеек; буквы записываются без пробела, начиная с первой ячейки.
Незаполненные буквами позиции массива в конце слов заполнить символами пробела - код ASCII - 32.
Для вывода на экран строки заданного цвета необходимо:
1. в программе указать об использовании модуля CRT (USES CRT; - эта
директива должна присутствовать в начале текста программы).
2. перед использованием стандартной процедуры вывода необходимо задать
цвет вывода соответствующим значением параметра X стандартной процедуры TextColor(X) или переопределить соответствующим образом предопределенную переменную TextAttr модуля CRT. X можно изменять от 0 до 15(или Black, Blue, .. , White); 128(Blink).
Например: .. TextColor(Yellow + Blink); Writeln('текст'); ..- на экран выведется мерцающая строка "текст" желтого цвета. (или .. TextAttr:=4+128; Writeln('текст'); .. то же самое).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2013, 01:13
Ответы с готовыми решениями:

Вывести матрицу на экран, выделив цветом все элементы второго столбца
Заполнить с клавиатуры целыми числами матрицу (4 столбца,3 строки). Вывести матрицу на...

Вывести массив, выделив цветом четные элементы. Найти сумму четных положительных, а так же четных отрицательных
Распечатать на экране двумерный массив 6х6 из промежутка(-99,99). Вывести этот же массив но выделив...

Массив: Вывести массив на экран. Выделить цветом его максимальный и минимальный элементы.
Всем привет) разбираюсь с массивами и тут очень интересная задачка но никак не могу понять как ее...

Вывести на экран массив, раскрасив розовым цветом заданные элементы
Заполнить одномерный массив из 15 элементов целыми числами. Вывести на экран массив, раскрасив...

7
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.01.2013, 13:09 2
Цитата Сообщение от dean999 Посмотреть сообщение
выделив цветом (мерцанием) указанные в варианте элементы.
И какие элементы выделять?

Добавлено через 48 минут
Вообще задача для Турбо Паскаля, поскольку в АВС нет blink.
Сможете, переделайте на АВС.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
uses crt;
const nmax=9;
var a:array[1..nmax,1..nmax] of string;
    m,n,k,l,i,j,r,p:byte;
    s:string;
    ch:char;
    c:set of char;
begin
clrscr;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in[1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in[1..nmax];
repeat
write('Мимальная длина слов от 1 до 6 k=');
readln(k);
until k in [1..6];
repeat
write('Максимальная длина слов от ',k,' до 7 l=');
readln(l);
until l in [k..7];
c:=[];
writeln('Введите прописные латинские буквы для выделения, окончание ввода Enter:');
repeat
ch:=readkey;
if ch in ['A'..'Z'] then
 begin
  write(ch);
  c:=c+[ch];
 end;
if ch=#13 then writeln;
until ch=#13;
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    r:=k+random(l-k+1);
    s:='';
    for p:=1 to r do
    s:=s+chr(65+random(26));
    while length(s)<l do s:=s+' ';
    a[i,j]:=s;
    for p:=1 to length(a[i,j])do
     begin
      if a[i,j][p] in c then  textcolor(12+128) else textcolor(15);
      write(a[i,j][p]);
     end;
    write(' ');
   end;
  writeln
 end;
readln
end.
Добавлено через 1 час 13 минут
В АВС можно заменить мерцание на фон, и множество на строку, что-то в середине программы это не пашет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
uses crt;
const nmax=9;
var a:array[1..nmax,1..nmax] of string;
    m,n,k,l,i,j,r,p:byte;
    s,st:string;
 
begin
 
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in[1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in[1..nmax];
repeat
write('Минимальная длина слов от 1 до 6 k=');
readln(k);
until k in [1..6];
repeat
write('Максимальная длина слов от ',k,' до 7 l=');
readln(l);
until l in [k..7];
writeln('Введите прописные латинские буквы для выделения:');
readln(st);
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    r:=k+random(l-k+1);
    s:='';
    for p:=1 to r do
    s:=s+chr(65+random(26));
    while length(s)<l do s:=s+' ';
    a[i,j]:=s;
    for p:=1 to length(a[i,j])do
     begin
      if pos(a[i,j][p],st)>0 then TextAttr:=16*LightGray+Yellow
      else TextAttr:=16*White+Black;
      write(a[i,j][p]);
     end;
    write(' ');
   end;
  writeln
 end;
end.
0
1 / 1 / 0
Регистрация: 17.01.2013
Сообщений: 16
18.01.2013, 01:33  [ТС] 3
Выделить цветом и подсчитать число слов,
удовлетворяющих следующим условиям.

1. Последняя буква в слове - согласная.
2. Слово принадлежит строке с индексом, кратным
«3».

K = 2, L = 7, M = 20, N = 10

Добавлено через 7 часов 4 минуты
Кто может модифицировать код, под условия?

Добавлено через 5 часов 19 минут
Есть люди которые могут справить условия под эту программку????
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
uses crt; 
const 
  K=2;  
  L=7;  
  M=20; 
  N=10; 
  AA=Ord('A');           {код буквы А в таблице символов} 
  ZZ=Ord('Z');            {код буквы Z в таблице символов} 
 gl=['A','E','I','O','U','Y']; 
 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)} 
  ss,kg,ks, {кол. букв в столбце, кол. гласных и согласных в слове} 
  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} 
  end; 
TextColor(0); {цвет текста по умолчанию} 
kol:=0; {пока не нашли ни одного подходящего слова} 
for j:=1 to N do {идем по столбцам} 
  begin 
    ss:=0; 
    for i:=1 to M  do {считаем буквы в столбцах} 
    ss:=ss+length(mas[i,j]); 
    if ss mod 3=0 then{если кратно 3} 
      for p:=1 to M do {снова по этому столбцу} 
          begin 
            kg:=0;ks:=0; 
            for q:=1 to length(mas[p,j]) do {смотрим каждое слово} 
               begin 
                if mas[p,j][q] in gl then kg:=kg+1; {считаем гласные} 
                if mas[p,j][q] in sgl then ks:=ks+1; {считаем согласные} 
               end; 
            if kg*5<=ks then {если согласных в 5 раз больше} 
              begin 
               TextColor(red);                  {меняем цвет на красный} 
                     write(mas[p,j]:8);                 {выводим красным} 
                     kol:=kol+1;   {считаем количество} 
               TextColor(15);  {цвет по умолчанию} 
              end 
            else write(mas[p,j]:8); {выводим обычные слова в этом столбце} 
          end 
     else 
       for i:=1 to M do 
       write(mas[i,j]:8); {выводим обычным столбцы где сумма букв не кратна 3} 
  end; 
window(50,23,78,25);{новое окно} 
TextBackGround(14); {цвет фона} 
TextColor(15); {цвет текста} 
readln; 
clrscr; 
write('Kolichestvo slov=',kol);{это надо в отдельном окне} 
readln 
end.
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
18.01.2013, 02:01 4
dean999, не пойму: код приведенный Puporevым решает поставленную в верхнем посте (условии) задачу. Зачем что-то модифицировать?
0
1 / 1 / 0
Регистрация: 17.01.2013
Сообщений: 16
18.01.2013, 16:44  [ТС] 5
Выделить цветом и подсчитать число слов,
удовлетворяющих следующим условиям.

1. Последняя буква в слове - согласная.
2. Слово принадлежит строке с индексом, кратным
«3».

Вот эти элементы нужно выделить, не дописал в первый раз.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
18.01.2013, 17:40 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
uses crt;
const nmax=9;
var a:array[1..2*nmax,1..nmax] of string;
    m,n,k,l,i,j,r,p:byte;
    s,st:string;
 
begin
 
repeat
write('Количество строк до ',2*nmax,' m=');
readln(m);
until m in[1..2*nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in[1..nmax];
repeat
write('Минимальная длина слов от 1 до 6 k=');
readln(k);
until k in [1..6];
repeat
write('Максимальная длина слов от ',k,' до 7 l=');
readln(l);
until l in [k..7];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    r:=k+random(l-k+1);
    s:='';
    for p:=1 to r do
    s:=s+chr(65+random(26));
    while length(s)<l do s:=s+' ';
    a[i,j]:=s;
    if(i mod 3=0)and not(a[i,j][r] in ['A','E','I','O','U',' '])
    then TextAttr:=16*LightGray+Yellow
    else TextAttr:=16*White+Black;
    write(a[i,j]:l+1);
   end;
  writeln
 end;
end.
1
0 / 0 / 0
Регистрация: 02.03.2021
Сообщений: 1
09.01.2022, 14:15 7
что означает [r] в a[i,j][r]?
0
Вирусоборец
13100 / 7251 / 1535
Регистрация: 06.09.2009
Сообщений: 26,482
09.01.2022, 15:52 8
Индекс символа в строке, содержащейся в массиве
0
09.01.2022, 15:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2022, 15:52
Помогаю со студенческими работами здесь

Вывести на экран массив, раскрасив зеленым цветом положительные элементы
Заполнить одномерный массив из 15 элементов случайными целыми числами. Вывести на экран массив,...

Вывести на экран массив, раскрасив желтым цветом отрицательные его элементы
Заполнить одномерный массив из 15 элементов случайными целыми числами. Вывести на экран массив,...

Вывести на экран массив, раскрасив красным цветом - первый элемент > 0, синим – элементы < 0
Вывести на экран одномерный массив, из 10 элементов, раскрасив в нем красным цветом первый...

Вывести на экран линейный массив из 10 случайных чисел, причем отрицательные элементы синим цветом
написать программу которая выводит на экран линейный массив из 10 случайных чисел, причем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru