Использование цикла для запуска программы n раз - PullRequest
0 голосов
/ 03 мая 2019

Я новичок в языке программирования C.Я пытаюсь запустить код ниже N раз (на основе пользовательского ввода «Введите количество итераций»).Я пытаюсь сделать это с помощью цикла for (также пытался с циклом while), но безуспешно.

Всякий раз, когда я запускаю приведенный ниже код, мой терминал постоянно повторяет «Введите два числа с плавающей запятой:».Я должен закрыть терминал и снова открыть его, чтобы повторить попытку.Проблема связана с моим циклом for?Я интерпретирую цикл for как: «a = 0; если a> 0; приращение a».Есть ли способ, которым я могу установить ограничение для «если a> 0» или я должен использовать цикл while?Если пользователь вводит «3» для количества итераций, я ожидаю, что программа запросит «Введите два числа с плавающей запятой» 3 раза (с ответом).

        float sum (float m, float n){
        return m+n;}
        int main() {   
        float x, y;
        int a; 
        printf("Enter amount of iterations: ");
        scanf("%d", &a);
        for (int i; i < 0; i++) {
        printf("Enter two float numbers: ");
        scanf("%f %f", &x, &y);
        float su = sum(x,y);
        printf("%f and %f = ", x, y);
        printf("%f\n", su);}
        return 0;}

ПРАВИЛЬНЫЙ ОТВЕТ Отформатирован для удобства чтения:

float sum(float m, float n)
{
    return m + n;
}

int main()
{
    float x, y;
    int a;
    printf("Enter amount of iterations: ");
    scanf("%d", &a);
    for (int i = 0; i < a; i++)
    {
        printf("Enter two float numbers: ");
        scanf("%f %f", &x, &y);
        float su = sum(x, y);
        printf("%f and %f = ", x, y);
        printf("%f\n", su);
    }
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Это должно вести себя так, как вы хотели бы:

#include <stdio.h>

static float sum(float m, float n)
{
    return m + n;
}

int main(void)
{
    float x, y;
    int a;
    printf("Enter amount of iterations: ");
    if (scanf("%d", &a) != 1)
    {
        fprintf(stderr, "Invalid input for iterations\n");
        return 1;
    }
    for (int i = 0; i < a; i++)
    {
        printf("Enter two float numbers: ");
        if (scanf("%f %f", &x, &y) != 2)
        {
            fprintf(stderr, "Failed to read to floating point numbers\n");
            return 1;
        }
        float su = sum(x, y);
        printf("%f and %f = ", x, y);
        printf("%f\n", su);
    }
    return 0;
}

Обратите внимание, что он проверяет, что операции ввода выполнены успешно, и сообщает об ошибках при стандартной ошибке (stderr).Код использует стандартный цикл C for для подсчета от 0 до предела - это идиоматический C. Вы должны привыкнуть к его использованию.

Как я отметил в комментарии a в цикле for отличается от a, объявленного ранее в вашем коде и установленного операцией ввода, и не связано с ним.a в цикле for не инициализируется;Вы не можете сказать, сколько раз цикл будет выполнен.Хороший компилятор должен предупредить вас о переопределении или теневом копировании a.

0 голосов
/ 03 мая 2019

для (i = 0; i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...