Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Dima960522
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 6
1

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

27.05.2013, 22:46. Просмотров 581. Ответов 1
Метки нет (Все метки)

Задание: С клавиатуры вводятся четыре массива слов:
- существительные в именительном падеже единственного числа(СТОЛЯР-
КРАСНОДЕРЕВЩИК,СТУДЕНТ,ТОРМОЗ,КРЫША,КИСЛОТА,ШИЗА…);
- глаголы несовершенного вида в 1-м лице единственного числа (ЕСТ, ТРА-
ВИТ, КОСИТ, ПИЛИТ, ДОЛБИТ, ДОСТАЕТ);
- качественные прилагательные во множественном числе (ЯДОВИТЫЕ, ОТ-
ВРАТНЫЕ, ПРЕКРАСНЫЕ, УБОГИЕ, НЕВЗРАЧНЫЕ, ПРЕВОСХОД-
НЫЕ,ЧЕРТОВСКИЕ, ЗАМЕЧАТЕЛЬНЫЕ,…);
- существительные в винительном падеже множественного числа (КОЛОНКИ,
ДИСКЕТЫ, ГОЛОВЫ, ВЕТВИ, БАНКИ, МАШИНЫ, ДИСКОВОДЫ,,,,).
Выбирая из каждого массива с помощью датчика случайных чисел по одному
слову, составить и напечатать заданное количество текстовых строк.
Пример диалога с программой:
-Введите массив существительных в именительном падеже единственного чис-
ла;
- Введите глаголы несовершенного вида в 1-м лице единственного числа
- Введите качественные прилагательные во множественном числе;
- Введите существительные в винительном падеже множественного числа;
- Введите число предложений.
Результат работы программы:
ТОРМОЗ ДОСТАЕТ ОТВРАТНЫЕ МАШИНЫ
СТУДЕНТ КОСИТ ЗАМЕЧАТЕЛЬНЫЕ КОЛОНКИ

программа:
C++
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
#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;
    
}
Помогите исправить программу. Нужно массивы слов задавать непосредственно в консоли, а не к примеру char* sushim [] = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};

есть вот такой код:
C++
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
#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++;
}
}
и такая ошибка:
0
Миниатюры
Командная строка программы С.  Динамические массивы. Обработка символьных и  строковых данных  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 22:46
Ответы с готовыми решениями:

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц)
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой...

Обработка символьных данных
Условие задачи: Дана не пустая последовательность слов ,в каждом из которых от...

Обработка символьных данных
Распечатать строку, которая получается из введенной строки следующим образом:...

Обработка символьных данных
Пусть во входном потоке находится последовательность литер, заканчивающаяся...

Обработка символьных и строчных данных в С++
Дана строка. Определить длину самого длинного и самого короткого предложения....

1
Dima960522
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 6
28.05.2013, 02:02  [ТС] 2
ВСЕМ СПАСИБО, НАПИСАЛ САМ. ВОТ КОД, ЕСЛИ КОМУ-ТО НУЖЕН:


#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <locale>
using namespace std;
int main()
{
int i=0,k=0;
char* token;
int a,b=0,s1,s2,s3,s4,s11,s22,s33,s44;
const char razdeliteli[] =",";
char buff[BUFSIZ] ;

char* sushim[BUFSIZ];// = {"СТОЛЯР-КРАСНОДЕРЕВЩИК","СТУДЕНТ","ТОРМОЗ","КРЫША", "КИСЛОТА", "ШИЗА"};
char* glag [BUFSIZ];// = {"ЕСТ", "ТРАВИТ", "КОСИТ", "ПИЛИТ", "ДОЛБИТ", "ДОСТАЕТ"};
char* pril [BUFSIZ];// = {"ЯДОВИТЫЕ", "ОТВРАТНЫЕ", "ПРЕКРАСНЫЕ", "УБОГИЕ", "НЕВЗРАЧНЫЕ", "ПРЕВОСХОДНЫЕ","ЧЕРТОВСКИЕ", "ЗАМЕЧАТЕЛЬНЫЕ"};
char* sushvin [BUFSIZ];// = {"КОЛОНКИ", "ДИСКЕТЫ", "ГОЛОВЫ", "ВЕТВИ", "БАНКИ", "МАШИНЫ", "ДИСКОВОДЫ"};

for(int i=0;i<BUFSIZ;i++)
{
sushim[i]=new char[BUFSIZ];
glag[i]=new char[BUFSIZ];
pril[i]=new char[BUFSIZ];
sushvin[i]=new char[BUFSIZ];
}


setlocale(LC_ALL, ".1251");
cout <<"Введите существительные в им. падеже: \n" ;
gets(buff);

token=strtok(buff,razdeliteli);//Настраиваем на первую лексему

while(token!=NULL)//Пока не конец строки с лексемами
{
strcpy(sushim[k], token); // Копируем лексему в массив существительных
token=strtok(NULL,razdeliteli);//Переход к следующей лексеме
k++;
}
memset(buff, 0, sizeof(buff));
s11=k;
k=0;

setlocale(LC_ALL, ".1251");
cout <<"Введите глаголы: \n" ;
gets(buff);

token=strtok(buff,razdeliteli);//Настраиваем на первую лексему

while(token!=NULL)//Пока не конец строки с лексемами
{
strcpy(glag[k], token); // Копируем лексему в массив
token=strtok(NULL,razdeliteli);//Переход к следующей лексеме
k++;
}
memset(buff, 0, sizeof(buff));
s22=k;
k=0;


setlocale(LC_ALL, ".1251");
cout <<"Введите прилагательные: \n" ;
gets(buff);

token=strtok(buff,razdeliteli);//Настраиваем на первую лексему

while(token!=NULL)//Пока не конец строки с лексемами
{
strcpy(pril[k], token); // Копируем лексему в массив
token=strtok(NULL,razdeliteli);//Переход к следующей лексеме
k++;
}
memset(buff, 0, sizeof(buff));
s33=k;
k=0;


setlocale(LC_ALL, ".1251");
cout <<"Введите существитльные в вин. падеже: \n" ;
gets(buff);

token=strtok(buff,razdeliteli);//Настраиваем на первую лексему

while(token!=NULL)//Пока не конец строки с лексемами
{
strcpy(sushvin[k], token); // Копируем лексему в массив
token=strtok(NULL,razdeliteli);//Переход к следующей лексеме
k++;
}
memset(buff, 0, sizeof(buff));
s44=k;
k=0;


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;
setlocale(LC_ALL, ".866");
cout << " = " <<sushim [s1%s11];
setlocale(LC_ALL, ".866");
cout <<" " << glag [s2%s22];
setlocale(LC_ALL, ".866");
cout <<" " << pril [s3%s33];
setlocale(LC_ALL, ".866");
cout <<" " << sushvin [s4%s44] << "\n";
}
return 0;

}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 02:02

Обработка символьных и строчных данных в С
Дано строчку символов (строчку ввести с клавиатуры). Заменить в строчке каждую...

Обработка строковых данных с использованием внешних файлов
Люди добрые, есть такая проблемка, в общем имеется текст: &quot;The Old Man and the...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru