2016-08-22 7 views
1

Программа предназначена для получения среднего значения всех лабораторных упражнений. Я хочу округлить свои десятичные числа 7.7778 ко всему номеру. Я попробовал ceilf и roundf(), что он не работает, есть ли какие-то проблемы с моими кодами? любая помощь будет благодарна вам!округление до целого числа

Мои коды

#include<stdio.h> 
#include<conio.h> 
#include <math.h> 
int main() 
{ 
    int numberof_laboratory,lab_exercises,total_numberof_laboratory,average,roundoff; 
    char answer; 
    do 
    { 
     printf("\nEnter number of laboratory:"); 
     scanf("%d",&numberof_laboratory); 
     for(int i=1;i<=numberof_laboratory;++i) 
     { 
      printf("\nEnter laboratory exercise %d:",i); 
      scanf("%d",&lab_exercises); 
      total_numberof_laboratory += lab_exercises; 
      average = total_numberof_laboratory/3; 
      roundoff = ceilf(average * 100)/100; 
     } 
     printf("The average laboratory exercise grade is %d",roundoff); 
     printf("\nDo you want to continue(Y/N)?"); 
     scanf(" %c", &answer); 
    } 
    while(answer != 'N' && answer != 'n'); 
    printf("Goodbye!"); 
} 

Пример

Введите число лаборатории: 3

Лабораторные упражнения № 1: 10

Lab не осуществлять № 2: 7

Лабораторное упражнение № 1: 6

Средняя оценка лаборатории упражнения: 7 // должно быть 8

+3

Что не работает? Каков ваш ожидаемый результат? Каков фактический результат? –

+3

У вас нет чисел с плавающей запятой в вашей программе. –

+0

Я попытался изменить среднее значение в float и roundoff в float, выход моего среднего значения теперь 0 – Holow

ответ

3

Ваш roundoff = ceilf(average * 100)/100; неправильно

average объявлен int.

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

float average; 
... 
average = total_numberof_laboratory/3.0f; // thanks to Ed Heal 
roundoff = roundf(average); 

Кажется, вы хотите следующее:

#include <stdio.h> 
#include <math.h> 
int main() 
{ 
    int numberof_laboratory, lab_exercises, total_numberof_laboratory, roundoff; 
    float average; /* see here */ 
    char answer; 
    do 
    { 
     printf("\nEnter number of laboratory:"); 
     scanf("%d",&numberof_laboratory); 
     total_numberof_laboratory = 0; /* see here important */ 
     for(int i=1;i<=numberof_laboratory;++i) 
     { 
      printf("\nEnter laboratory exercise %d:",i); 
      scanf("%d",&lab_exercises); 
      total_numberof_laboratory += lab_exercises; 
     } 
     average = total_numberof_laboratory/(float)numberof_laboratory; /* see here */ 
     roundoff = roundf(average); /* see here */ 
     printf("The average laboratory exercise grade is %d",roundoff); 
     printf("\nDo you want to continue(Y/N)?"); 
     scanf(" %c", &answer); 
    } 
    while(answer != 'N' && answer != 'n'); 
    printf("Goodbye!"); 
} 

Compile в gcc в

gcc -o main main.c -lm -Wall -pedantic 
+0

Я попытался изменить среднее значение в float и roundoff в float, теперь результат моего среднего значения равен 0 – Holow

+1

Также измените 'average = total_numberof_laboratory/3;' to average = (float) total_numberof_laboratory/3.0f; ' –

+0

Если вы используете gcc, try -lm, чтобы связать математическую библиотеку. –

1

Вы должны использовать следующий код найти требуемое среднее значение -

#include<stdio.h> 
#include<conio.h> 
#include <math.h> 
int main() 
{ 
int i,numberof_laboratory, lab_exercises, total_numberof_laboratory=0,roundoff; 
float average; 
char answer; 
do 
{ 
    printf("\nEnter number of laboratory:"); 
    scanf("%d",&numberof_laboratory); 
    for(i=1;i<=numberof_laboratory;++i) 
    { 
     printf("\nEnter laboratory exercise %d:",i); 
     scanf("%d",&lab_exercises); 
     total_numberof_laboratory += lab_exercises; 
    } 
    average = (float)total_numberof_laboratory /numberof_laboratory ; 
    roundoff = ceil(average); 
    printf("The average laboratory exercise grade is %d",roundoff); 
    printf("\nDo you want to continue(Y/N)?"); 
    scanf(" %c", &answer); 
} 
while(answer != 'N' && answer != 'n'); 
printf("Goodbye!"); 
} 

Вы должны четко разобраться и заметить сделанные изменения.

  1. Если total_numberof_laboratory подсчетов общая сумма lab_exercises , то он должен быть инициализирован с 0 значением
  2. average должны быть вычислены после того, как сумма была оценена
  3. average должны быть объявлены поплавка
  4. среднее значение рассчитывается на average = (float)total_numberof_laboratory /numberof_laboratory ; и average = (float)total_numberof_laboratory/3 ; не будет
  5. И, наконец, ceil не требуется ceilf

Рад помочь, -]

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

  • Нет связанных вопросов^_^