неверный вывод, должно быть другое число (345.876)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include<iostream>
void str_to_double(char st[], double res) {
int i = 0;
int del = 10;
for (int i=0; st[i] != '.'; i++) {
res = res * 10 + (st[i] - '0');
}
i++;
for (int i=0; i < strlen(st); i++) {
res += (double)(st[i] - '0') / (double)del;
del *= 10;
}
printf("%lf", res);
}
int main() {
char st[] = "345.876";
double res = 0;
str_to_double(st, res);
}
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
for (int i=0; i < strlen(st); i++) {
res += (double)(st[i] - '0') / (double)del;
del *= 10;
}
а тут вы взяли и пошли опять с начала строки
надо было
for (; i < strlen(st); i++) {
и кстати в первом цикле (хотя это не влияло на результат) надо бы тоже
for (; st[i] != '.'; i++) {