М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
komikadza
komikadza
08.01.2020 11:47 •  Информатика

Pascal. дана непустая последовательность слов из строчных букв; между соседними словами – запятая, за последним словом – точка. напечатать звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово в алфавитном порядке все.

👇
Ответ:
Вариант для тех, кто любит и понимает множества.
const
  cs='бвгджз';
var
  s:string;
  i:integer;
  c:char;
  p,csg:set of char;
begin
  Writeln('Введите текст, разделяя слова запятыми, в конце поставьте точку');
  Readln(s);
  p:=[];
  for i:=1 to Length(cs) do Include(csg,cs[i]); { инициализация множества }
  s:=LowerCase(s); { приведение к нижнему регистру }
  i:=1; c:=s[1];
  while c<>'.' do begin
    { обработка нечетного слова }
    while not (c in [',','.']) do begin
      if (c in csg) and not (c in p) then Include(p,c);
      i:=i+1;
      c:=s[i]
    end;
    { обработка четного слова }
    if c<>'.' then begin i:=i+1; c:=s[i] end;
    while not(c in [',','.']) do begin
      if (c in csg) and (c in p) then Exclude(p,c);
      i:=i+1;
      c:=s[i]
    end;
    if c<>'.' then begin i:=i+1; c:=s[i] end
  end;
  s:='';
  for i:=1 to Length(cs) do if cs[i] in p then Write(cs[i])
end.

Тестовое решение:
Введите текст, разделяя слова запятыми, в конце поставьте точку
Это,пример,текста,созданного,для,проверки,программы.
гд

Вариант для тех, кто с множествами не дружит:
const
  cs='бвгджз';
var
  s,p:string;
  i,n:integer;
  c:char;
begin
  Writeln('Введите текст, разделяя слова запятыми, в конце поставьте точку');
  Readln(s);
  p:=''; n:=Length(cs);
  s:=LowerCase(s); { приведение к нижнему регистру }
  i:=1; c:=s[1];
  while c<>'.' do begin
    { обработка нечетного слова }
    while (c<>',') and (c<>'.') do begin
      if (Pos(c,cs)>0) and (Pos(c,p)=0) then p:=p+c;
      i:=i+1;
      c:=s[i]
    end;
    { обработка четного слова }
    if c<>'.' then begin i:=i+1; c:=s[i] end;
    while (c<>',') and (c<>'.') do begin
      if (Pos(c,cs)>0) and (Pos(c,p)=1) then p[Pos(c,p)]:='*';
      i:=i+1;
      c:=s[i]
    end;
    if c<>'.' then begin i:=i+1; c:=s[i] end
  end;
  for i:=1 to Length(cs) do if Pos(cs[i],p)>0 then Write(cs[i])
end.

Тестовое решение:
Введите текст, разделяя слова запятыми, в конце поставьте точку
Данная,фраза,предлагается,для,тестирования.
вг
4,4(16 оценок)
Открыть все ответы
Ответ:
ganjaman007
ganjaman007
08.01.2020
// PascalABC.NET 3.0, сборка 1150 от 22.01.2016
begin
  var n:=ReadInteger('Количество элементов массива ');
  var m:=ArrRandom(n,-50,50); m.Println(', ');
  var a:=0; var b:=0; var c:=0;
  for var i:=0 to n-1 do begin
    if m[i]>0 then a:=a+m[i];
    if m[i]<m[b] then b:=i;
    if m[i] mod 5 = 0 then Inc(c)
  end;
  var w:=(b+1)+a/(c+1);
  WritelnFormat('A={0}, B={1}, C={2}, W={3}',a,b+1,c,w);
  Writeln('Принято, что элементы массива нумеруются от единицы')
end.

Тестовое решение:
Количество элементов массива  13
-43, -15, 18, -8, -13, -47, -36, 6, -16, 45, 33, 33, -24
A=135, B=6, C=2, W=51
Принято, что элементы массива нумеруются от единицы

Составить программу вычисления, w = b + a - сумма положительных элементов массива; b – номер наимень
4,6(24 оценок)
Ответ:
zzzzzzz555555
zzzzzzz555555
08.01.2020
Специально для вас выловил ошибки, находящиеся в предыдущем решении. Кому-то не повезло :(

//PascalABC
var
    S : array[1..10000] of integer;
    A, B, C, i, N, min : integer;
    W : real;
begin
    write('Укажите размер массива > ');
    readln(N);
    write('Вводите элементы массива > ');
    for i := 1 to N do
        readln(S[i]);
       
    A := 0;
    min := S[1];
    C := 0;
    for i := 1 to N do begin
        if S[i] > 0 then A := A + S[i];
        if S[i] < min then begin
            B := i;
            min := S[i];
        end;
        if S[i] mod 5 = 0 then C := C + 1;
    end;
    W := B + A / (C + 1);
    writeln('Сумма элементов ', A);
    writeln('Номер минимального эл-та ', B);
    writeln('Количество кратных пяти ', C);
    writeln('Параметр W ', W);
end.
4,8(11 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