Используя только 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 и добавляется к соответствующей переменной (в зависимости от того, какая цифра была введена).
После обработки всех цифр десятичной части происходит вычисление и вывод результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д