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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.90
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
#1

Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! - C++

15.11.2009, 00:42. Просмотров 2670. Ответов 44
Метки нет (Все метки)

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
67
68
#include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
 
void main(void)
{
clrscr();
char our_string[100];
char my_string[] = "exit";
int strings_count = 0;// shetchik strok
int words_count = 0;// shetchik slov
char *words;
char iskomoe_slovo[1000];
 
int iskomaya_stroka[100];
 
 
int i;
int ok;
 
cout << "Vvedite iskomoe slovo: " << endl;
cin >> iskomoe_slovo;
cout << "Vvedite text, dlya vihoda naberite 'exit': " << endl;
gets(our_string);
int j=0;  
while(strcmp(our_string,my_string)!=0){// esli nasha stroka = exit, to vihodim
words = strtok(our_string," . ; ? ! , ");
strings_count++;// uvelichivaem colvo strok na 1
    while(words != NULL){
        words_count++;// colvo slov uvelichivaem na 1
 
                ok=1;
                for(i=0;i <= strlen(iskomoe_slovo)-1;i++){
                
                    if((iskomoe_slovo[i] == words[i])&&(ok==1)){
                 
                        ok = 1;
                    }
                    else{
                        ok = 0;
                    }
                }
             if(ok==1)
{
 
 
 
    iskomaya_stroka[j]=strings_count;
                        
            j++;  
}
 
    words = strtok(NULL," . ; ? ! , ");// razbivaem stroku
    }
gets(our_string);// eshe raz prosim vvesti stroku
}
 
 
cout << endl << "strings count = " << strings_count;
cout << endl << "words count = " << words_count;
cout << endl << "iskomie stroki pod nomerami: " << endl;
        for(i=0;i<j;i++)        // вывод на экран номеров
        cout<<iskomaya_stroka[i]<<" ";
 
getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2009, 00:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! (C++):

С++.Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! - C++
И exit должен выходить после ввода текста. #include&lt;iostream.h&gt; #include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; ...

Подскажите, что мне надо поменять в моем коде, чтобы найти сумму по столбцам? - C++
Вот моя программа, я тут нахожу сумму всех чисел, а мне надо найти сумму по столбцам, что мне изменить? #include &lt;stdio.h&gt; int...

Считать текст из файла и вывести на экран сначала вопросительные, а потом восклицательные предложения - C++
доброго времени суток) оч нужна помощь в составление программы!я с++ плохо понимаю(скорее всего вообще не понимаю)=) помогите...

Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные - C++
Даны целые числа n одномерного массива. Полная программа на c++.

Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа - C++
Подскажите, пожалуйста, нужно ли что-то поменять или добавить в программу? Дан файл f, компоненты которого являются целыми числами....

Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы - C++
Ребята , помогите : нужно составить алгоритм и программу преобразования массива A, таким образом , чтобы сначала распологались четные , а...

44
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 16:01 #16
вижу я, другим занят, видешь подпись... освобожусь сделаю
0
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 18:28  [ТС] #17
Цитата Сообщение от TanT Посмотреть сообщение
вижу я, другим занят, видешь подпись... освобожусь сделаю
Язык у меня С++...Код Андрейки выводит ошибки,там через классы надо делать,менять...
Насчет редактирования,лучше отредактировать?так думаешь не пройдет?..

Пожалуйста добавь комментарии на последнем примере,на все строки которые ты добавил,просто очень надо описать программу...

Добавлено через 7 минут
TanT, Пожалуйста добавь комментарии на последнем примере,на все строки которые ты добавил,просто очень надо описать программу...

Добавлено через 58 секунд
TanT, Пожалуйста добавь комментарии на последнем примере,на все строки которые ты добавил,просто очень надо описать программу...
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 18:32 #18
во-первых, какие ошибки выводит у тебя код Андрейки?
попробуй заменить первую строку #include <iostream> на #include <iostream.h>

ты знаешь контейнер string ?
0
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 19:41  [ТС] #19
Цитата Сообщение от TanT Посмотреть сообщение
во-первых, какие ошибки выводит у тебя код Андрейки?
попробуй заменить первую строку #include <iostream> на #include <iostream.h>

ты знаешь контейнер string ?
Контейнер я не знаю,там может код не подходит на С++?
Ты мне комментарии к последней программе напиши пожалуйста...
И еще вопрос,как сделать,чтобы после проверки текста если нет искомого слова вывести "искомое слово не найдено" в твоем примере?

Добавлено через 9 минут
TanT, Ошибки разные,от замены includ-а ошибка не исправляется,а выводит файл "iostrem"-а
не используется...
Может просто тот пример оставить,думаешь он не прокатит?
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 19:52 #20
срИпя сердцем, дописал коментарии к своим строкам, понимаю что вы ещё юны, но код желательно оптимизировать

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
67
68
69
70
71
72
73
#include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
 
 
void main(void)
{
    //clrscr();
    char our_string[100][100], buf[100]="";
    char my_string[] = "exit";
    int strings_count = 0;// shetchik strok
    int words_count = 0;// shetchik slov
    char *words;
    char iskomoe_slovo[1000];
 
    int iskomaya_stroka[100];
    int cnt=0;
 
    int i;
    int ok;
    cout << "Vvedite text, dlya vihoda naberite 'exit': " << endl;
    do                                                  // цикл... 
    {
        gets(our_string[cnt++]);    // ...считывает строки в массив our_string, инкрементируя cnt...
    } while (strcmp(our_string[cnt-1],my_string)!=0);       //...пока не встетит слово my_string
 
 
    cout << "Vvedite iskomoe slovo: " << endl;
    cin >> iskomoe_slovo;
 
    int j=0;  
    for (int c=0; c<cnt; c++)           // перебор всех строк из массива our_string
    { // это всё твоё
        words = strtok(our_string[c]," . ; ? ! , ");
        strings_count++;// uvelichivaem colvo strok na 1
        while(words != NULL){
            words_count++;// colvo slov uvelichivaem na 1
 
            ok=1;
            for(i=0;i <= strlen(iskomoe_slovo)-1;i++){
 
                if((iskomoe_slovo[i] == words[i])&&(ok==1)){
 
                    ok = 1;
                }
                else{
                    ok = 0;
                }
            }
            if(ok==1)
            {
                iskomaya_stroka[j]=strings_count;
 
                j++;  
            }
 
            words = strtok(NULL," . ; ? ! , ");// razbivaem stroku
        }
    } // перебор по всему массиву
 
 
 
 
    cout << endl << "strings count = " << strings_count;
    cout << endl << "words count = " << words_count;
    cout << endl << "iskomie stroki pod nomerami: " << endl;
    for(i=0;i<j;i++)                // вывод на экран номеров
        cout<<iskomaya_stroka[i]<<" ";
 
    getch();
}
Добавлено через 1 минуту
про "искомое слово не найдено", если счётчик слов нулевой выводи эту фразу. делов то
0
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 19:58  [ТС] #21
TanT, Про "искомое слово не найдено",напиши пож. код,я писал,не идет...
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 20:11 #22
побереги мои нервы, у тебя алгоритм ещё не верный. попробуй ввести слово "mama" и искать "m" он скажет что есть совпадение

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
 
 
void main(void)
{
    //clrscr();
    char our_string[100][100], buf[100]="";
    char my_string[] = "exit";
    int strings_count = 0;// shetchik strok
    int words_count = 0;// shetchik slov
    char *words;
    char iskomoe_slovo[1000];
 
    int iskomaya_stroka[100];
    int cnt=0;
 
    int i;
    int ok;
    cout << "Vvedite text, dlya vihoda naberite 'exit': " << endl;
    do                                                  // цикл... 
    {
        gets(our_string[cnt++]);    // ...считывает строки в массив our_string, инкрементируя cnt...
    } while (strcmp(our_string[cnt-1],my_string)!=0);       //...пока не встетит слово my_string
 
 
    cout << "Vvedite iskomoe slovo: " << endl;
    cin >> iskomoe_slovo;
 
    int j=0;  
    for (int c=0; c<cnt-1; c++)         // перебор всех строк из массива our_string
    { // это всё твоё
        words = strtok(our_string[c]," . ; ? ! , ");
        strings_count++;// uvelichivaem colvo strok na 1
        while(words != NULL){
            words_count++;// colvo slov uvelichivaem na 1
 
            ok=1;
            for(i=0;i <= strlen(iskomoe_slovo)-1;i++){
 
                if((iskomoe_slovo[i] == words[i])&&(ok==1)){
 
                    ok = 1;
                }
                else{
                    ok = 0;
                }
            }
            if(ok==1)
            {
                iskomaya_stroka[j]=strings_count;
 
                j++;  
            }
 
            words = strtok(NULL," . ; ? ! , ");// razbivaem stroku
        }
    } // перебор по всему массиву
 
    cout << endl << "strings count = " << strings_count;
    cout << endl << "words count = " << words_count;
    if (!j)             // если счётчик слов равен нулю
    {
        cout<<"\niskomie slovo ne naideno \n";
    }
    else  // иначе твое
    {
        cout << endl << "\niskomie stroki pod nomerami: " << endl;
        for(i=0;i<j;i++)                // вывод на экран номеров
            cout<<iskomaya_stroka[i]<<" ";
    }
 
 
    
 
    
    
 
    getch();
}
1
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 20:56  [ТС] #23
TanT, Блин,а как его исправить?
Помоги пожалуйста,я не знаю что делать?

Добавлено через 31 минуту
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, Блин,а как его исправить?
Помоги пожалуйста,я не знаю что делать?
Как исправить то?
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 21:18 #24
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
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
 
using namespace std;
void main(void)
{
    //clrscr();
    char our_string[100][100];
    char my_string[] = "exit";
    int strings_count = 0;// shetchik strok
    int words_count = 0;// shetchik slov
    char *words;
    char iskomoe_slovo[100];
 
    int iskomaya_stroka[100];
    int cnt=0;
 
    int i;
    int ok;
    cout << "Vvedite text, dlya vihoda naberite 'exit': " << endl;
    do                                                  // цикл... 
    {
        gets(our_string[cnt]);  // ...считывает строки в массив our_string, инкрементируя cnt...
        ++cnt;
    } while (strcmp(our_string[cnt-1],my_string)!=0);       //...пока не встетит слово my_string
 
 
    cout << "Vvedite iskomoe slovo: " << endl;
    cin >> iskomoe_slovo;
 
    int j=0;  
    for (int c=0; c<cnt-1; c++)         // перебор всех строк из массива our_string
    { // это всё твоё
        words = strtok(our_string[c]," . ; ? ! , ");
        strings_count++;// uvelichivaem colvo strok na 1
        while(words != NULL)
        {
            words_count++;// colvo slov uvelichivaem na 1
            if(!strcmp(iskomoe_slovo,words))        // если искомое стролово совпало с рассматриваемым
            {
                iskomaya_stroka[j++]=strings_count;     // увеличиваем счётчик
            }
            words = strtok(NULL," . ; ? ! , ");// razbivaem stroku
        }
 
    } // перебор по всему массиву
 
    cout << endl << "strings count = " << strings_count;
    cout << endl << "words count = " << words_count;
    if (!j)             // если счётчик слов равен нулю
    {
        cout<<"\niskomie slovo ne naideno \n";
    }
    else
    {
        cout << endl << "\niskomie stroki pod nomerami: " << endl;
        for(i=0;i<j;i++)                // вывод на экран номеров
            cout<<iskomaya_stroka[i]<<" ";
    }
 
    getch();
}
Добавлено через 1 минуту
что делать? учиться, учиться и ещё раз учиться, как дедушка Ленин завещал
1
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
15.11.2009, 21:49 #25
ух интересно всё таки чем мой код не прокатит то ) VC++ 2008 его хавает на ура прям )
0
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 22:12  [ТС] #26
TanT, Благодарю за все,слова твои учту!!!

Добавлено через 3 минуты
Андрейка, У меня он зачем то не идет,выдает ошибки с std,и с классом,если создать класс std пишет неверное выражение...

Добавлено через 2 минуты
TanT, А вместо buf у нас теперь что?
И our_string[100][100]-это мы создали двумерный массив?
Еще переменные cnt и с,для чего они используются?откомментируй пожалуйста...

