Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание: С клавиатуры вводятся четыре массива слов: - существительные в именительном падеже единственного числа(СТОЛЯР- КРАСНОДЕРЕВЩИК,СТУДЕНТ,ТОРМОЗ,КРЫША,КИСЛОТА,ШИЗА…); - глаголы несовершенного вида в 1-м лице единственного числа (ЕСТ, ТРА- ВИТ, КОСИТ, ПИЛИТ, ДОЛБИТ, ДОСТАЕТ); - качественные прилагательные во множественном числе (ЯДОВИТЫЕ, ОТ- ВРАТНЫЕ, ПРЕКРАСНЫЕ, УБОГИЕ, НЕВЗРАЧНЫЕ, ПРЕВОСХОД- НЫЕ,ЧЕРТОВСКИЕ, ЗАМЕЧАТЕЛЬНЫЕ,…); - существительные в винительном падеже множественного числа (КОЛОНКИ, ДИСКЕТЫ, ГОЛОВЫ, ВЕТВИ, БАНКИ, МАШИНЫ, ДИСКОВОДЫ,,,,). Выбирая из каждого массива с помощью датчика случайных чисел по одному слову, составить и напечатать заданное количество текстовых строк. Пример диалога с программой: -Введите массив существительных в именительном падеже единственного чис- ла; - Введите глаголы несовершенного вида в 1-м лице единственного числа - Введите качественные прилагательные во множественном числе; - Введите существительные в винительном падеже множественного числа; - Введите число предложений. Результат работы программы: ТОРМОЗ ДОСТАЕТ ОТВРАТНЫЕ МАШИНЫ СТУДЕНТ КОСИТ ЗАМЕЧАТЕЛЬНЫЕ КОЛОНКИ программа:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <locale>
  5. using namespace std;
  6. int main()
  7. {
  8. char* sushim [] = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};
  9. char* glag [] = {"ЕСТ", "ТРАВИТ", "КОСИТ", "ПИЛИТ", "ДОЛБИТ", "ДОСТАЕТ"};
  10. char* pril [] = {"ЯДОВИТЫЕ", "ОТВРАТНЫЕ", "ПРЕКРАСНЫЕ", "УБОГИЕ", "НЕВЗРАЧНЫЕ", "ПРЕВОСХОДНЫЕ","ЧЕРТОВСКИЕ", "ЗАМЕЧАТЕЛЬНЫЕ"};
  11. char* sushvin [] = {"КОЛОНКИ", "ДИСКЕТЫ", "ГОЛОВЫ", "ВЕТВИ", "БАНКИ", "МАШИНЫ", "ДИСКОВОДЫ"};
  12. int a,b=0,s1,s2,s3,s4;
  13. setlocale(LC_ALL, ".1251");
  14. cout <<"Сколько строк вывести?\n" ;
  15. scanf("%d", &a);
  16. srand(0);
  17. while (a!=b)
  18. {
  19. b++;
  20. s1=rand();
  21. s2=rand();
  22. s3=rand();
  23. s4=rand();
  24. setlocale(LC_ALL, ".1251");
  25. cout <<" Текст "<<b << " = " <<sushim [s1%6];
  26. setlocale(LC_ALL, ".1251");
  27. cout <<" " << glag [s2%6];
  28. setlocale(LC_ALL, ".1251");
  29. cout <<" " << pril [s3%8];
  30. setlocale(LC_ALL, ".1251");
  31. cout <<" " << sushvin [s4%7] << "\n";
  32. }
  33. return 0;
  34. }
Помогите исправить программу. Нужно массивы слов задавать непосредственно в консоли, а не к примеру char* sushim [] = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"}; есть вот такой код:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <locale>
  5. using namespace std;
  6. int main()
  7. {
  8. int i=0;
  9. char* token;
  10. const char razdeliteli[] =",";
  11. char buff [BUFSIZ];
  12. char* sushim [BUFSIZ];// = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};
  13. char* glag [BUFSIZ];// = {"ЕСТ", "ТРАВИТ", "КОСИТ", "ПИЛИТ", "ДОЛБИТ", "ДОСТАЕТ"};
  14. char* pril [BUFSIZ];// = {"ЯДОВИТЫЕ", "ОТВРАТНЫЕ", "ПРЕКРАСНЫЕ", "УБОГИЕ", "НЕВЗРАЧНЫЕ", "ПРЕВОСХОДНЫЕ","ЧЕРТОВСКИЕ", "ЗАМЕЧАТЕЛЬНЫЕ"};
  15. char* sushvin [BUFSIZ];// = {"КОЛОНКИ", "ДИСКЕТЫ", "ГОЛОВЫ", "ВЕТВИ", "БАНКИ", "МАШИНЫ", "ДИСКОВОДЫ"};
  16. int a,b=0,s1,s2,s3,s4;
  17. setlocale(LC_ALL, ".1251");
  18. cout «"Введите существительные в им. падеже: \n" ;
  19. gets(buff);
  20. token=strtok(buff,razdeliteli);//Настраиваем на первую лексему
  21. while(token!=NULL)//Пока не конец строки с лексемами
  22. {
  23. strcpy(sushim[i], token); // Копируем лексему в массив существительных
  24. i++;
  25. }
  26. }
и такая ошибка:

Решение задачи: «Командная строка программы С. Динамические массивы. Обработка символьных и строковых данных»

textual
Листинг программы
  1. char buff[ BUFSIZ ];
  2. fgets(buff, stdin);

Объяснение кода листинга программы

  1. Создается массив типа char с именем buff и размером BUFSIZ.
  2. В этот массив считывается строка из стандартного ввода (stdin) с помощью функции fgets.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы