Другие языки программирования и технологии
Инициализация массива символьного типа. С++
Подскажите, как инициализировать элементы массива символьного типа по очереди типа структуры, имеющей два поля символьного типа. { struct data { char name[20]; char sur[20]; }; int i; data v, a[10]; a[1]={"Simon", "Bell"}; a[2]={ "Vidal", "Sasoon" }; a[3]={"Thom","Filicia"}; a[4]={"Charls","Mackintosh"}; a[5]={"Philipp","Stark"}; a[6]={"Thomas","Maldonado"}; a[7]={"Gertrude","Jekyll"}; a[8]={"Neville","Brody"}; a[9]={"Sonoda","Kenichi"}; a[10]={"Irina","Sokhina"}; Этот вариант не работает.
data a[10] =
{
{"Simon", "Bell"},
{"Vidal", "Sasoon" },
{"Thom","Filicia"},
{"Charls","Mackintosh"},
{"Philipp","Stark"},
{"Thomas","Maldonado"} ,
{"Gertrude","Jekyll"},
{"Neville","Brody"},
{"Sonoda","Kenichi"},
{"Irina","Sokhina"}
}
+ индексация идет с нуля!
{
{"Simon", "Bell"},
{"Vidal", "Sasoon" },
{"Thom","Filicia"},
{"Charls","Mackintosh"},
{"Philipp","Stark"},
{"Thomas","Maldonado"} ,
{"Gertrude","Jekyll"},
{"Neville","Brody"},
{"Sonoda","Kenichi"},
{"Irina","Sokhina"}
}
+ индексация идет с нуля!
Массив сивольнлго типа инициализируется так:
char name[] = " Ivan";
Вам нужно в структуре два массива типа string, один - для имён, другой - для фамилий:
#include <string>
....
string firstname[10] = {"Ivan", "Hanna", .."Irina"};
string secondname[10] = {"Petrov", "Ivanova", .."Borisova"};
Если один массив, и он одномерный, то:
string name[10] = {"Ivan Petrov", "Hanna Ivanova", .."Irina Borisova"};
Либо объявлять двумерный массив:
string person[10][2] = {{"Ivan", "Petrov"}, {"Hanna" , "Ivanova"}, ..{"Irina" , "Borisova"}};
for (int n = 0; n < 10; n++)
{
cout << endl;
for (int m = 0; m < 2; m++)
cout << person[n][m] << ' ';
}
А есть ещё вариант, когда используются перечисления.. . Но это уже уже другая история)))
char name[] = " Ivan";
Вам нужно в структуре два массива типа string, один - для имён, другой - для фамилий:
#include <string>
....
string firstname[10] = {"Ivan", "Hanna", .."Irina"};
string secondname[10] = {"Petrov", "Ivanova", .."Borisova"};
Если один массив, и он одномерный, то:
string name[10] = {"Ivan Petrov", "Hanna Ivanova", .."Irina Borisova"};
Либо объявлять двумерный массив:
string person[10][2] = {{"Ivan", "Petrov"}, {"Hanna" , "Ivanova"}, ..{"Irina" , "Borisova"}};
for (int n = 0; n < 10; n++)
{
cout << endl;
for (int m = 0; m < 2; m++)
cout << person[n][m] << ' ';
}
А есть ещё вариант, когда используются перечисления.. . Но это уже уже другая история)))
strcpy_s(a[ 0 ].name,"Simon");
strcpy_s(a[ 0 ].sur ,"Bell");
...
strcpy_s(a[ 9 ].name,"Irina");
strcpy_s(a[ 9 ].sur ,"Sokhina");
strcpy_s(a[ 0 ].sur ,"Bell");
...
strcpy_s(a[ 9 ].name,"Irina");
strcpy_s(a[ 9 ].sur ,"Sokhina");
char name [ 20 ] [ 2 ];
a[ 1 ] [ 1 ] = "simon"; a [ 1 ] [ 2 ] = "bell";
a[ 2 ] [ 1 ] = "Vidal"; a [ 2 ] [ 2 ] = "sasoon";
a[ 3 ] [ 1 ] = "thom"; a [ 3 ] [ 2 ] = "filicia";
и т. д.
вы объявляете одинарный массив, а присваиваете по два значения каждому элементу.. . попробуйте вышенаписанный пример.. . правда не думаю что заработает, я со структурами не работал...
a[ 1 ] [ 1 ] = "simon"; a [ 1 ] [ 2 ] = "bell";
a[ 2 ] [ 1 ] = "Vidal"; a [ 2 ] [ 2 ] = "sasoon";
a[ 3 ] [ 1 ] = "thom"; a [ 3 ] [ 2 ] = "filicia";
и т. д.
вы объявляете одинарный массив, а присваиваете по два значения каждому элементу.. . попробуйте вышенаписанный пример.. . правда не думаю что заработает, я со структурами не работал...
нужно при обьявлении массива записывать туда данные. а вы пытаетесь таким образом записать туда данные во время выполнения программы. надо так:
data a[10] = {{}, {"Simon", "Bell"}, { "Vidal", "Sasoon"}, {"Thom","Filicia"},{"Charls","Mackintosh"}, {"Philipp","Stark"}, {"Thomas","Maldonado"}, {"Gertrude","Jekyll"}, {"Neville","Brody"}, {"Sonoda","Kenichi"}, {"Irina","Sokhina"}};
data a[10] = {{}, {"Simon", "Bell"}, { "Vidal", "Sasoon"}, {"Thom","Filicia"},{"Charls","Mackintosh"}, {"Philipp","Stark"}, {"Thomas","Maldonado"}, {"Gertrude","Jekyll"}, {"Neville","Brody"}, {"Sonoda","Kenichi"}, {"Irina","Sokhina"}};
Похожие вопросы
- Проблема с инициализацией массива объектов.
- Инициализация массива. Указатели.
- Инициализация массива указателей на объекты.
- Зачем char в паскале? Зачем используется символьный тип, Char, в паскале?
- Задачи на строковые и символьные массивы.
- Напишите программу для С++, которая заменяет в символьной строке все буквы a на буквы b, буквы A на буквы B ...
- Люди. ) Расскажите пожалуйста что означает слово ИНИЦИАЛИЗАЦИЯ.
- При введении программы на Pascal ABC выдается ошибка "нельзя вводить данные типа "массив", массивы вводятся поэлементно
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- (Turbo Pascal)Текстовые файлы - символьное представление