Добавлено через 15 минут
Андрейка, Программа твоя выводит только искомое слово,а мне надо еще все строки и слова...
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.11.2009, 05:42 #27
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, А вместо buf у нас теперь что?
И our_string[100][100]-это мы создали двумерный массив?
Еще переменные cnt и с,для чего они используются?откомментируй пожалуйста...
buf отвалился за ненедобностью,
our_string[100][100]- это двумерный массив строк
cnt - счётчик строк
с - это текущий номер строки в цикле пербора всех строк

Цитата Сообщение от ромыч Посмотреть сообщение
Андрейка, Программа твоя выводит только искомое слово,а мне надо еще все строки и слова...
тут он прав, надо ещё в контейнер типа вектор строки загонят и перебором, но молодёж пока ещё этого не знает. хорошо что хоть пытаются, что-то делать, все собственно с нуля начинали.
0
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
16.11.2009, 12:40  [ТС] #28
TanT, О'к,объясни пож. почему двумерный массив используем,а не одномерный?...
Но еще вот здесь if(!strcmp(iskomoe_slovo,words)) и if (!j)(если слова равны 0) ты использовал " ! "-это знак равенства 0?а в первом выражении с if... это что?(просто я работал пока только с " == " (знак равенства)

Добавлено через 33 минуты
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, О'к,объясни пож. почему двумерный массив используем,а не одномерный?...
Но еще вот здесь if(!strcmp(iskomoe_slovo,words)) и if (!j)(если слова равны 0) ты использовал " ! "-это знак равенства 0?а в первом выражении с if... это что?(просто я работал пока только с " == " (знак равенства)
И cnt-это счетчик строк в массиве?просто там же есть еще один счетчик строк strings_count?
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.11.2009, 19:11 #29
! - это отрицание. !0 - равносильно (==) в словах НЕноль, тоесть любое число
таким образом if(!0) - будет верно всегда.
соответсвенно !1 или !"любое число"==0

таким образом if(!j) верно, тоесть будет выполняться выражение в скобках {} после if, если j==0, в твоём случает, J==0, когда нет совпадений.

И cnt-это счетчик строк в массиве?просто там же есть еще один счетчик строк strings_count?
да есть, я не стал путать твой и мой счётчик. можешь сам с оптимизировать.

TanT, О'к,объясни пож. почему двумерный массив используем,а не одномерный?...
для того чтобы ты знал в какой строке у тебя слово повторяется. как ты с одномерным массивом будешь номера строк связывать, когда всё в кучи?

ты же сам Андрейки писал, что
Андрейка, Программа твоя выводит только искомое слово,а мне надо еще все строки и слова...
у него всё в одной строке ищеться
0
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
16.11.2009, 20:36  [ТС] #30
TanT, Насчет счетчиков строк,как можно оптимизировать?может ее как счетчик строк содержащее искомое слово?а, наверно нет, потому что это j-счетчик строк содержащее искомое слово?..

Добавлено через 13 минут
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, Насчет счетчиков строк,как можно оптимизировать?может ее как счетчик строк содержащее искомое слово?а, наверно нет, потому что это j-счетчик строк содержащее искомое слово?..
++cnt -зта та же самая инкрементация?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2009, 20:36
Привет! Вот еще темы с ответами:

Расположить элементы массива так, чтобы сначала были отрицательные и нули, а потом положительные - C++
Дан массив из 12 элементов. Расположить элементы так,чтобы сначала были отрицательные и нули,а потом положительные. Порядок расстановки не...

Преобразовать последовательность чисел так, чтобы сначала были нули, а потом все остальные. - C++
Тема лабораторной работы: Работа с одномерными массивами. Задание: Преобразовать последовательность чисел так, чтобы сначала были нули, а...

Преобразовать массив, чтобы сначала располагались элементы, модуль которых не превышает 5, а потом остальные - C++
Помогите преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 5, а потом — все...

Переписать файл целых чисел так, чтобы сначала шли положительные, а потом - отрицательные - C++
Дан файл целых чисел F. Используя вспомогательный файл H переписать компоненты файла F файл G так, чтобы сначала были записаны все...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
16.11.2009, 20:36
Ответ Создать тему
Опции темы

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