Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
angryjack93
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
#1

ЧТо не так в коде? - C++

02.05.2013, 16:32. Просмотров 312. Ответов 7
Метки нет (Все метки)


http://www.cyberforum.ru/cpp-beginners/thread1520544.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2013, 16:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос ЧТо не так в коде? (C++):

что в коде не так?
#include<iostream> #include<cstdio> #include<cstdlib> #include<string> ...

Что не так в коде
Подскажите что не так в коде fstream fs; fs.open(file, fstream::in...

что в коде не так?
#include <string.h> #include <iomanip> #include <conio.h> #include <fstream>...

Что не так в коде?
Вообщем, вся суть в том, чтобы пользователь задавал элементы массива, а...

что не так в коде?
Не обходимо составить массив и заполнить его по правилу: {x}_{1} = 1; {x}_{i}...

7
DiffEreD
1441 / 778 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.05.2013, 17:09 #2
angryjack93, не особо вникал в ваш код, но походу у вас где то выход за пределы массивов. Разбивать строку на слова можно и другими, более наглядными способами, к примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
 
int main()
{
    std::string s = "world okno opera adc conan stryna argentina akter";
    //std::getline(std::cin, s); //или ручной ввод
    
    std::istringstream iss(s);
    std::vector<std::string> words;
    for (std::string temp; iss>>temp; iss)
        words.push_back(temp);
    std::cout<<"All words:\n";
    for (int i = 0; i<words.size(); ++i)
        std::cout<<words[i]<<"\n";
    
    return 0;
}
Не понял что делает функция sound_func, но она крайне не эффективна - значения по ссылках передавать надо. К примеру так:
C++
1
void sound_func(const vector<vector<char>>& text_sound, int& kol_symb_text, int sum_words)
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.05.2013, 17:33 #3
C++
1
 char text_string[] = "";
Задайте массив достаточного размера.
0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
02.05.2013, 19:13 #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Задайте массив достаточного размера.
Вот странно, да. Вектор использует, а стрингами побрезговал почему-то.
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.05.2013, 19:31 #5
Тут всё в куче: С, С++, STL...
0
angryjack93
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
02.05.2013, 19:36  [ТС] #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Вот странно, да. Вектор использует, а стрингами побрезговал почему-то.
Просто писал давно, а про векторы только недавно прочел Переделаю еще...

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
    vector < vector<char> > strip_words(sum_words);
    char seps[] = ", \n\r\t"; int i = 0;
    char *token = strtok(text_string, seps);
    while(token != NULL){
        strip_words[i].push_back(*token);
        token = strtok(NULL, seps);
        i++;
    }
В общем сделал так разбиение на слова (так в интернете нашел и у людей все равботает). Программа больше не зависает, НО теперь она вместо всего слова помещает только первую букву(
0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
02.05.2013, 19:54 #7
Цитата Сообщение от angryjack93 Посмотреть сообщение
Программа больше не зависает, НО теперь она вместо всего слова помещает только первую букву
Я бы всё же порекомендовал использовать string вместо vector<char>. Но если уж хочется добавлять слово в имеющийся контейнер, вероятно надо переписать строку 5 на нечто подобное:
C++
1
2
char* p = token;
while( *p ) strip_words[i].push_back(*p++);
1
angryjack93
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
02.05.2013, 20:12  [ТС] #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Я бы всё же порекомендовал использовать string вместо vector<char>. Но если уж хочется добавлять слово в имеющийся контейнер, вероятно надо переписать строку 5 на нечто подобное:
C++
1
2
char* p = token;
while( *p ) strip_words[i].push_back(*p++);
Огромное спасибо, помогло!!!
0
02.05.2013, 20:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 20:12
Привет! Вот еще темы с решениями:

Что не так в коде?
#include &lt;stdio.h&gt; int main(void) { int x; double sq = 1.428e2; int...

Что не так в коде
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;fstream&gt; #include...

Что не так в коде?
Должен записывать значения в файл, а начинается так называемая &quot;матрица&quot; и в...

Что не так в коде?
Дано натуральное число N. Если число содержит 5 цифр, то получить новое число...


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

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

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