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

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

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

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

15.11.2009, 00:42. Просмотров 2619. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2009, 00:42     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово!
Посмотрите здесь:
C++ С++.Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово!
C++ Подскажите, что мне надо поменять в моем коде, чтобы найти сумму по столбцам?
C++ Считать текст из файла и вывести на экран сначала вопросительные, а потом восклицательные предложения
C++ Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные
C++ Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа
C++ Расположить элементы массива так, чтобы сначала были отрицательные и нули, а потом положительные
C++ Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 19:58  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #21
TanT, Про "искомое слово не найдено",напиши пож. код,я писал,не идет...
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 20:11     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #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();
}
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 20:56  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #23
TanT, Блин,а как его исправить?
Помоги пожалуйста,я не знаю что делать?

Добавлено через 31 минуту
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, Блин,а как его исправить?
Помоги пожалуйста,я не знаю что делать?
Как исправить то?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.11.2009, 21:18     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #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 минуту
что делать? учиться, учиться и ещё раз учиться, как дедушка Ленин завещал
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
15.11.2009, 21:49     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #25
ух интересно всё таки чем мой код не прокатит то ) VC++ 2008 его хавает на ура прям )
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
15.11.2009, 22:12  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #26
TanT, Благодарю за все,слова твои учту!!!

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

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

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

Цитата Сообщение от ромыч Посмотреть сообщение
Андрейка, Программа твоя выводит только искомое слово,а мне надо еще все строки и слова...
тут он прав, надо ещё в контейнер типа вектор строки загонят и перебором, но молодёж пока ещё этого не знает. хорошо что хоть пытаются, что-то делать, все собственно с нуля начинали.
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
16.11.2009, 12:40  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #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?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.11.2009, 19:11     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #29
! - это отрицание. !0 - равносильно (==) в словах НЕноль, тоесть любое число
таким образом if(!0) - будет верно всегда.
соответсвенно !1 или !"любое число"==0

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

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

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

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

Добавлено через 13 минут
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, Насчет счетчиков строк,как можно оптимизировать?может ее как счетчик строк содержащее искомое слово?а, наверно нет, потому что это j-счетчик строк содержащее искомое слово?..
++cnt -зта та же самая инкрементация?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.11.2009, 20:57     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #31
да ++cnt - таже самая инкрементация, только значение cnt увеличивается сразу, в отличии от cnt++ , но лучше почитай это в учебнике, там всё подробно описанно. учебники в факе
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
16.11.2009, 22:13  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #32
TanT, Но как насчет счетчиков строк,как можно оптимизировать?может ее как счетчик строк содержащее искомое слово?а, наверно нет, потому что это j-счетчик строк содержащее искомое слово?..

Добавлено через 32 минуты
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, Но как насчет счетчиков строк,как можно оптимизировать?может ее как счетчик строк содержащее искомое слово?а, наверно нет, потому что это j-счетчик строк содержащее искомое слово?..
Но как насчет счетчиков строк?

Добавлено через 32 минуты
TanT, Ответь мне пож. на вопрос,что делать с счетчиками строк,как их назвать или как оптимизировать?откомментируй...

P.s. И что думаешь насчет программы?какая она теперь,и надо ли ее оптимизировать?
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
17.11.2009, 20:23  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #33
TanT, Ответь мне пож. на вопрос,что делать с счетчиками строк,как их назвать или как оптимизировать?откомментируй...

P.s. И что думаешь насчет программы?какая она теперь,и надо ли ее оптимизировать?

не ужели нет никаких мнений и идей?..
а сможешь помочь с блок-схемой?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
17.11.2009, 20:30     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #34
да идей море, ты сам отказывался от варианта Андрейки. оптимизация, а точнее коренная переделка, необходима. но боюсь текущих познаний не хватит, хотя наверстать прижелании ты сможешь. вопрос тока: Зачем тебе нужна эта оптимизация? не принимают прогу?

Добавлено через 59 секунд
блок схемой неее, я их даже за деньги не очень то делаю, не люблю стрелочки эти рисовать.
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
17.11.2009, 20:55  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #35
TanT, вот именно,я просто хочу узнать твое мнение,примут прогу,нужна ли оптимизация?...не ужели прога такая плохая получилась? ты же все таки опытный,подскажи...
я и сам не хочу ее переделывать,меня все устраивает в ней...просто с счетчиками строк непонятки,как их назвать,чтобы различать...может их как один в цикле,другой в массиве)..объяснять же их надо будет,я из-за этого говорю...
Если что,вдруг,блок-схема есть,ее просто проверить...
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
18.11.2009, 12:45     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #36
для начала получилась нормальная прога, просто здесь присутвуют элементы С от которых можно избавиться, сам код всётаки на С++ . ты всё равно, надеюсь, только пока не знаешь STL, можешь посмотреть что такое в С++ string и в частности его фунции find, примерно то тебе писал Андрейка.
и про контенеры почитать скажем про vector

Добавлено через 3 минуты
что касается счётчиков строк можешь свой strings_count уничтожить и вместо него выводить cnt-1
-1 - так как последняя строка "exit" не в счёт.
меня только удивляет чего ты сам это не сделаешь, зачем переспрашиваешь?
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
18.11.2009, 14:13  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #37
TanT, я это сделаю,просто не понимал какие комментарии писать к ним...
А можешь сказать,какие элементы С присутствуют и что такое STL?

Добавлено через 20 минут
Цитата Сообщение от ромыч Посмотреть сообщение
TanT, я это сделаю,просто не понимал какие комментарии писать к ним...
А можешь сказать,какие элементы С присутствуют и что такое STL?
вот еще,меняешь на cnt-1 общее число строк и слов считает, а искомое слово выводит че то не то,посмотри пож. в чем дело?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
18.11.2009, 18:30     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #38
да откуда я знаю в чём дело? ты же у себя в коде исправлял. мож ты не то изменил.
по STL я тебе отвечал что нужно посмотреть, хоть попробуй по гуглить.
много лишних вопросов, на которые ты сам прекрасно можешь ответить приложив толику старания.
бери все не знакомые тебе операторы, забивай в поиск или смотри в учебнике, иначе, даже если я тебе всё распишу до словно, в голове у тебя ничего не останеться.
очень хорошо и навеки запоминается, то с чем, я извиняюсь, мозг потрахаешь пару часиков, а то и денёк.
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
18.11.2009, 20:22  [ТС]     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #39
TanT, О'к,извини если что,я же только начинающий,сам понимаешь...но помоги с кодом пож.,мне только ее осталось исправить...напиши пож...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2009, 21:01     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово!
Еще ссылки по теме:
Преобразовать массив так, чтобы сначала располагались все положительные элементы, а потом отрицательные C++
C++ Переписать файл целых чисел так, чтобы сначала шли положительные, а потом - отрицательные
C++ Преобразовать массив, чтобы сначала располагались элементы, модуль которых не превышает 5, а потом остальные
Преобразовать последовательность чисел так, чтобы сначала были нули, а потом все остальные. C++
Преобразовать массив так, чтобы сначала шли все элементы с вещественной частью, а потом без неё C++

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

Или воспользуйтесь поиском по форуму:
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
18.11.2009, 21:01     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово! #40
чего тебе написать? код рабочий, что ещё надо? задача плёвая, толчом тут воду в ступе.
Yandex
Объявления
18.11.2009, 21:01     Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово!
Ответ Создать тему
Опции темы

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