Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NinoZombie
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
#1

Строки на C++ - C++

29.05.2011, 10:33. Просмотров 493. Ответов 0
Метки нет (Все метки)

Очень прошу помочь найти ошибку!)
Нужно написать программу на языке C++ с использованием стандартных функций для обработки строк.(не CString). Писать в Microsoft Visual C++ 6.

Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символы. Словом считать последовательность символов, не содержащую пробел. Выдать слова текста и их длины. Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 символов. При этом все строчные буквы заменить на заглавные буквы.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
int str_sl(char [200],char*,char*,char*[20]);
char* is_latin(char* [20],int);
char* rezl;
 
void main()
{
    char x[200],*mslov[20],*rezl;
    int i,n;
    cout<<"Input string"<<endl;
    cin>>x;
    n=str_sl(x,",",".",mslov);
    for (i=0;i<n;i++)
    {
        cout<<"Word number "<<i+1<<" "<<mslov[i]<<" length  "<<strlen(mslov[i])<<endl;
    };
    rezl=is_latin(mslov,n);
    cout<<rezl<<endl;
}
 
//----------------------------------------------------
int str_sl(char x[200],char* rsl,char* kstr,char* mslov[20])
{int n=0;
char *adrz;
do {
adrz=strstr(x,rsl);
if (adrz==NULL)
adrz=strstr(x,kstr);
mslov[n]=new char[adrz-x];
strncpy(mslov[n],x,adrz-x);
mslov[n][adrz-x]='\0';
strcpy(x,adrz+1);
n++;
} while(strcmp(x,"")!=0);
return n;
}
 
//---------------------------------------------------------
char* is_latin(char* mslov[20],int n)
{
char buk[27]="abcdefghijklmnopqrstuvwxyz";
int i=0;
for(i=0;i<n;i++) 
{
    if(strspn(mslov[i],buk)==strlen(mslov[i])&&strlen(mslov[i])<=7) 
    {
        strcat(rezl,mslov[i]);
        strcat(rezl," ");
    }
}
strupr(rezl);
return rezl;
}
 
//---------------------------------------------------
вот программа целиком. При компиляции 0 ошибок. Когда запускаю и ввожу слова выводит только их длины, а rezl не выводит-выдает ошибку.

Добавлено через 2 часа 27 минут
Подскажите пожалуйста что я не так делаю

Добавлено через 43 минуты
YEAH, решил сам зря чегото мудрил с функцией is_latin.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
int str_sl(char [200],char*,char*,char*[20]);
void is_latin(char* [20],int);
char* rezl;
 
void main()
{
    char x[200],*mslov[20];
    char buk[27]="abcdefghijklmnopqrstuvwxyz";
    int i,n;
    cout<<"Input string"<<endl;
    cin>>x;
    n=str_sl(x,",",".",mslov);
    for (i=0;i<n;i++)
    {
        cout<<"Word number "<<i+1<<" "<<mslov[i]<<" length  "<<strlen(mslov[i])<<endl;
    };
    is_latin(mslov,n);
    
}
 
//----------------------------------------------------
int str_sl(char x[200],char* rsl,char* kstr,char* mslov[20])
{int n=0;
char *adrz;
do {
adrz=strstr(x,rsl);
if (adrz==NULL)
adrz=strstr(x,kstr);
mslov[n]=new char[adrz-x];
strncpy(mslov[n],x,adrz-x);
mslov[n][adrz-x]='\0';
strcpy(x,adrz+1);
n++;
} while(strcmp(x,"")!=0);
return n;
}
 
//---------------------------------------------------------
void is_latin(char* mslov[20],int n)
{
char buk[27]="abcdefghijklmnopqrstuvwxyz";
int i=0;
for(i=0;i<n;i++) 
{
    if(strspn(mslov[i],buk)==strlen(mslov[i])&&strlen(mslov[i])<=7) 
        
    cout<<strupr(mslov[i])<<endl;
 
}
}
//---------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2011, 10:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки на C++ (C++):

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки - C++
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней - C++
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки - Java
Помогите пожалуйста! 1)Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки. 2)Дана...

Ввести строки и через n символов первой строки вставить вторую строку, и так до конца строки - C++ Builder
Помогите исправить баг задача состоит в следующем :ввести строку и простроку тоесть две строки и надо через (n) символов первой строки...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2011, 10:33
Привет! Вот еще темы с ответами:

Сравнить строки, первый несовпадающий элемент строки-приемника записать в регистр AL, строки-источника - в DL - Assembler
Помогите написать программу на ассемблерене совсем еще разобрался с этим задание: Ввести с клавиатуры две строки одноразрядных...

Слить две строки, вставив символы одной строки между символами другой строки - Pascal
Строка a из n символов лексикографически меньше строки b из n символов, если существует такой индекс j, что aj &lt; bj, а для всех i &lt; j ai =...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках. - Turbo Pascal
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши &quot;Ввод&quot;. Программа должна определить длину введенной...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй - Turbo Pascal
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...


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

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

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