2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 помогите с Си
Сообщение14.11.2008, 18:27 
Аватара пользователя


01/12/07
172
правильно ли инициализируется массив?
Код:
long  ports[N][N]={
0,2008,5344,5799,1892,5943,2126,3358,8305,8362,10011,8040,9089,8467,8985,14315,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
2008,0,4136,4488,1814,4628,777,2131,6969,7015,8689,8619,9694,10302,10879,16206,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
5344,4136,0,1516,5617,993,3313,2405,2914,3074,4522,7838,8943,13591,14180,19462,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
5799,4488,1516,0,5758,2347,3461,2698,4717,4779,6418,9181,10223,14035,14513,19819,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
1892,1814,5617,5758,0,6136,2291,3532,8567,8591,10243,9520,10545,8465,9274,14560,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
5943,4628,993,2347,6136,0,3890,2860,3902,3922,5548,7520,8258,14422,14758,19850,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
2126,777,3313,3461,2291,3890,0,1408,6274,6335,7965,8027,9362,10630,11051,16273,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
3358,2131,2405,2698,3532,2860,1408,0,5327,5362,6991,7587,8491,11654,12313,17560,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
8305,6969,2194,4717,8567,3902,6274,5327,0,2024,1709,10762,11953,16737,17158,22408,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,6100,
8362,7015,3074,4779,8591,3922,6335,5362,2024,0,3464,10753,11959,16724,17100,22416,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
10011,8689,4522,6418,10343,5548,7965,6991,1709,3464,0,12448,13693,18438,18773,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,5341,
8040,8619,7838,9181,9520,7250,8027,7587,10762,10753,12448,0,1066,11919,12031,14247,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
9089,9694,8943,10223,10545,8258,9362,8491,11953,11959,13693,1066,0,12866,12962,14922,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
8467,10302,13591,14035,8465,14422,10630,11654,16737,16724,18438,11919,12866,0,682,6219,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
8985,10879,14180,14513,9274,14758,11051,12313,17158,17100,18773,12031,12962,682,0,5644,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
14315,16206,19462,19819,14560,19850,16273,17560,22408,22416,24106,14247,14922,6219,5644,0,3604,7933,8086,8347,7657,8282,8503,8996,9992,10712,11300,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,3604,0,5831,8934,9197,5406,5600,5734,6327,7280,8101,8518,8111,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,7933,5831,0,7688,8141,509,2226,2208,2547,3573,4378,5014,4583,1029,1323,1599,3447,0,3584,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,8086,8934,7688,0,349,7854,9414,9383,9795,10783,11552,12191,11812,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,8347,9197,8141,349,0,8156,9752,9694,10092,11075,11882,12489,12158,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,7657,5406,509,7854,8156,0,1776,1699,2007,3093,3826,4444,4082,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,8282,5600,2226,9414,9752,1776,0,788,1167,2250,2974,3601,3246,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,8503,5734,2208,9383,9694,1699,788,0,402,1451,2119,2826,2499,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,8996,6327,2547,9795,10092,2007,1167,402,0,1089,1826,2439,2143,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,9992,7280,3573,10783,11075,3093,2250,1451,1089,0,726,1368,1049,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,10712,8101,4378,11552,11882,3826,2974,2119,1826,726,0,683,374,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,11300,8518,5014,12191,12489,4444,3601,2826,2439,1368,683,0,295,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,10934,8111,4583,11812,12158,4082,3246,2499,2143,1049,374,295,0,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,1029,0,369,659,2905,@,3213,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,1323,369,0,359,2619,@,2918,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,1599,659,359,0,2412,@,2622,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,3447,2905,2619,2412,0,612,1481,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,612,0,@,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,6100,@,5341,@,@,@,@,@,@,3584,3213,2918,2622,1481,@,0,@,@,@,@,@,@,@,@,@,@,   
};


 Профиль  
                  
 
 
Сообщение14.11.2008, 20:51 
Аватара пользователя


