Используя только scanf ("% c", & s) ввести заданное действительное число - C (СИ)

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

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

Используя только символьный ввод, то есть функцию scanf ("% c", & s), где s - переменная типа char, ввести заданное действительное число, записанное по правилам языка С, и присвоить его действительной переменной х. Поиском пользовалась, похожего ничего не нашла. Если что, не судите строго). Буду очень благодарна!

Решение задачи: «Используя только scanf ("% c", & s) ввести заданное действительное число»

textual
Листинг программы
#include <stdio.h>
#include <cstring>
 
int main(void)
{
    double mc,md,pd=1,res;
    int    i=0,k=0,m,j,z1,z2;
    char   S[100],c;
 
    scanf_s("%s",S);
 
    mc=0.0;
    md=0.0;
    res=0.0;
    while (S[i]!='.')
    {
        i++;
        k++;
    }
    m=k;
    for (i=0; i<k+1; i++)
    {
        c=S[i];
        switch (c)
        {
        case '0':
            z1 = 0;
            mc=mc*10+z1;
            break;
        case '1':
            z1 = 1;
            mc=mc*10+z1;
            break;
        case '2':
            z1 = 2;
            mc=mc*10+z1;
            break;
        case '3':
            z1 = 3;
            mc=mc*10+z1;
            break;
        case '4':
            z1 = 4;
            mc=mc*10+z1;
            break;
        case '5':
            z1 = 5;
            mc=mc*10+z1;
            break;
        case '6':
            z1 = 6;
            mc=mc*10+z1;
            break;
        case '7':
            z1 = 7;
            mc=mc*10+z1;
            break;
        case '8':
            z1 = 8;
            mc=mc*10+z1;
            break;
        case '9':
            z1 = 9;
            mc=mc*10+z1;
            break;
                
        }
    }
        j=i;
        while (S[i+1] != '\0')
        {
            i++;
        }
 
        int h=strlen(S);
        for (j = m+1; j < h; j++)
        {
            c=S[j];
            switch (c)
            {
            case '0':
                     z2=0;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '1':
                     z2=1;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '2':
                     z2=2;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '3':
                     z2=3;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '4':
                     z2=4;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '5':
                     z2=5;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '6':
                     z2=6;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '7':
                     z2=7;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '8':
                     z2=8;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            case '9':
                     z2=9;
                     md=md*10+z2;
                     pd=pd/10;
                     break;
            }
        }
    res=mc+md*pd;
    printf("%f OK!\n",res);
    return 0;
}

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

В данном коде используется scanf_s для ввода строки (название переменной S). Далее идет обработка этой строки. Переменная i и k используются для отслеживания индексов в строке. В начале цикла, пока не встретится точка, происходит ввод числовой части (переменная mc). Затем идет ввод десятичной части (переменная md). После этого происходит ввод и обработка каждой цифры десятичной части (переменная pd). Цифра считывается, приводится к типу int и добавляется к соответствующей переменной (в зависимости от того, какая цифра была введена). После обработки всех цифр десятичной части происходит вычисление и вывод результата.

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


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

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

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