Słuchajcie mam takie zadanie żeby zrobić program gdzie użytkownik wprowadza liczbę rzeczywistą z przecinkiem zamiast kropki i mam to robić z ciągiem znaków chyba i na funkcjach, nie wiem jak zrobić to i z czego skorzystać a jestem początkująca w programowaniu macie jakieś rady jak to ogarnąć ?
Skorzystaj z c/c++
https://en.cppreference.com/w/c/locale/setlocale
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
double a, b;
char * l = setlocale(LC_NUMERIC, "pl_PL");
if (!l) {
printf("locale not set!\n");
} else {
printf("new locale is %s!\n", l);
}
while (2 == scanf("%lf %lf", &a, &b)) {
printf("%lf + %lf = %lf\n", a, b, a + b);
}
return EXIT_SUCCESS;
}
Przy czym konfiguracja systemu operacyjnego musi wspierać polskie locale (czyli na niektórych komputerach możesz zobaczyć locale not set!
, ale na tych używanych w z polskim językiem, zadziała).
Na moim Win10 z VS2019:
C:\Users\MarekR22\Downloads>cl locale.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.23.28107 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
locale.c
Microsoft (R) Incremental Linker Version 14.23.28107.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:locale.exe
locale.obj
C:\Users\MarekR22\Downloads>locale.exe
new locale is pl_PL!
1,2 1,3
1,200000 + 1,300000 = 2,500000
1.2 1.3
C:\Users\MarekR22\Downloads>
Linie 14
i 16
to ręczne wprowadzanie danych (linia 16
to nieudane wczytanie danych co kończy program).
Niestety żaden znany mi kompilator dostępny online nie wspiera polskiego locale.
Tak poza tym:
marysia12257 skomentowała(a):
Napisz program który pozwoli wprowadzić użytkownikowi liczbę rzeczywistą z przecinkiem zamiast kropki, zwiększ jej wartość o 0,001 a następnie wypisze wynik na ekranie również z przecinkiem. Dokonaj odpowiednich konwersji w osobnych funkcjach.
Ta treść zadania wskazuje na to, że nauczyciel niezbyt zna się na rzeczy (co widać po zaproponowanym przez mnie rozwiązaniu).