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

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

Восстановить пароль Регистрация
 
NinoZombie
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8
29.05.2011, 10:33     Строки на C++ #1
Очень прошу помочь найти ошибку!)
Нужно написать программу на языке 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++ Рассортировать строки динамической матрицы по наибольшему элементу строки.
C++ Строки,копирование всех цифр из одной строки в другую
C++ Отсортировать цифры, символы и буквы из строки в отдельные строки
Разработка функции (размещение строки s1 в середине строки s2 длиной l) C++
Строки (Расположить слова строки в порядке, обратном исходному) C++
C++ Структуры и строки (как поменять значение строки в структуре?)
C++ Вводятся 2 строки. Перевернуть обе строки, склеить и вывести

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 23:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru