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

Записать текст в массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:16     Записать текст в массив #1
хочу скрипт , которая пишет предложение сверху вниз . надо присвоить предложение в массив . вот такой код :
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
main()
{
cout << "Enter text : ";
char string[];
cin>> string[];
 
int i = 0;
int b = sizeof(string);
while(i<b){
cout << string[i]<<endl;
i++;
}
cin.get();
}
но не получается , в этих строках ошибка :
C++ (Qt)
1
2
char string[];
cin>> string[];
если сделать вот так , то всё получится . но тут готовое предложение . а я хочу писать предл. в прогу , а он сам сувал ее в массив .
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
main()
{
cout << "Enter text : ";
char string[] = "Hello!";
cout<<endl;
 
int i = 0;
int b = sizeof(string);
while(i<b){
cout << string[i]<<endl;
i++;
}
cin.get();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KostyaKulakov
Заблокирован
16.08.2012, 16:23     Записать текст в массив #2
без ввода пользователя. массив уже задан в коде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
    cout << "Enter text : ";
    char string[] = "Hello!";
    cout<<endl;
 
    int i = 0;
    int b = sizeof(string);
 
    for(int i=0; string[i]; i++)
    cout << string[i]<<endl;
 
    cin.get();
}
тут пользователь сам должен вписать слово. над оформление сами поработаете.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
    cout << "Enter text : ";
    char string[1000];
 
 
    cout<<endl;
 
    cin.getline(string, 1000);
 
    for(int i=0; string[i]; i++)
    cout << string[i]<<endl;
 
    cin.get();
}
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:23  [ТС]     Записать текст в массив #3
проблема не в цикле . посмотрите на первый скрипт
KostyaKulakov
Заблокирован
16.08.2012, 16:26     Записать текст в массив #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    cout << "Enter text : ";
    char string[1000];
 
    cin.getline(string, 1000);
 
    int i = 0;
 
    while(i<string[i])
    {
        cout << string[i]<<endl;
        i++;
    }
}
Добавлено через 43 секунды
поправил его вверхний код. но заместо while можно было бы использовать цикл for это было бы компактнее
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:28  [ТС]     Записать текст в массив #5
спасибо !! а зачем с WHILE не получалось ? там выходили какие-то значки через WHILE . а через FOR все поехало
KostyaKulakov
Заблокирован
16.08.2012, 16:30     Записать текст в массив #6
проблема была в том. что максимальный размер массива 1000. а я вводил только 3 буквы. те sizeof определял вроде сколько там всего символов. а правильнее делать цикл string[i] вобщем кто знает тот поймёт. посмотри все коды которые я тут писал думаю разберёшься

Добавлено через 49 секунд
вот код с циклом while. я его переводил в верхнем посте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    cout << "Enter text : ";
    char string[1000];
 
    cin.getline(string, 1000);
 
    int i = 0;
 
    while(i<string[i])
    {
        cout << string[i]<<endl;
        i++;
    }
}
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
16.08.2012, 16:31     Записать текст в массив #7
C++
1
2
3
char string[];// так писать нельзя, нужно тогда указывать размер
 
cin>> string; // и писать так
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
16.08.2012, 16:39     Записать текст в массив #8
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
while(i<string[i])
Извиняюсь. Не подскажите что ваша программа делает в этом месте? Просто я таких выражений не видел Если я правильно понял, то вы сравниваете целое число i с i-тым символом строки. Это как?
Я новичок многого не знаю.
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:40  [ТС]     Записать текст в массив #9
спасибо KostyaKulakov ! я знаю , что вопросы надоели мои , но плиз ответьте на еще один вопрос , как там while(i<string[i]) ? разве string[i] не буква ? обясните мне етот момент если не трудно , я новичок
KostyaKulakov
Заблокирован
16.08.2012, 16:44     Записать текст в массив #10
Цитата Сообщение от Hydrogen Посмотреть сообщение
Извиняюсь. Не подскажите что ваша программа делает в этом месте. Просто я таких выражений не видел Если я правильно понял, то вы сравниваете целое число i с i-тым символом строки. Это как?
Я новичок много не знаю.
максимальное значения массива. попрактикуйтесь в массивах сами увидите. такую запись используют если неясен размер массива. а если размер массива был бы известен то запис имела такое значения while(i<string[30]) //30 - это к примеру

