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

Составить программу: дана буква алфавита. вывести на экран является ли эта буква гласной, согласной или разделительным знаком

👇
Ответ:
Женивева12
Женивева12
29.06.2021

Так как понятие "гласная", "согласная" и пр. не являются формализованными понятиями, то есть их нельзя вычислить алгоритмически, их нужно задавать таблично, константами, а так как их много, то лучше всего подойдут массивы.

Так как не указан язык программирования, в котором нужно реализовать текст, напишу на некоем псевдоязыке, текст которого легко переводится на известный тебе язык.

 

В общем, программа будет такой

 

// объявления массивов

гласная(), согласная(), знак()

// заполнение массивов

гласная(1)="А";

гласная(2)="а";

гласная(3)="Е";

гласная(4)="е";

согласная(1)="Б";

согласная(2)="б";

согласная(3)="В";

согласная(4)="в";

знак(1)=".";

знак(2)=".",;

знак(3)="!";

знак(4)="?";

  // Функции

функция фГласная(буква)  

 Для ц=1 по кг Цикл  

     Если буква=гласная(ц) тогда

             Возврат(1);  

     КонецЦикла;  

 КонецЦикла;  

 Возврат(0);

КонецФункции  

 

функция фСогласная(буква)  

 

КонецФункции  

функция фзнак(буква)  

 

КонецФункции

  // текст основной программы

Ввод(буква);

Если фГласная(буква) = 1 тогда

   Сообщить(буква+" гласная");  

ИначеЕсли  фСогласная(буква)=1

тогда             Сообщить(буква+" согласная");  

ИначеЕсли фЗнак(буква)=1 тогда      

 Сообщить(буква+" разделительный знак");

Иначе        Сообщить(буква+" не квалифицирована");

КонецЕсли;  

 

  Вот собственно и всё.  

Замечание1

Если язык требует при объявлении массива его размерность- её нужно указать. многие языки имеют встроенную функцию определения размерности, некоторые языки имеют встроенные функции поиска в массиве, тогда нужно воспользоваться ими, а не писать свои функции.

Замечание2

Если ИначеЕсли... как правило реализуется операторами Case

Замечание3

Основная программа, как правило тоже обрамляется циклом с выходом по условию, которое либо системное либо некий хитрый символ(или клавиша), который ты определяешь концом ввода данных.

Замечание4

Вместо массив можно использовать строки, содержащие подряд буквы, например, гласная="АаЕеИи". в этом случае для поиска нужно пользоваться соответствующими встроенными строковыми функциями.

  В общем, смысл должен быть тебе понятен, а дальше - творчество.

Успехов!  

Почему-то при записи убежал возврат каретки, попробовал восстановить. :)

    

4,4(24 оценок)
Открыть все ответы
Ответ:
Ivanych086
Ivanych086
29.06.2021
Const
  n1=15;
  n2=10;
  n3=12;
type
  V=array[1..15] of string;
procedure M_in(s:string; var a:V; n:integer);
{ ввод данных в массив }
var i:integer;
begin
  Writeln('Вводите по одному ',n,' элементов массива ',s);
  for i:=1 to n do Readln(a[i])
end; 

procedure M_out(var a:V; n:integer; c:char);
{ выводит элементы, начинающиеся с указанного символа }
var i:integer;
begin
  Writeln('*** Слова на букву ',c,' ***');
  for i:=1 to n do
    if a[i][1]=c then Writeln(a[i]);
  Writeln
end; 

var
  s1,s2,s3:V;
begin
  M_in('S1',s1,n1);
  M_in('S2',s2,n2);
  M_in('S3',s3,n3);
  M_out(s1,n1,'В');
  M_out(s2,n2,'Ц');
  M_out(s3,n3,'А');
end.
4,7(74 оценок)
Ответ:
Okladakey
Okladakey
29.06.2021
Незнаю верно ли я все понял, но как вариант можно сделать так
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <iterator>
#include <algorithm>

bool DigitFirst(const std::string& rhs, const std::string& lhs)
{
    if (isdigit(rhs[0]) || isdigit(lhs[0]))
        return rhs < lhs;
}

bool LetterFirst(const std::string& rhs, const std::string& lhs)
{
    if (isalpha(rhs[0]) || isalpha(lhs[0]))
        return rhs < lhs;
}

const std::string TrueSort(std::string str, bool(*comparator)(const std::string&
rhs, const std::string& lhs))
{
    std::stringstream ss(str);
    std::vector<std::string> vstr(std::istream_iterator<std::string>(ss), {});
    std::sort(vstr.begin(), vstr.end(), comparator);
    ss.clear();
    std::copy(vstr.begin(), vstr.end(), std::ostream_iterator<std::string>(ss, " "));
    return ss.str();
}

int main()
{
    std::string first  = "position total 12345 2jz asd512fgh";
    std::string second = "year 10010 2018r r98k hello";
    std::cout << TrueSort(first,  DigitFirst ) << std::endl;
    std::cout << TrueSort(second, LetterFirst);
}
4,8(43 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