Бесконечность Цикла While В Си

Тема в разделе "Общие вопросы по С и С++", создана пользователем Kontaktnik, 22 авг 2012.

  1. Kontaktnik

    Kontaktnik New Member

    Регистрация:
    22 авг 2012
    Сообщения:
    3
    Симпатии:
    0
    Не судите строго за код.Я только начинаю разбираться с основами.У меня одна проблема, в цикле while, у меня постоянно возникает бесконечность повторения.Хочу чтобы мне обьяснили мою ошибку.Выполняю по одному готовому примеру свои задачи, но в примере вроде всё проходит, а вот в задачах возникает бесконечный цикл.Поясните пожалуйста самыми простыми словами.

    Задача состоит в том, чтобы с помощью контрольного значения (-1), т.е. пока его не введут, выполнялся цикл для разных заправок например.Требуется вывести км/литры по каждой конкретной заправке, и среднее кол-во км/литров по 2-3-4 заправкам

    #include <stdio.h>

    main ()
    {
    float total = 0, counter = 0;
    int km, litr, a, itogkm, itoglitr;

    printf("Введите расход бензина(-1 to end): \n");
    scanf("%d", &litr);
    printf("Введи кол-во проеденных км: \n");
    scanf("%d", &km);

    while (counter != -1) {
    itoglitr += litr;
    itogkm += km;
    a = (float) km / litr;
    counter++;
    printf("Для этой заправки использовано км/литр: %f/n", a);
    }

    total = itogkm / itoglitr;
    printf("Среднее число км/литров: %d/n", total);


    return 0;
    }
     
  2. Kineziz

    Kineziz Гость

    Конечно будет бесконечный цикл.

    Код (C++):
    while (counter != -1)
    {
    itoglitr += litr;
    itogkm += km;
    a = (float) km / litr;
    counter++;
    printf("Для этой заправки использовано км/литр: %f/n", a);
    }
    Переменная counter увеличивается и никогда не будет отрицательным. Его надо или уменьшать или вводить с клавиатуры каждую итерацию цикла.

    counter++; заменить на counter--;
     
  3. Kontaktnik

    Kontaktnik New Member

    Регистрация:
    22 авг 2012
    Сообщения:
    3
    Симпатии:
    0
    с этим я немного разобрался.
    Код (C++):
    #include <stdio.h>

    main ()
    {
    float total = 0, itogkm = 0, itoglitr = 0;
    int km, litr;

    printf("Введите расход бензина(-1 to end): \n");
    scanf("%d", &litr);
    printf("Введи кол-во проеденных км: \n");
    scanf("%d", &km);

    while (litr != -1) {
    itoglitr += litr;
    itogkm += km;
    total = (float) km / litr;
    litr++; /*здесь не очень понятно, в принципе мне не нужно не увеличивать, не уменьшать счётчик, кол-во вводов меня не интересует*/
    printf("Для этой заправки использовано км/литр: %f\n", total);
    printf("Введите расход бензина(-1 to end): \n");
    scanf("%d", &litr);
    printf("Введи кол-во проеденных км: \n");
    scanf("%d", &km);
    }

    total = itogkm / itoglitr;
    printf("Среднее число км/литров: %f\n", total);


    return 0;
    }
    Как сделать так, чтобы при вводе -1(т.е. этого самого контр.значения)
    Код (C++):
    printf("Введите расход бензина(-1 to end): \n");
    scanf("%d", &litr);
    printf("Введи кол-во проеденных км: \n");
    scanf("%d", &km);
    строка "Введи кол-во проеденных км: \n" не выводилась ? Т.е. если мы останавливаем цикл на вводе расхода бензина, вводить кол-во проеденных км не нужно.

    Пробывал реализовать с помощью if/else, но никак не поддаётся.
    Заранее благодарен
     
  4. Kontaktnik

    Kontaktnik New Member

    Регистрация:
    22 авг 2012
    Сообщения:
    3
    Симпатии:
    0
    спасибо, уже разобрался
     
Загрузка...

Поделиться этой страницей