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

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

Войти
Регистрация
Восстановить пароль
 
Sasuke
1 / 1 / 0
Регистрация: 09.10.2009
Сообщений: 89
#1

Массив строк - C++

15.03.2010, 22:10. Просмотров 705. Ответов 11
Метки нет (Все метки)

Извините меня, за такой глупый вопрос, но я почему то не могу понять это словосочитание. Правильно ли я понимаю - это двумерный массив?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 22:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив строк (C++):

Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк - C++
Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк.

Вводится массив строк текста с неизвестным заранее количеством строк - C++
1)Вводится массив строк текста с неизвестным заранее количеством строк.Ввод текста заканчивается, если введенная строка текста будет равна...

Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена - C++
Пожалуйста с этим заданием. Написать программу, которая описывает четыре массива. Три первых массива должны содержать имена, фамилии и...

Ввод нескольких строк или массив строк - C++
У меня есть массив строк. Нужно ввести несколько строк, но не получается. Вот код: int main() { const int n=4; const int...

Запросить название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой строк - C++
Запросить у пользователя название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой...

Внесение строк в массив строк (не сложно) - C++
Всем привет. Есть одна проблемка в решении задачи. Задачу я решил, но необходимо немного доделать. Прошу помощи! Заранее благодарен) ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 22:23 #2
Правильно.
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
15.03.2010, 22:29 #3
С точки зрения C массив строк это массив указателей на стоки. Смотри
C++
1
   char* massiv []= {"stroka_1","stroka_2", "stroka_2"};
Это типа массив строк. Но только типа!
ЕСли ты посмотришь на этот массив в отладчике, то обнаружишь, что он представляет из себя всего три ячейки памяти! Ну, например, так:

1234 5666 6767

Вот и весь массив
КАждая ячейка содержит адрес строки. То есть stroka_1 расположена по адресу 1234, stroka_2 по адресу 5666, stroka_3 по адресу 6767

КАк правило эти адреса идут подряд. Но я встречал и имено,так, вразнобой.

Добавлено через 55 секунд
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Правильно.
Нет, неправильно, не сбивайте людей с толку.
1
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 23:13 #4
Нет, неправильно, не сбивайте людей с толку.
Ты говоришь про меня без основательно,
Ты привёл массив указателей на строки и всё.

Добавлено через 12 минут
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
 
 
int main(){
char matrix[10][10] = {
"Ignat",
"Sergey",
"ISergey",
 
"Petr",
"Pavel",
"Tom",
 
"DDD",
"sss",
"aaaaa",
"vvv"
};
 
unsigned int i,j;
for(i=0;i<10;i++){
    for(j=0;j<matrix[i][j]!='\0';j++){
if(matrix[i][j]!='\0')printf("%c ",matrix[i][j]);
    }
printf("\n");
 
}
printf("\n");
//Второй способ
for(i=0;i<10;i++){
    for(j=0;j<strlen(&matrix[i][0]);j++){
printf("%c ",matrix[i][j]);
    }
printf("\n");
 
}
 
 
 
return 0;
}
Добавлено через 1 минуту
kravam:
Не надо сразу делать выводы.

Добавлено через 11 минут
Одно есть преимущество если использовать массив указателей:
сортировка не требует перезаписи между строками, просто указатели пере наводятся.
1
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
15.03.2010, 23:21 #5
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Ты привёл массив указателей на строки и всё.
Странно получается.
Я привожу массив указателей на строки, но массивом строк его не называю. ПО определению просто он таковым не является.
Вы приводите массив символов, но называете его массивом строк.

Что-то поменялось в этом мире, а мене не предупредили...
0
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 23:23 #6
Матрица содержит десять строк типа char и вмещает 9 символов + '\0' в каждую строку.
0
ISergey
15.03.2010, 23:25
  #7

Не по теме:

Цитата Сообщение от Genius Ignat Посмотреть сообщение
C++
1
"ISergey",
Опа.. спалился

0
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 23:33 #8
И массив указателей который ты привел тоже верно.

Добавлено через 4 минуты
В твоем случае обратится к каждой строке можно так:
massive[номер указателя на какую то строку][номер индекс символа в строке на которую ссылается ук-ль].
Всё логично, но мой же способ тоже входит в понятие массива строк,
так как строка это массив символов типа char и WCHAR ,
А массив строк , получается матрица(массив массивов).

Добавлено через 2 минуты
А мне вообще по логике нравится так:
string str_m[20]; //библиотека вот так.
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
15.03.2010, 23:37 #9
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Матрица содержит десять строк типа char и вмещает 9 символов + '\0' в каждую строку.
Это я понял.
Вот ВЫ рассказали, что исз себя представляет матрица по сути? Да. Вот пусть она таковой и остаётся.
А массив указателей пусть остаётся массивом указателей. С известными оговорками и то и другое можно назвать массивом строк, но зачем?

МАло путаницы что ли?
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
16.03.2010, 01:54 #10
Любая строка это массив символов, и не важно указатели используются или статический массив.
0
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2010, 13:41 #11
kravam, привет! У меня ДЕВ С++. Хотел спросить что такое отладчик и как им пользоваться? (Никогда им не пользовался) Хочу посмотреть эти самые адреса на строки!
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
16.03.2010, 19:32 #12
Перечёл ещё раз правила, вроде я ничего не нарушаю
http://www.wasm.ru/article.php?article=ollydbg01

...А отладчик, встроенный в DEV C++ мне никогда не нравился, да и не отладчик это вовсе, а просто возможность ПОШАГОВОГО исполнения, к тому же очень глюкавая возможность. Я отлично её реализую по-совему, в места остановки программы пихая printf ("lubaya stroka"); getchar ();
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2010, 19:32
Привет! Вот еще темы с ответами:

Добавление неодинаковых строк в массив строк - C++
Здравствуйте! Возникла такая проблема, не могу понять как реализовать добавление в массив строк нодинаковых значений. Вот моя проба, знаю,...

Заполнить массив строк из файла. Массив заполняется, но выводится не корректно - C++
Здравствуйте! Такая проблема. В файле имена записаны в столбик и разделены точкой с запятой. Массив заполняется, но выводится не корректно....

Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля. - C++
Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.

Массив строк как массив указателей на массивы чаров - C++
Я всё правильно сделал? char* Files; Files = &quot;AHEAD&quot;; Files = &quot;LEFT&quot;; Files = &quot;RIGHT&quot;; Files = NULL; int searchFile()...


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

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

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