2013-11-19 3 views
1

Мне нужно написать программу C, которая считывает из файла номер автомобиля, мили и галлон. Рассчитайте мили за галлон. Вычислите итоговые значения и среднее значение MPG.Читайте из файла и делайте вычисления. C

Мне нужна помощь только при подсчете миль на галлон.

In output should be :20 But my output is: 1966018914 
        25      20 
        24      25 
        23      24 

Может ли кто-нибудь увидеть мой код и помочь мне разобраться?

Вот код:

int main() 
{ 
    int car, miles, gas; 
    int sumMiles = 0; 
    int sumGas = 0; 
    int avgMPG = 0; 
    FILE *inFile, *outFile; 
    char fname[20]; 

    printf("Enter a file name: "); 
    gets(fname); 

    inFile = fopen(fname, "r"); 
    if (inFile == NULL) 
    { 
     printf("\nFailed to open file.\n"); 
     exit(1); 
    } 

    outFile = fopen("output.txt","w"); 

    if(outFile==NULL) 
    { 
     printf("The file was not opened."); 
     exit(1); 
    } 

    printf("\nCar No. Miles Driven Gallons Used\n"); 

    while (fscanf(inFile, "%d %d %d",&car, &miles, &gas) != EOF) 
    { 
     printf("%-7d %-15d %d\n",car,miles,gas); 
     sumMiles += miles; 
     sumGas += gas; 
     avgMPG = sumMiles/sumGas; 
    } 

    printf("\nThe total miles driven is %d\n", sumMiles); 
    printf("The total gallons of gas used is %d\n", sumGas); 
    printf("The average miles per gallon of gas used is %d\n", avgMPG); 

    printf("File copied succesfully!"); 
    fclose(inFile); 
    fclose(outFile); 

} 

Это входной файл:

123 100 5 
345 150 6 
678 240 10 
901 350 15 
+1

Хм, я даже не вижу, где вы пишете 'outFile'. Кроме того, как выглядит вывод с вашими заявлениями 'printf'? – Michael

+1

где вы вычисляете мили за галлон? – kunal

+1

Откуда у вас этот выход? Ваша программа выводит что-то совершенно другое. –

ответ

-1

Ваш код работает нормально. Вы используете printf в коде, который не будет работать, он хочет записать вывод в файл, который вам нужен для использования fprint. Пожалуйста, смотрите ниже код, который работает по мере необходимости.

int main() 
{ 
int car, miles, gas; 
int sumMiles = 0; 
int sumGas = 0; 
int avgMPG = 0; 
float ans=0; 
FILE *inFile, *outFile; 
char fname[20]; 

printf("Enter a file name: "); 
gets(fname); 

inFile = fopen(fname, "r"); 
if (inFile == NULL) 
{ 
    printf("\nFailed to open file.\n"); 
    exit(1); 
} 

outFile = fopen("output.txt","w"); 

if(outFile==NULL) 
{ 
    printf("The file was not opened."); 
    exit(1); 
} 

while (fscanf(inFile, "%d %d %d",&car, &miles, &gas) != EOF) 
{ 
    sumMiles += miles; // not needed acc to output 
    sumGas += gas; // not needed acc to output 
    avgMPG = sumMiles/sumGas; // not needed acc to output 
    ans = miles/gas; 
    fprintf(outFile,"%f\n",ans); 
} 

fclose(inFile); 
fclose(outFile); 

} 
0

Ваша программа работает просто отлично: IdeOne demo.

Все, что я сделал с вашим кодом, - это удалить входные и выходные файлы и заменить их stdin и stdout, которые требуются IdeOne. Кроме того, вы, кажется, не используете выходной файл в любом месте.

0

Вход:

123 100 5 
345 150 6 
678 240 10 
901 350 15 

Выход:

Car No. Miles Driven Gallons Used 
123  100    5 
345  150    6 
678  240    10 
901  350    15 

The total miles driven is 840 
The total gallons of gas used is 36 
The average miles per gallon of gas used is 23 

Ваш код работает со всеми, кроме вас. Тогда проблема может быть в среде. Есть ли у вас экзотическое кодирование в текстовом редакторе? Вы оставляете бродячие персонажи, отступы и т. Д.?

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