2016-09-02 2 views
1

Я новичок на этом сайте и искал помощи. Я пытаюсь создать программу, которая будет вводить числа от пользователя, хранить его в массиве и правильно форматировать в три столбца. Тем не менее, я не могу понять, почему мои входы не форматируются правильно.Вывод массивов в C не будет форматироваться?

#include <stdio.h> 
int main() 
{ 

int x=0; 
float num[100]; 

/* for loop for receiving inputs from user and storing it in array */ 
for (x=0; x<=100; x++) 
{ 
    scanf("%f", &num[x]); 
    printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]); 

    //printf("%f %f %f\n", num[0], num[1], num[2]); 

} 
return 0; 
+2

Каков ваш вклад и ваши ожидаемые результаты (с правильным форматированием)? –

+0

Вы можете использовать любой вход, но вот пример того, как он выходит. https://gyazo.com/f0f69ad566794e32c79fa91f8f06efe6 –

ответ

1

Проблемы я вижу:

  1. Использование неправильного диапазона в цикле for. С учетом

    float num[100]; 
    

    максимальный действующий индекс 99. Следовательно, цикл for должен быть:

    for (x=0; x < 100; x++) // x < 100 not x <= 100 
    
  2. Использование элементов массива, прежде чем они инициализируются.

    printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]); 
    

    Ничто не считаны в num[x+1] и num[x+2]. Следовательно, вы собираетесь получать значения мусора.

  3. Доступ к num с использованием индексов массивов границ.

    Доступ num[x], num[x+1] и num[x+2] имеет смысл только тогда, когда x+2 меньше или равна 97.


Мое предложение:

Используйте две петли. В первом цикле прочитайте данные. Во втором цикле выпишите данные.

for (x=0; x < 100; x++) // Using 100 here. 
{ 
    scanf("%f", &num[x]); 
} 

for (x=0; x < 98; x++) // Using 98 here. 
{ 
    printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]); 
} 

Update, в ответ на комментарий OP

Изменить петлю для печати на:

for (x=0; x < 98; x += 3) // Increment x by 3 
{ 
    printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]); 
} 
+0

Я ценю вашу помощь, но у меня есть еще один вопрос. У меня должно быть это, где вход будет таким. Три столбца с периодами выстраиваются в линию и имеют четное пространство между колоннами. Вид вроде этого: https://gyazo.com/54d92853b4d132a49c07e7fb6be4ec73 –

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