Добавлено через 3 минуты
Цитата Сообщение от VaGa Посмотреть сообщение
спасибо KostyaKulakov ! я знаю , что вопросы надоели мои , но плиз ответьте на еще один вопрос , как там while(i<string[i]) ? разве string[i] не буква ? обясните мне етот момент если не трудно , я новичок
в массиве есть ячейки памяти которые забивают туда данные те. расспишу как пользователь забивает массив a[] = {a, b, c, d, f, g, '\0'}; каждая буква занимает свою ячейку в памяти и кода мы обращаемся к массиву например a[2] мы обращаемся ко 2 ячейки в памяти те к b. думаю понятно. хоть это символ хоть буква она есть в памяти и обращения к ней идёт. наверно будет вопрос. зачем '\0' - если мы не поставим то в нашем массиве будет мусор. 0 обозначает логический конец массива
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
16.08.2012, 16:46     Записать текст в массив #11
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
while(i<string[i])
{
cout << string[i]<<endl;
i++;
}
Не лучше ли это заменить на
C++
1
2
3
4
while(string[i]!='\0')
{
cout <<string[i]<<endl; i++;
}
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:48  [ТС]     Записать текст в массив #12
спасибо , понатненько ) хотя не понял как i<string[i] , наверное следует просто запомнить
KostyaKulakov
Заблокирован
16.08.2012, 16:50     Записать текст в массив #13
Цитата Сообщение от Hydrogen Посмотреть сообщение
Не лучше ли это заменить на
C++
1
2
3
4
while(string[i]!='\0')
{
cout <<string[i]<<endl; i++;
}
ваше право. кому как удобно тот так и пишет. некто некого не заставляет. программист свободная птица куда захочет туда и полетит.

Добавлено через 1 минуту
Цитата Сообщение от VaGa Посмотреть сообщение
спасибо , понатненько ) хотя не понял как i<string[i] , наверное следует просто запомнить
спросите у более опытных людей. я просто не так давно начал заниматься программированием, месяц назад всеголиш. так, что я не компетентен в этом вопросе объяснил как мог
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:50  [ТС]     Записать текст в массив #14
Цитата Сообщение от Hydrogen Посмотреть сообщение
Не лучше ли это заменить на
C++
1
2
3
4
while(string[i]!='\0')
{
cout <<string[i]<<endl; i++;
}
вот ето уже понятно как
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
16.08.2012, 16:56     Записать текст в массив #15
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
максимальное значения массива. попрактикуйтесь в массивах сами увидите. такую запись используют если неясен размер массива. а если размер массива был бы известен то запис имела такое значения while(i<string[30]) //30 - это к примеру

Добавлено через 3 минуты


в массиве есть ячейки памяти которые забивают туда данные те. расспишу как пользователь забивает массив a[] = {a, b, c, d, f, g, '\0'}; каждая буква занимает свою ячейку в памяти и кода мы обращаемся к массиву например a[2] мы обращаемся ко 2 ячейки в памяти те к b. думаю понятно. хоть это символ хоть буква она есть в памяти и обращения к ней идёт. наверно будет вопрос. зачем '\0' - если мы не поставим то в нашем массиве будет мусор. 0 обозначает логический конец массива
Я блин тоже видимо новичок.. и ни хрена не понимаю смысла этой строки
а при обращении к a[2] мы обращаемся к 3 ячейке 'c'

Добавлено через 3 минуты
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
ваше право. кому как удобно тот так и пишет. некто некого не заставляет. программист свободная птица куда захочет туда и полетит.

Добавлено через 1 минуту


спросите у более опытных людей. я просто не так давно начал заниматься программированием, месяц назад всеголиш. так, что я не компетентен в этом вопросе объяснил как мог
мне кажется лучше писать всё таки читабельный код,
C++
1
while(string[i]!='\0')
тут сразу понятно о чем речь идет..
и мне интересно где вы нашли такую строку
C++
1
while(i<string[i])
?
VaGa
5 / 0 / 1
Регистрация: 14.08.2012
Сообщений: 28
16.08.2012, 16:57  [ТС]     Записать текст в массив #16
как ни странно работает , как посоветовал сделать KostyaKulakov . )) но я остановился на примере Hydrogen
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2012, 16:59     Записать текст в массив
Еще ссылки по теме:

Записать текст из файла в двумерный массив C++
Дан массив А(13), записать его в массив В таким образом: b[1]=a[1], b[2]=a[1]*a[3], b[7]=a[1]*a[3]*.*a[13] C++
C++ Как записать весь текст в файл

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

Или воспользуйтесь поиском по форуму:
KostyaKulakov
Заблокирован
16.08.2012, 16:59     Записать текст в массив #17
Цитата Сообщение от Leomana Посмотреть сообщение
Я блин тоже видимо новичок.. и ни хрена не понимаю смысла этой строки
а при обращении к a[2] мы обращаемся к 3 ячейке 'c'

Добавлено через 3 минуты


мне кажется лучше писать всё таки читабельный код,
C++
1
while(string[i]!='\0')
тут сразу понятно о чем речь идет..
и мне интересно где вы нашли такую строку
C++
1
while(i<string[i])
?
да знаете, методом тыка. экспериментировал с массивами. я ещё раз говарю кому как удобно тот так и пишет. я некому своё мнение не навязываю.
Yandex
Объявления
16.08.2012, 16:59     Записать текст в массив
Ответ Создать тему
Опции темы

Текущее время: 16:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru