Путаницы в отношении массивов - PullRequest
0 голосов
/ 03 июня 2019

У меня есть несколько вопросов о массивах в C. Я впервые использую и изучаю c и использую ubuntu. Не обращайте внимания на вопросительный знак в начале. Пока это просто пробел.

Номер один правильный.

Число два, если значение i в массиве меньше или равно 7, тогда i умножьте его на постоянную Эйлера, используя M_E в math.h и если оно больше 7 I преобразовать его в абсолютное значение. Я почти уверен, что сделал эту часть правильно, если не приветствуется обратная связь.

Номер три Я должен преобразовать все значения с плавающей точкой в ​​f_array в int и поместить его в i_array. Я использую функцию раунда, чтобы сделать это. Я не знаю, был ли это правильный подход к этому. Я думаю, что могу удалить второй шаг j и просто использовать i для f_array и i_array, но я не уверен на 100%


    int main(int argc, char *argv[]) {

        // Local variables
        // NOTE: this is where you will want to add some new variables
        float f_array[20];
        int i_array[20], m_array[25];
        ???

        // Step #1 - read in the float numbers to process
        for (i=0; i<20; i++) {
            scanf("%f", &f_array[i]);
        }

        // Step #2 - convert the input values
        for (i=0; i<20; i++){
            if (f_array[i] <= 7){
                i = i*M_E;
            }
            if (f_array[i] > 7){
                i = abs(i);
            }
        }


        // Step #3 - convert the floating point values to integers
        for (i=0; i<20; i++){
            for (j=0; j<20; j++){
                old = f_array[i]
                new = round(old)
                i_array[j] = new
            }
        }

1 Ответ

0 голосов
/ 03 июня 2019

В Step 2, вы не converting input values, вы просто используете их в if conditions, тогда вы «умножаете» свой loop counter(i) ИЛИ, «конвертируя его в абсолютное значение» вместо фактического значениязначения в f_array.

Опять же, вы сохраняете значение В СЧЕТЧИКЕ ПЕТЛЕЙ , что другими словами: «Вы отбрасываете преобразованные значения».

ВыВторой цикл должен выглядеть следующим образом:

for (i=0; i<20; i++){
    if (f_array[i] <= 7){
       m_array[i] = f_array[i]*M_E; //I suppose that was m_array was supposed to store
    }
    else if (f_array[i] > 7){
       m_array[i] = abs(f_array[i]);
    }
}

И ДА Вы можете удалить второй шаг с третьего for.Это должно выглядеть так:

for (i=0; i<20; i++){
   i_array[i] = round(f_array[i]);
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...