Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных - C (СИ)
Формулировка задачи:
Задание: С клавиатуры вводятся четыре массива слов:
- существительные в именительном падеже единственного числа(СТОЛЯР-
КРАСНОДЕРЕВЩИК,СТУДЕНТ,ТОРМОЗ,КРЫША,КИСЛОТА,ШИЗА…);
- глаголы несовершенного вида в 1-м лице единственного числа (ЕСТ, ТРА-
ВИТ, КОСИТ, ПИЛИТ, ДОЛБИТ, ДОСТАЕТ);
- качественные прилагательные во множественном числе (ЯДОВИТЫЕ, ОТ-
ВРАТНЫЕ, ПРЕКРАСНЫЕ, УБОГИЕ, НЕВЗРАЧНЫЕ, ПРЕВОСХОД-
НЫЕ,ЧЕРТОВСКИЕ, ЗАМЕЧАТЕЛЬНЫЕ,…);
- существительные в винительном падеже множественного числа (КОЛОНКИ,
ДИСКЕТЫ, ГОЛОВЫ, ВЕТВИ, БАНКИ, МАШИНЫ, ДИСКОВОДЫ,,,,).
Выбирая из каждого массива с помощью датчика случайных чисел по одному
слову, составить и напечатать заданное количество текстовых строк.
Пример диалога с программой:
-Введите массив существительных в именительном падеже единственного чис-
ла;
- Введите глаголы несовершенного вида в 1-м лице единственного числа
- Введите качественные прилагательные во множественном числе;
- Введите существительные в винительном падеже множественного числа;
- Введите число предложений.
Результат работы программы:
ТОРМОЗ ДОСТАЕТ ОТВРАТНЫЕ МАШИНЫ
СТУДЕНТ КОСИТ ЗАМЕЧАТЕЛЬНЫЕ КОЛОНКИ
программа:
Помогите исправить программу. Нужно массивы слов задавать непосредственно в консоли, а не к примеру char* sushim [] = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};
есть вот такой код:
и такая ошибка:
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- #include <locale>
- using namespace std;
- int main()
- {
- char* sushim [] = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};
- char* glag [] = {"ЕСТ", "ТРАВИТ", "КОСИТ", "ПИЛИТ", "ДОЛБИТ", "ДОСТАЕТ"};
- char* pril [] = {"ЯДОВИТЫЕ", "ОТВРАТНЫЕ", "ПРЕКРАСНЫЕ", "УБОГИЕ", "НЕВЗРАЧНЫЕ", "ПРЕВОСХОДНЫЕ","ЧЕРТОВСКИЕ", "ЗАМЕЧАТЕЛЬНЫЕ"};
- char* sushvin [] = {"КОЛОНКИ", "ДИСКЕТЫ", "ГОЛОВЫ", "ВЕТВИ", "БАНКИ", "МАШИНЫ", "ДИСКОВОДЫ"};
- int a,b=0,s1,s2,s3,s4;
- setlocale(LC_ALL, ".1251");
- cout <<"Сколько строк вывести?\n" ;
- scanf("%d", &a);
- srand(0);
- while (a!=b)
- {
- b++;
- s1=rand();
- s2=rand();
- s3=rand();
- s4=rand();
- setlocale(LC_ALL, ".1251");
- cout <<" Текст "<<b << " = " <<sushim [s1%6];
- setlocale(LC_ALL, ".1251");
- cout <<" " << glag [s2%6];
- setlocale(LC_ALL, ".1251");
- cout <<" " << pril [s3%8];
- setlocale(LC_ALL, ".1251");
- cout <<" " << sushvin [s4%7] << "\n";
- }
- return 0;
- }
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- #include <locale>
- using namespace std;
- int main()
- {
- int i=0;
- char* token;
- const char razdeliteli[] =",";
- char buff [BUFSIZ];
- char* sushim [BUFSIZ];// = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};
- char* glag [BUFSIZ];// = {"ЕСТ", "ТРАВИТ", "КОСИТ", "ПИЛИТ", "ДОЛБИТ", "ДОСТАЕТ"};
- char* pril [BUFSIZ];// = {"ЯДОВИТЫЕ", "ОТВРАТНЫЕ", "ПРЕКРАСНЫЕ", "УБОГИЕ", "НЕВЗРАЧНЫЕ", "ПРЕВОСХОДНЫЕ","ЧЕРТОВСКИЕ", "ЗАМЕЧАТЕЛЬНЫЕ"};
- char* sushvin [BUFSIZ];// = {"КОЛОНКИ", "ДИСКЕТЫ", "ГОЛОВЫ", "ВЕТВИ", "БАНКИ", "МАШИНЫ", "ДИСКОВОДЫ"};
- int a,b=0,s1,s2,s3,s4;
- setlocale(LC_ALL, ".1251");
- cout «"Введите существительные в им. падеже: \n" ;
- gets(buff);
- token=strtok(buff,razdeliteli);//Настраиваем на первую лексему
- while(token!=NULL)//Пока не конец строки с лексемами
- {
- strcpy(sushim[i], token); // Копируем лексему в массив существительных
- i++;
- }
- }
Решение задачи: «Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных»
textual
Листинг программы
- char buff[ BUFSIZ ];
- fgets(buff, stdin);
Объяснение кода листинга программы
- Создается массив типа char с именем buff и размером BUFSIZ.
- В этот массив считывается строка из стандартного ввода (stdin) с помощью функции fgets.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д