26/02/06
179
Хижина дяди Тома
А компилятор запустить лень или религия не позволяет?

 Профиль  
                  
 
 
Сообщение15.11.2008, 12:43 
Аватара пользователя


01/12/07
172
компилятор выдает такую ошибку


error C2018: unknown character '0x40'

 Профиль  
                  
 
 
Сообщение15.11.2008, 13:20 
Аватара пользователя


26/02/06
179
Хижина дяди Тома
Правильно делает, что выдает. Что Вы имеете в виду под символом @? Его код, как раз 0x40. Если хотите ввести в массив это число, то так и пишите - x40 или '@'.

 Профиль  
                  
 
 
Сообщение15.11.2008, 13:20 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Ну правильно. Это символ @. Это же не число, а инициализировать можно только числом.

Вторая ошибка может быть связана с тем, что объявлять можно только массивы заданной длины. Если N - константа, заданная, например, через #define или со спецификатором const, то все нормально. А если это переменная - тогда будет ошибка.

Кроме того, хотя таким образом массив инициализировать можно, но, по-моему, более правильно (наглядно) делать это списками значений, примерно так:
Код:
long MyArray[2][3] = {{1,1,1},{2,2,2}};

 Профиль  
                  
 
 
Сообщение15.11.2008, 16:00 
Аватара пользователя


01/12/07
172
спасибо

 Профиль  
                  
 
 
Сообщение17.11.2008, 17:22 
Аватара пользователя


01/12/07
172
никак не могу инициализировать массив строк :oops:
приведите пожалуйста пример

 Профиль  
                  
 
 
Сообщение17.11.2008, 17:25 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Код:
char szStringArray[3][50] = {"abc", "", "123"};

 Профиль  
                  
 
 
Сообщение09.12.2008, 01:15 


03/11/05
3
Вопрос по поводу псевдослучайных чисел.
Псевдослучайные числа получаю с помощью rand().
Только если программу запускать опять, то генерируются ровно те же случайные числа, как этого избежать?

 Профиль  
                  
 
 
Сообщение09.12.2008, 01:41 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Используйте функцию randomize для инициализации датчика.

 Профиль  
                  
 
 
Сообщение27.12.2008, 22:11 


23/12/08
245
Украина
PAV писал(а):
Вторая ошибка может быть связана с тем, что объявлять можно только массивы заданной длины. Если N - константа, заданная, например, через #define или со спецификатором const, то все нормально. А если это переменная - тогда будет ошибка.


С етим я не согласен, ведь на некоторых компиляторах ето можна делать,хотя и нерекомендуется.

 Профиль  
                  
 
 
Сообщение27.12.2008, 22:21 


27/11/05
183
Северодонецк
Уважаемый Nerazumovskiy, а вот с этого места, пожалуйста, поподробнее: где можно познакомиться с таким компилятором с языка C++, который может поддерживать в объявлении массива динамическое выражение (в частности - переменную)?

 Профиль  
                  
 
 
Сообщение27.12.2008, 22:45 


23/12/08
245
Украина
DevCpp 4.9.9.2
Код:
int main(int argc, char *argv[])
{
   int n = 10;
   int a[n];
   return 1;
}

отлично все работает.

 Профиль  
                  
 
 
Сообщение27.12.2008, 23:00 


12/09/08

2262
Nerazumovskiy в сообщении #172118 писал(а):
DevCpp 4.9.9.2
DevCpp — не компилятор. Компилятор — GCC (точнее серия компиляторов). DevCpp — это IDE, т.е костыли для тех, кто так и не смог после вижака научиться ходить.

 Профиль  
                  
 
 
Сообщение27.12.2008, 23:06 


27/11/05
183
Северодонецк
Уважаемый Nerazumovskiy, я не вижу в вашем примере динамического выражения, а вижу всего лишь скрытое константное выражение, которое умный компилятор сумел распознать. Речь ведь идет совсем о другом:

Код:

void func(int n)
{
  int a[n];
...

}

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group