Ввод любого типа данных и его определение - C (СИ)

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

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

Приветствую уважаемые программисты! Я только начал изучать СИ, с нуля. Мне нужно написать следующую программу: Ввод = все что угодно. Вывод = "Вы ввели ... , это - (целое число, символ, массив, с плавающей запятой и т.д.)" Как это вообще возможно сделать, если в операторе объявления переменной я обязан указать ее тип? Более того я догадываюсь, что есть несколько способов решить данную задачу. подскажите что - нибудь? З.Ы. Приношу извинения, если вопрос уже поднимался. Я вроде не нашел ответа, но вдруг он уже где-то был...

Решение задачи: «Ввод любого типа данных и его определение»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
    char *dgt, *flt, *alp, s[256];
    int i = 0, j, flag_dgt = 0, flag_alp = 0, flag_flt = 0, n = 0;
    puts("Enter something:");
    while((s[i] = getchar()) != EOF)
        i++;
    s[i] = '\0';
    for(j = 0; j < i; j++){
        if(isdigit(s[j])){
            if(!flag_dgt && !flag_flt)
                dgt = &s[j];
            flag_dgt = 1;
        }
 
        else{
            if(flag_flt){
                puts("You entered real number:");
                for(; flt < &s[j]; flt++)
                    printf("%c", *flt);
                putchar('\n');
                flag_flt = 0;
                flag_dgt = 0;
            }
            if(flag_dgt && s[j] == '.'){
                flag_flt = 1;
                flt = dgt;
                flag_dgt = 0;
            }
            if(flag_dgt && s[j] != '.'){
                puts("You entered integer:");
                for(; dgt < &s[j]; dgt++)
                    printf("%c", *dgt);
                putchar('\n');
                flag_dgt = 0;
            }
            if(isalpha(s[j])){
                if(!flag_alp){
                    alp = &s[j];
                    flag_alp = 1;
                }
                n++;
            }
            else{
                if(flag_alp){
                    if(n == 1){
                        printf("You entered letter %c.\n", *alp);
                        n = 0;
                        flag_alp = 0;
                    }
                    if(n > 1){
                        puts("You entered line:");
                        for(; alp < &s[j]; alp++)
                            printf("%c", *alp);
                        putchar('\n');
                        flag_alp = 0;
                    }
                }
                printf("You entered symbol\n %c\n", s[j]);
            }
 
        }
    }
 
    return 0;
}

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

Ввод данных:

  1. Вводится строка, представляющая собой ввод пользователя.
  2. Строка сохраняется в буфере, представленном массивом символов s.
  3. Цикл while считывает каждый символ из ввода пользователя и сохраняет его в массиве s.
  4. Когда достигается конец файла (EOF), цикл завершается.
  5. В массиве s последний символ устанавливается в нулевой символ, обозначающий конец строки.
  6. Затем начинается цикл for, который проходит через каждый символ в массиве s.
  7. Внутри цикла проверяется, является ли текущий символ цифрой.
  8. Если да, то проверяется, была ли уже обнаружена цифра или десятичная дробь.
  9. Если это первая цифра, то она сохраняется в переменной dgt для обработки десятичной дроби.
  10. Если обнаружена десятичная дробь, то она выводится на экран как десятичная дробь.
  11. Если обнаружена буква, то она выводится на экран как буква.
  12. Если обнаружен символ, отличный от буквы или цифры, то он выводится на экран как символ.
  13. Если обнаружено несколько букв, то они выводятся на экран как строка.
  14. Если обнаружено несколько цифр, то они выводятся на экран как число.
  15. Если обнаружена десятичная дробь, то она выводится на экран как десятичная дробь.
  16. Если обнаружен символ, отличный от буквы или цифры, то он выводится на экран как символ.
  17. После обработки всех входных данных программа завершается.
  18. Ввод и вывод программы осуществляется с помощью функций puts и printf из библиотеки stdio.h.
  19. Библиотека ctype.h используется для проверки, является ли символ буквой, цифрой или символом.
  20. Библиотека stdlib.h используется для считывания символов из ввода пользователя и для работы с памятью.

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


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

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

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