Определить ограничения на вводимые пользователем значения и не допустить ввода неверных значений - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В общем, выделил жирным то с чем проблема. А вообще программа работает, но как я понял нужно что бы окно ввода ( cmd.exe ) не закрывалось пока не будут введены правильные значения и не будет выведен ответ, а у меня после ввода пишет что "Введены некорректные значения" и предлагает нажать любую кнопку для закрытия окна. Определить ограничения на вводимые пользователем значения и не допустить ввода неверных значений (

не продолжать программу пока не будут введены корректные значения

).
#include "StdAfx.h"
#include <stdio.h>
#include <math.h>
#include <clocale>
 
int main(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    float m1, m2, r, F;
    float const G = 0.0000000000667384; // гравитационная постоянная
    printf("Введите массы тел и расстояние между телами: \n");
    scanf("%f %f %f", &m1, &m2, &r);
        if ((m1 > 0) && (m2 > 0) && ( r > 0))
            {
                F = ( G * m1 * m2 ) / ( r * r );
                printf("Сила притяжения равна: %f\n", F);
            }
            
        else
            {
                printf ("Введены некорректные значения \n");
            }
getchar ();
return 0;
}
Не могу отредактировать название темы, модер выручай

Решение задачи: «Определить ограничения на вводимые пользователем значения и не допустить ввода неверных значений»

textual
Листинг программы
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <locale.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
float m1 = 0, m2 = 0, r = 0, F = 0;
float const G = 0.0000000000667384; // гравитационная постоянная
    
printf("Введите массы тел и расстояние между телами: \n");
scanf("%f %f %f", &m1, &m2, &r);
fflush(stdin);
if (!((m1 > 0) && (m2 > 0) && ( r > 0))) 
{
do 
{
printf ("Введены некорректные значения \n");
printf("Введите массы тел и расстояние между телами: \n");
scanf("%f %f %f", &m1, &m2, &r);
fflush(stdin);
}
while (!(m1 > 0 && m2 > 0 && r > 0));
} 
 
F = ( G * m1 * m2 ) / ( r * r );
printf("Сила притяжения равна: %f \n", F);
getchar();
 
return 0;
}

Объяснение кода листинга программы

  1. Установка начальных значений переменных m1, m2, r, F и G.
  2. Вывод сообщения с просьбой ввести массы тел и расстояние между ними.
  3. Проверка корректности введенных значений. Если они некорректны, то пользователю выводится сообщение об ошибке и запрос на повторный ввод.
  4. Если значения корректны, то вычисляется сила притяжения F как произведение G на массы тел и расстояние между ними, деленное на квадрат расстояния.
  5. Выводится значение силы притяжения F.
  6. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы