Member 14790817 Ответов: 2

Продолжайте создавать бесконечный цикл в моем цикле for.


Здравствуйте, я создаю программу, которая будет отображать таблицу с длиной и периодом маятника. Я спрашиваю пользователя о длине, а затем о обновленной/2-й длине. Я использую цикл for, чтобы продолжать отображать значения таблицы. Мне разрешено отображать не более 20 строк. Я продолжаю получать бесконечный цикл, когда запускаю его. Пожалуйста, помогите. P. s Я обязан создать функцию, и пользователь также может ввести отрицательное значение для 2-й длины, например -2. Спасибо Вам за помощь.

Что я уже пробовал:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.141592

    double pendulum_Period(double length);
int main()
{
    double length;
    double updateLength;
    int i;



    printf("\nThis program displays a table of Pendulum lengths and their respective period.\n"
           "\nPlease enter the length of the pendulum(ft):  ");
    scanf("%lf", &length);

    if( length <= 0 )
    {
        printf("\n\nError: Length must be > 0\n"
               "Please enter the length of the pendulum(ft):   ");
        scanf("%lf", &length);
    }


    printf("\n\nPlease enter the update value for the length(ft):  ");
    scanf("%lf", &updateLength);



     printf("\nLength(ft)\t\t\tPeriod(s)\n"
            "------------------------------------------\n");


    for( i = length; i <= 20; length += updateLength)
    {
        double period = pendulum_Period(length);
        printf("%.6f\t\t\t%.6f\n", length, period);
        printf("------------------------------------------\n");
    }


    return 0;
}


    double pendulum_Period(double length)
    {

        double T;
        double period;
        double gravity;
        gravity = 32.2;
        T = (2 * PI)*(sqrt(length/gravity));
        period = T;

        return period;
    }

2 Ответов

Рейтинг:
20

k5054

Взгляните на эту петлю:

for( i = length; i <= 20; length += updateLength)
{
    double period = pendulum_Period(length);
    printf("%.6f\t\t\t%.6f\n", length, period);
    printf("------------------------------------------\n");
}

Теперь что произойдет, если вы измените первый printf на
printf("loop %d: %.6f\t\t\t%.6f\n", i, length, period);

Это должно помочь вам понять, почему цикл продолжается бесконечно.


CPallini

5.

Рейтинг:
1

steveb

Вы забыли увеличить счетчик i. Ваш

for( i = length; i <= 20; length += updateLength)


скорее всего так и должно быть

for( i = length; i <= 20; i += updateLength)