Как прервать цикл ввода вещественных чисел, если была введена *? - C (СИ)
Формулировка задачи:
Как прервать цикл при вводе *? Написал тут, видимо, глупость. Не работает.
#include <stdio.h>
#include <locale.h>
void main()
{
int i;
float nab[40];
setlocale(LC_ALL, "Rus");
printf("Введите набор вещественных чисел. Количество чисел в наборе не должно превышать 40. Концом набора является символ \"*\".\n");
for (i=0; i<=40 ; i++)
{
scanf("%f", &nab[i]);
if (nab[i]='*')
break;
if (i>39)
{
printf ("Введено недопустимое количество символов.\n");
break;
}
}
printf("Ок\n");
}Решение задачи: «Как прервать цикл ввода вещественных чисел, если была введена *?»
textual
Листинг программы
while(scanf("%f", n+i) == 1) // выход если невозможно дрочитать float, в том числе по *
Объяснение кода листинга программы
- В цикле while происходит чтение вещественных чисел с помощью функции scanf().
- Переменная n является указателем на массив, в который считываются числа.
- i - это индекс, который увеличивается на единицу после каждой итерации цикла.
- Функция scanf() возвращает значение 1, если успешно прочитано число, и 0 в противном случае.
- Оператор сравнения ==1 в условии цикла while проверяет, было ли успешно считано число.
- Если ввод числа завершен (введено * или не число), то условие цикла while становится ложным, и цикл прерывается.