Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 20:36   #1
FatedEvergreen
Новичок
Джуниор
 
Регистрация: 21.02.2012
Сообщений: 2
По умолчанию Задача на С. Цикл While с контрольным значением

Здравствуйте. Никак не могу написать программу. Задача такова:
Из-за высокой цены на бензин водители интересуются пробегом своих автомобилей. Некий водитель отследил несколько заправок своего автомобиля, записывая пройденное расстояние в милях и объем каждой заправки в галлонах. Разработайте программу на С для ввода пройденного расстояния в милях и объема каждой заправки в галлонах. Программа должна вычислять и отображать на экране количество пройденных миль на галлон для каждой заправки автомобиля. После обработки всей входной информации программа должна вычислить и вывести общее количество пройденных миль на галлон по всем заправкам.
Результат работы программы должен выглядеть примерно так:
Цитата:
Введите расход бензина (-1, если ввод закончен): 12.8
Введите пройденный путь: 287
Для этой заправки получено миль/галлон 22.421875

Введите расход бензина (-1, если ввод закончен): 10.3
Введите пройденный путь: 200
Для этой заправки получено миль/галлон 19.417475

Введите расход бензина (-1, если ввод закончен): 5
Введите пройденный путь: 120
Для этой заправки получено миль/галлон 24.000000

Введите расход бензина (-1, если ввод закончен): -1

Среднее число миль/галлон: 21.601423
У меня ерунда какая-то получается
Прошу вашей помощи.
FatedEvergreen вне форума Ответить с цитированием
Старый 21.02.2012, 21:17   #2
FatedEvergreen
Новичок
Джуниор
 
Регистрация: 21.02.2012
Сообщений: 2
По умолчанию Решение найдено, но есть недостаток

В принципе получилось написать программу. Но есть один недостаток. При вводе в последний раз расхода бензина -1 нужно вводить путь. Т.е. получается так:
Цитата:
Введите пройденный путь: 0 (или любое другое число)
Введите расход бензина (-1, если ввод закончен): -1
Среднее число миль/галлон: ...
А хотелось бы как в условии, в последний раз вводить только контрольное число(расход бензина -1).

Собственно код программы:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(int argc, char *argv[])
{
   setlocale(LC_ALL, "rus");
   int   miles, s_miles=0;
   float gallons, s_gallons=0, rez;
   
   printf("Введите пройденный путь: ");
   scanf("%i", &miles);
   printf("Введите расход бензина (-1, если ввод закончен): ");
   scanf("%f", &gallons);
   while (gallons!=-1)
   {  
      rez = miles/gallons;
      printf("Для этой заправки получено миль/галлон %f\n\n", rez);
      s_miles += miles;
      s_gallons += gallons;
      printf("Введите пройденный путь: ");
      scanf("%i", &miles);
      printf("Введите расход бензина (-1, если ввод закончен): ");
      scanf("%f", &gallons);
   }
   rez = s_miles/s_gallons;
   printf("Среднее число миль/галлон: %f\n", rez);
  
  system("PAUSE");	
  return 0;
}

Последний раз редактировалось FatedEvergreen; 21.02.2012 в 21:18. Причина: Опечатка
FatedEvergreen вне форума Ответить с цитированием
Старый 22.06.2016, 23:57   #3
Alex_Willow
Новичок
Джуниор
 
Регистрация: 22.06.2016
Сообщений: 1
По умолчанию Вот что вышло у меня

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

main(){
setlocale(LC_ALL, "rus");
float benzin, s_kol_mili, rashod;
int rasstoianie, kolichestvo, total;

kolichestvo = 0;
total = 0;

printf("Введите расход бензина (-1, если ввод закончен): ");
scanf("%f", &benzin);
printf("Введите пройденный путь: ");
scanf("%d", &rasstoianie);

while (benzin != -1){
rashod = rasstoianie / benzin;
kolichestvo = kolichestvo + 1;
total = total + rashod;
printf("Для этой заправки получено миль/галлон: %f\n\n", rashod);
printf("Введите расход бензина (-1, если ввод закончен): ");
scanf("%f", &benzin);
if (benzin == -1) break;
printf("Введите пройденный путь: ");
scanf("%d", &rasstoianie);
}

s_kol_mili = total / kolichestvo;
printf("Среднее число миль/галлон %f\n\n", s_kol_mili);


return 0;
}
Alex_Willow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с++ на цикл while Bogdan11 Помощь студентам 2 08.11.2011 22:17
задача в ТР на цикл while dante92 Помощь студентам 1 20.12.2009 11:06
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34