2013-03-18 5 views
3

Я пытаюсь разделить элементы массива с «1000», и я думаю, что мой синтаксис неверен, любезно помогите!Разделение элементов массива с целым числом?

данные [99] содержат значения от 1 до 100, а два [99] пустые.

float two[99]; 
for(int x=0; x<100; x++) 
{ 
    two[x]=data[x]/1000; 
} 
+0

И в чем проблема? – Nick

+2

Код имеет неопределенное поведение, так как индексы массива основаны на нуле ('N' to 'N - 1', где' N' - количество элементов в массиве), а 'two [99]' слишком много. – hmjd

+2

Существует компилятор для проверки ваших синтаксических ошибок. – Andrey

ответ

1

Вы индексирует массив с нуля, так что вам нужно:

float two[100]; 
for(int x=0; x<100; x++) 
{ 
    two[x]=(float)data[x]/(float)1000; 
} 

Я добавил (флоат) преобразования, чтобы убедиться, что вы получите ожидаемые значения, так как мы не знаем, тип данных [ ...].

+1

Он ищет значение 'two [99]', поэтому вы должны определить 'float two [100];' – deepmax

+1

данные [99] уже объявлены как float. и да, float two [99] - размер массива –

+0

@MM. Правильно. +1. Я изменил ответ. – Jean

2

Синтаксис в порядке, логика неверна. float two[99]; имеет 99 шт. - 0 via 98 - two[99] является незаконным.

+0

float one [99]; 1 [k] = данные [k] - = среднее; дает мне правильные ответы, то почему бы не два [99]? i hav взял [99], чтобы получить 100 пустых мест, начиная с 1 и заканчивая на 99 ... так, чтобы сохранить в общей сложности 100 ответов. –

4

Определить two как это:

float two[100]; // 99 + 1 

Массивы начинаются с 0 в C/C++, поэтому two[99] относится к пункту 100 two.

+0

ОК, я написал, float two [100]; для (int x = 0; x <= 100; x ++); { два [x] = данные [x] /1000.0; } его не работает сейчас тоже –

+0

@MomoPomo: Какой результат сейчас? – deepmax

+0

ОШИБКА "недопустимые типы' int [99] [float] 'для индекса массива " –

Смежные вопросы