2014-11-02 4 views
-2

У меня проблема. Я пытаюсь получить несколько входов от пользователя и вычислить общий ввод и среднее значение в зависимости от количества дней, в которые он работал. Например, если он проработал 10 дней, когда он набирает 10, программа попросит его ввести рабочее время в течение 10 дней. Массив массива iterateArray может содержать только 30 дней и переменные дни, содержит количество введенных дней. Как я могу получить значения с помощью scanf?Получение нескольких входов от пользователей с помощью scanf

int main(void){ 

    printf("The program calculates the total hours worked during\n"); 
    printf("a specific period and the average length of a day.\n\n"); 
    printf("How many days:"); 

    scanf("%d",&days); 


    do{  
      if(i==days){ 
      break; 
      i++; 
     } 


    else{ 
     printf("Enter the working hours for day %d:",++i); 
     scanf("%f",&iterateArray[0]); 
     } 

    }while(i<days); 


} 
+0

Ваш код не отображается определение для 'i' или' iterateArray'. Вы также должны проверить, что операции 'scanf()' успешны, а не просто предполагать, что они работают. Выделение кода оставляет желать лучшего. Я полагаю, вы могли бы использовать цикл 'for' вместо цикла' do ... while', и это упростило бы ваш код. –

ответ

1

Я думаю, что ваш ищет что-то вроде этого:

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 

    int days, dayCount; 
    double iterateArray[30], totalWork = 0, averageWork = 0; 

    printf("The program calculates the total hours worked during\n"); 
    printf("a specific period and the average length of a day.\n\n"); 
    printf("How many days: \n>"); 

    scanf(" %d", &days); 

    if (days > 30) { 
     printf("You can't work longer then 30 days!"); 
     exit(0); 
    } 

    for(dayCount = 0; dayCount < days; dayCount++) { 
     printf("Enter the working hours for day %d:", dayCount+1); 
     scanf(" %lf", &iterateArray[dayCount]); 
     totalWork += iterateArray[dayCount]; 
    } 

    averageWork = totalWork/days; 

    printf("\nThe total hours you worked is: %.2lf\n", totalWork); 
    printf("The average length of a day is: %.2lf\n", averageWork); 


    return 0; 

} 
+0

В идеале вы должны проверить возвращаемое значение из 'scanf()', чтобы убедиться в его успешности. –

+0

Спасибо, Джонатан за ответ. На самом деле у меня есть функции для расчета общих часов и среднего значения, но проблема заключается в получении входных данных. Я использовал одну переменную, чтобы получить входные данные и передать их в массив, это не сработало, я использовал массив в scanf, он не работает, в конце концов я использовал цикл for, но он не работал – Sagnol

+0

@ Sagnol делает мой код работает для вас и решил вашу проблему или что сейчас не работает? – Rizier123

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