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

разбить строку в массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ одномерный и двумерный массивы http://www.cyberforum.ru/cpp-beginners/thread112862.html
1.составить алгоритм,с помощью одномерного массива Заполнить массив числами 2.1, 2.2, 2.3, …, 2.18. 2.составить алгоритм,с помощью двумернонго массива Дан двумерный массив размером 10х10....
C++ вид поиска, метод поиска Написать программу, реализующую один из алгоритмов программного поиска данных в информационном массиве, расположенном в оперативной памяти (по желанию, можно считывать данные из файла), используя... http://www.cyberforum.ru/cpp-beginners/thread112840.html
Вопрос про заполнение Vector - а C++
Доброго всем времени суток. Вопрос следующий есть vector mxyz размерностью 26873856 = 5184*5184 = 72*72*36*48*3 надо после каждого mxyz вставить элемент из другого вектора grace (размерностью...
C++ Проверить баланс скобок
:)Здравствуйте. Помогите пожалуйста с задачей. Проверить имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок, т.е. верно ли, что можно установить взаимно однозначное...
C++ Подскажите открытый проект на c++ http://www.cyberforum.ru/cpp-beginners/thread112805.html
Подскажите проект на C++ с открытыми исходными кодами, как сказать для изучения.
C++ Чтение файла Как в си прочитать файл побайтово? подробнее

Показать сообщение отдельно
Fujiwara no Sai
9 / 9 / 0
Регистрация: 03.04.2010
Сообщений: 22
05.04.2010, 16:21
Не правильно выводишь конечный массив. В строке 9 ты делаешь разбиение строки слов на отдельные слова, и каждое слово записываешь в новую строку двумерного массива. Т.е., строка Heavy metal rulit, введенная в программу, будет преобразована так: Heavy запишется в первую строку двумерного массива, metal - во вторую, rulit - в третью. Причем, поскольку в эту строку(mas1[]) не введено 100 символов, то оставшееся место, у меня, например, будет заполнено значением 52(если рассматривать в аски-коде). Естественно, что когда мы этот массив запишем в двумерный, эти "остатки" никуда не пропадут, и допишется в каждую строку в конце. И когда ты начнешь выводить на экран двумерный массив, то у тебя выведутся и эти символы тоже. В общем, я тут в твою программу добавил пару циклов вывода на экран(для контроля). Запустишь - поймешь про что я говорю. И последнее, я бы на твоем месте не стал использовать функцию gets(), т.к. способа ограничить число символов, полученное через эту функцию - нет. Это значит, что в случае очень длинной строки может быть переполнение массива. Есть функция fgets() - у нее синтаксис немного сложнее, но зато таких проблем нет.

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
# include <iostream>
# include <conio.h>
 
using namespace std;
 
int main()
{
    int i,j,g;
    char mas1[100],mas2[10][10];
 
    cout<<"Vvedite stroku ";
    gets(mas1);
    cout<<endl;
 
    //Выведем на экран то, что ввели
    for(int i=0;i<99;i++)
    cout<<mas1[i];
 
    //перепишем в двумерный массив
     j=0;g=0;
     for(i=0;i<99;i++)
    {
        if(mas1[i]==32)
        {
            j++;
            g=0;
        }
                else 
        {
            mas2[j][g]=mas1[i];
            g++;
        }
    }; 
   
    _getch();
 
    //выведем двумерный массив на экран
    for(i=0;i<10;i++)
    {
        cout<<"\nNovaya stroka: ";
        for(j=0;j<10;j++)
            cout<<mas2[i][j];
    }
 
    //выведем двумерный массив в аски-коде, чтобы было понятно что будет записано в
        //"пустое" место в конце
    for(i=0;i<10;i++)
    {
        cout<<"\nNowayz stroka: ";
        for(j=0;j<10;j++)
            cout<<(int)mas2[i][j];
    }
        _getch();
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru