Zamiana char na int i wykorzystanie do obliczeń

0

Witam. Mam pewien problem. Otóż na zajęciach mieliśmy polecenie, aby wykonać program, który:

  1. Zada pytanie i pobierze od użytkownika dowolna odpowiedz
  2. Poprosi o podanie dowolnej liczby
  3. Z pytania 1 i 2 pobierze liczby i wyliczy pole trójkąta
  4. Wyrysuje tyle gwiazdek ile wyniesie pole

Problem dotyczy tego, że nie wiem jak z 1 pytania pobrać liczbę, skoro zadamy np. "Ile masz palców u prawej ręki?"
Odpowiedź: "Pięć" <--- ale są tu 4 znaki i to właśnie liczba 4 ma zostać pobrana do dalszych obliczeń. Oto co udało mi się stworzyć, ale nie działa poprawnie:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	char a;
	printf("Ile masz palcow u prawej reki?\n");
	scanf("%c", &a);
	char *str = "123";
	int b = atoi(str);
	printf("%d", b);


	float c;
	printf("Podaj dowolna liczbe dodatnia:\n");
	scanf("%f", &c);

	double d;
	d = (b*c / 2);
	printf("Pole powierzchni trojkata wynosi: %f\n", d);

	int e = 1;
	while (e <= d)
	{
		printf("*", e);
		++e;
	}
}
0

b=a-'0';

0

jak wpisałem

...
char *str = "123";
 int b = (a-'0');
printf("%d",b);
...

to wywala mi wartość "-48"
a chciałbym, że jak wpisuje "cztery" to żeby dawało 6 :)

0

Teraz powinno być dobrze

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a;
	printf("Ile masz palcow u prawej reki?\n");
	scanf("%d", &a);
	//char *str = "123";
	//int b = atoi(str);
	printf("%d", a);


	float c;
	printf("Podaj dowolna liczbe dodatnia:\n");
	scanf("%f", &c);

	double d;
	d = (a*c) / 2;
	printf("Pole powierzchni trojkata wynosi: %f\n", d);

	int e = 1;
	int tym = (int)d;

	while (e <= tym)
	{
		printf("*", e);
		++e;
	}
}
0

Ten kawałek kodu powinien Ci pomóc:

#include <cstdio>

int main(int argc, char* argv[]) {

    printf("Dowolne pytanie\n");
    int dlugoscOdpowiedzi = 0;

    // Pobiera pierwszy znak
    int literaOdpowiedzi = getchar();

    while (literaOdpowiedzi != '\n') {
        literaOdpowiedzi = getchar();
        ++dlugoscOdpowiedzi;
    }

    printf("Dlugosc odpowiedzi wynosi %d\n", dlugoscOdpowiedzi);

    return 0;
}
 

Co prawda nie przechowuje odpowiedzi na pytanie ale też nie pisałeś że jest to konieczne. Jeśli chcesz rozszerzyć go o tą funkcjonalność będziesz musiał zająć się dynamiczną alokacją tablicy (przy założeniu że długość odpowiedzi może być dowolna).

0

Ok działa, dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1