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

Массив символов в структуре - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление элемента массива http://www.cyberforum.ru/cpp-beginners/thread108140.html
Здравствуйте. Необходимо удалить из массива А(20) первый отрицательный элемент,при этом ввод элементов массива необходимо осуществить с клавиатуры. Язык - С.
C++ Найти минимум среди сумм элементов диагонали матрицы, параллельных побочной диагонали Пожалуйста, помогите решить задачку Дана целочисленная прямоугольная матрица. определить: 1) колво строк, не содержащих ни одного четного элемента; 2) минимум среди сумм элементов диагонали, параллельных побочной диагонали. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread108129.html
найти в массиве непрерывный участок из 10 чисел с наибольшим средним значением C++
Проверьте пожалуйста, почему все средние значения (второй массив) одинаковы Задание: найти в массиве непрерывный участок из 10 чисел с наибольшим средним значением #include <iostream.h> #include <conio.h> #include <stdlib.h> const int n=200;
microsoft agent как запустить в C++ C++
дайте пожалуйста исходник , ил просто код как запустить персонажа из microsoft agent на языке С++ Добавлено через 19 часов 3 минуты народ ну попомиге:(
C++ Что за ошибка??? http://www.cyberforum.ru/cpp-beginners/thread108063.html
помогите доделать код #include <iostream> #include <vector> #include <cmath> #include <ctime> #include <algorithm> using namespace std; void out(int n, vector<int> &f1) {
C++ Диаграмма классов Здраствуйте!! Подскажите, пожалуйста, как можно создать диаграмму классов в Visual Studio. Я знаю,что там можно сгенерировать диаграмму по уже написаному коду, но мне нужно сначала создать диаграмму классов, а по ней получить код. Я выполняю такую очередность действий: File->New->Project->Empty Project. Потом из toolbox перетягиваю элемент в рабочую область и создается класс. Проблема в том, что... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1690 / 877 / 44
Регистрация: 04.06.2008
Сообщений: 5,395
27.03.2010, 17:17     Массив символов в структуре
Цитата Сообщение от stratovarius Посмотреть сообщение
Мне нужен не просто массив символов, а массив массивов символов, где первый индекс - номер строки, а второй - символа в этой строке. Например:
sdfg
asd
as
fgdfg
Слушай, автор, ты тень на плетень не наводи. Определяйся давай с условием и не путай людей и сам не путайся
Если у тебя будет массив массивов символов, то первый элемент никак не может быть номером строки. Первый элемент (как и любой другой)- массив символов! Согласно заявленному!

То же самое и со вторым элементом.

(Ну или адрес нулевого элемента, чтобы к словам не прикапывались.)

Добавлено через 29 минут
Дальше. В строке будет статическиое количество символов или динамическое?
ТОже непонятно.
Короче, вот тебе то, что ты просил вчера.
МАссив строк динамический, сама строка статична.

Итак, пояснения.
С динамическим массивом умеютработать все, синтаксис простой

C++
1
2
char* p= new char [5]
 delete [] p;
В нашем случае мы формируем динамический массив строк. Следовательно, переменная p должна иметь тип : строка такая-то. А ещё точнее: строки из стольки-то символов.
Такого типа в языке C нет, поэтому вводим его сами (не синоним имени типа а новывй тип!)

НОвый типа объявляеться с помощью struct
Итак, поехали

C++
1
2
3
4
5
6
struct p {
 char a1;
 char a2;
 ...
 char aN;
}
Теперь а- новый тип, а объявление

C++
1
p stroka
дастпеременную такоготипа, то есть массив из NHJ символов. НО, понятное дело, что это не наш метод, поэтому поправим объявление ноговго типа:

C++
1
2
3
struct p {
 char a1 [N];
}
Теперь чтобы выделить память, дропустим, для 5-ти строк, надо вот так вот записать: (цифра 5 вводится с клавиатуры- вот она, динамика.)
C++
1
p* stroka= new p [5]
Теперь переменная styroka будет указыватьна нулевой символ массива 5 строк из N символов
Что я и делаю в коде, с учётом того, что массив строк есть член структуры.
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
#include <windows.h>
#include <stdio.h>
#define kolvo_sim_v_stroke
 
int main() {
                SetConsoleCP(1251);
                SetConsoleOutputCP(1251); 
 
 //НОвый тип "массив символов из kolvo_sim_v_stroke элементов"
 //Это статический массив
 struct mas_sim_iz_skolki_to_tam_elementov {
  char mas [kolvo_sim_v_stroke];
 };  
 
 //ИТак, структурка
 struct to_chto_nado {
 
  
  //А это динамический массив. То есть указатель на переменную 
  //типа "массив символов из kolvo_sim_v_stroke элементов", котоорый я ввёл выше
  mas_sim_iz_skolki_to_tam_elementov* ukaz_na_massiv_strok;
  
  
  char* ukaz_na_int_1;
  char* ukaz_na_int_2;
 } vot_ono;
 
 
 //ЭТо вот и есть те самые динамически переменные
 int kol_vo_strok;   
 int kol_vo_int_1;   
 int kol_vo_int_2;
 
 printf ("Вводи количество символов потом количество чисел и ещё одно через пробелы\n");
 scanf ("%d%d%d", &kol_vo_strok, &kol_vo_int_1, &kol_vo_int_2);   
 
 //Можешь расскоментировать и проверить
 //printf ("\nkol_vo_sim= %d   kol_vo_int_1= %d  kol_vo_int_2=  %d", kol_vo_sim, kol_vo_int_1, kol_vo_int_2);   
 
 //Теперь собсно массивы
 vot_ono.ukaz_na_massiv_strok= new mas_sim_iz_skolki_to_tam_elementov [kol_vo_strok];
 vot_ono.ukaz_na_int_1= new char [kol_vo_int_1];
 vot_ono.ukaz_na_int_1= new char [kol_vo_int_2];
 
//Тут пеоарботали, 
//....................
 
//а теперь память освобождаем
 delete [] vot_ono.ukaz_na_massiv_strok;
 delete [] vot_ono.ukaz_na_int_1;
 delete [] vot_ono.ukaz_na_int_2;
 
//Всё!
    getchar ();
    getchar ();
    /*конец*/ 
 return 0;
}
Добавлено через 4 минуты
Фиг поправишь, если есть код. Вот это вот:
"Теперь а- новый тип, а объявление"

НАдо понмать как
"Теперь p- имя нового типа новый тип, а объявление"

ВМесто NHJ читать N

Добавлено через 1 минуту
ВСё компильнулось, компилятор не ругался, хотя чёрт его знает, может где подводные камни есть, Автор тестируй, неудачные результаты сюда.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru