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

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

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

Строковые. помогите исправить код - C++

22.12.2010, 14:03. Просмотров 749. Ответов 4
Метки нет (Все метки)

Здравствуйте, проблемка есть

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
58
59
60
61
62
63
64
65
66
// Выделить из строки str1 все слова, начинающиеся с согласной буквы, а из строки str2 – слова, начинающиеся с гласной. 
// Образовать строку str3, состоящую из выделенных слов обеих строк.  Строки str1 и str2  программа должна получать за счет ввода. 
 
#include <iostream>
#include <math.h>
#include <string.h>
#include <E:\text.h>
 
using namespace std;
 
char glas[]={"AaEeIiOoUuYy"};
char soglas[]={"BbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvWwXxZz"};
bool prover(char a, char *b);
void f2(char str, char *c, char *rezult);
bool prover(char a, char *b)
{
    int j;
    for (j=0;j<strlen(b);j++)
        if (a==b[j])
            return true;
    return false;
}
void f2(char *str, char *c, char *rezult)
{
    char a;
    int i=0,j,n;
    n=strlen(str);
    j=strlen(rezult)-1;
    do
    {
        a=str[i];
        if (prover(a,c))
        {
            do
            {
                rezult[j]=str[i];
                i++;
                j++;
            }
            while (str[i]!=' '&&i<n);
            j++;
            rezult[j]=' ';
        }
        else
        {
            do
                i++;
            while (str[i]!=' '&&i<=n);
        }
        i++;
    }
    while (i<n);
    rezult[j+1]='\0';
}
int main(void)
{
    char str[80],str2[80],rezult[80];
    rezult[1]='\0';
    cout<<T("Введите первую строку")<<endl;
    cin.getline(str,80);
    cout<<T("Введите вторую строку")<<endl;
    cin.getline(str2,80);
    f2(str, soglas, rezult);
    f2(str2, glas, rezult);
    cout<<T("Новая строка\n")<<rezult<<endl;
}
Вывод:

Введите первую строку
It's fucking great
Введите вторую строку
It is what it is
Новая строка
fucking╠great╠It╠is╠it╠is╠
Для продолжения нажмите любую клавишу . . .


╠ как убрать этот мусор? из-за чего он появляется..

И еще вот функция:

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
// Написать и протестировать функцию STRP(str1,str2), которая возвращает указатель на последнее .. // вхождение символа из строки str2  в строку str1. Если ни один символ из строки str2 не входит в 
// строку str1, то возвратить NULL.
 
char *strp(char *str1, char *str2)
{
int n, m;
int k,l;
char ns;
n=strlen(str1),m=strlen(str2);
for (int j=0;j<m;j++)
for (int i=0;i<n;i++)
{
ns=str1[0];
k=0;
if(str1[i]==str2[j])
{
k=i;
for(l=0;l<n;l++)
{
str1[l]=str1[k];
k++;
}
return str1;
}
}
return NULL;
}
К ней нужно дописать мэйн, не совсем понятно что там нужно.. Помогите, пожалуйста, был бы очень признателен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2010, 14:03     Строковые. помогите исправить код
Посмотрите здесь:

Помогите исправить ошибку C++
C++ помогите исправить.....
C++ Помогите Исправить Ошибку
помогите исправить ошибки C++
C++ Помогите исправить алгоритм (есть код)
Помогите дописать( исправить код) алгоритм C++
C++ Делаю лабораторную работу, написал код программы, принцип думаю верен, а вот с синтаксисом проблемы. Помогите исправить ошибки
Помогите исправить код заполнения матрицы случайными числами C++
C++ Помогите исправить код, не запускается программа изза неизвестных s и i
C++ ПОМОГИТЕ ИСПРАВИТЬ КОД НА C++!
C++ Исправить ошибки, строковые типы данных
Получив на вход число x, напечатает два числа a и b (помогите исправить код) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
22.12.2010, 14:43     Строковые. помогите исправить код #2
В код сильно вникать было неохото, поэтому отвечу только на заданный вопрос: этот мусор из-за того, что вы нечетко в цикле расставили индексы, у вас j убежало)
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
void f2(char *str, char *c, char *rezult)
{
        char a;
        int i=0,j,n;
        n=strlen(str);
        j=strlen(rezult)-1;
        do
        {
                a=str[i];
                if (prover(a,c))
                {
                        do
                        {
                                rezult[j]=str[i];
                                i++;
                                j++;
                        }
                        while (str[i]!=' '&&i<n);
                        rezult[j]=' ';
                        j++;
                }
                else
                {
                        do
                                i++;
                        while (str[i]!=' '&&i<=n);
                }
                i++;
        }
        while (i<n);
        rezult[j]='\0';
j245
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 36
22.12.2010, 15:27  [ТС]     Строковые. помогите исправить код #3
Спасибо, мусора не стало, но

Введите первую строку
baa aaa faa
Введите вторую строку
sss ooo vvv
Новая строка
baa faaooo
Для продолжения нажмите любую клавишу . . .

Не подскажите? )
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
22.12.2010, 15:47     Строковые. помогите исправить код #4
Цитата Сообщение от j245 Посмотреть сообщение
Спасибо, мусора не стало, но

Введите первую строку
baa aaa faa
Введите вторую строку
sss ooo vvv
Новая строка
baa faaooo
Для продолжения нажмите любую клавишу . . .

Не подскажите? )
В main изначально проинициализируйте rezult так
C++
1
rezult[80]={'\0'}
а в f2 еще подправьте
C++
1
j=strlen(rezult);
j245
0 / 0 / 0
Регистрация: 17.11.2010
Сообщений: 36
22.12.2010, 17:52  [ТС]     Строковые. помогите исправить код #5
Да, теперь все как надо, спасибо большое)

Со 2м можете помочь? Правда ф-ия неидеальна, по идее доработать возможно, но со строковыми большие проблемы..

Добавлено через 1 час 39 минут
str2 выводит строку начиная с этого символа, как то так..
Yandex
Объявления
22.12.2010, 17:52     Строковые. помогите исправить код
Ответ Создать тему
Опции темы

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