Допустить ввод в массив только чисел - C (СИ)
Формулировка задачи:
Решение задачи: «Допустить ввод в массив только чисел»
#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.
После ввода всех чисел, код выводит значения обоих массивов.
Этот код предназначен для ввода чисел с клавиатуры и записи их в массив. Он проверяет, является ли введенный символ числом, и если это так, то добавляет его в массив. Если введенный символ является десятичной точкой, то он меняет флаг, чтобы начать запись десятичных чисел в другой массив.