Допустить ввод в массив только чисел - C (СИ)

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

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

Вопрос такой:мне нужно написать программу,в которой пользователь вводит число типа float.Если то,что он ввёл,состоит из цифр и там присутствует одна точка,то выводится сообщение о том,что всё нормально;если то,что он ввёл,содержит буквы,посторонние сиволы или больше одной точки,то ошибка...Я хочу создать 2 массива..в одном цифры от 0 до 9 и точка,в другой будет записываться строка,которую введёт пользователь..Теперь вопрос:как нужно проверять,есть ли в массиве(строке пользователя) элементы другого массива(с цифрами и точкой)?)Прошу помочь)

Решение задачи: «Допустить ввод в массив только чисел»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
 
void GetFloat();
 
 
int main(){
    printf("Float value: ");
    GetFloat();
    return 0;
}
void GetFloat(){
    char sym; 
    int array[255] = {0};
    int after[255] = {0};
    int index=0;
    int index_after=0;  
    bool flag = false;
    
    while((sym = getchar())!='\n'){
        if(sym > 0x29 && sym < 0x40){
            if (flag) {
                after[index_after++] = sym-0x30;
            } 
            else {                      
                array[index++] = sym-0x30;
            }
        }
        if('.' == sym ){
            flag = true;
        }
    }
    int some;
    printf("Value in array: ");
    for(some=0; some<index-1; some++){
        printf("%d", array[some]);
    }
    printf("\nValue in after point: ");
    for(some=0; some<index_after; some++){
        printf("%d", after[some]);
    }   
 
}

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

В этом коде определенная последовательность символов вводится в массив, и этот процесс продолжается до тех пор, пока не будет введен символ новой строки. Код определяет два массива: массив array для хранения введенных чисел и массив after для хранения десятичных чисел. В начале каждого числа в массиве array добавляется символ, который был введен. Если введено десятичное число (в коде определено как любой символ от '0' до '9'), то оно добавляется в массив after. Если введенный символ является десятичной точкой, то флаг устанавливается в значение true, и все последующие введенные числа добавляются в массив after. После ввода всех чисел, код выводит значения обоих массивов. Этот код предназначен для ввода чисел с клавиатуры и записи их в массив. Он проверяет, является ли введенный символ числом, и если это так, то добавляет его в массив. Если введенный символ является десятичной точкой, то он меняет флаг, чтобы начать запись десятичных чисел в другой массив.

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


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

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

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