Mam do wykonania: Napisz program, który wczyta z klawiatury 2 pojedyncze znaki i sprawdzi, który
występuje wcześniej w alfabecie.
Nie wiem co napisać w kodzie aby sprawdzane było które znaki są wcześniejsze w alfabecie
Bez gwarancji zgodności ze standardem (ale zadziała właściwie wszędzie) - po prostu operator porównania: możesz założyć, że 'a' < 'c'
, a 'A' < 'C'
. Jak chcesz porównywać litery wielkie z małymi to użyj np. tolower
aby je sprowadzić do wspólnego zbioru.
Z pełną zgodnością: możesz sobie zrobić tablicę od a do z i szukać w niej indeksów.
Osobiście sugeruję pierwsze rozwiązanie.
Mój program nie działa poprawnie.
#include <stdio.h>
main()
{
char pierwszy,drugi;
printf("podaj pierwszy znak\n");
scanf("%c",&pierwszy);
printf("podaj drugi znak");
scanf("%c",&drugi);
if('a' < 'c')
("pierwszy %c wystepuje wczesniej niz drugi %c",pierwszy,drugi);
else
("drugi %c wystepuje wczesniej niz pierwszy %c",drugi,pierwszy);
}
Trollujesz?
if('a' < 'c')
Co tu sprawdzasz?
("pierwszy %c wystepuje wczesniej niz drugi %c",pierwszy,drugi);
Co tu wg ciebie ma się wydarzyć?
Nie wiem jak powinno się to wykonać. To była moja nieudana próba i nie potrafię powiedzieć co miałam na myśli.
napisać if('a' < 'c')
to tak jakby napisać if(1 < 3)
. To zawsze prawda, bo porównujesz stałe. Ty chcesz porównać swoje zmienne, a nie stałe.
A ta druga linia to pewnie miało być wywołanie pewnej funkcji wyświetlającej rzeczy na ekranie, a nie sam nawias.
To jak wykonać porównanie tych liter?
A jak byś porównała liczby przekazane przez użytkownika? Znaki są tak naprawdę liczbami, które są specjalnie traktowane przy wypisywaniu.
liczba1>liczba2
To tutaj zrób tak samo.
Nie mogę podać drugiej litery
#include <stdio.h>
main()
{
char pierwszy,drugi;
printf("podaj pierwszy znak\n");
scanf("%c",&pierwszy);
printf("podaj drugi znak");
scanf("%c",&drugi);
if(pierwszy > drugi)
printf("pierwszy %c wystepuje wczesniej niz drugi %c",pierwszy,drugi);
else
printf("drugi %c wystepuje wczesniej niz pierwszy %c",drugi,pierwszy);
}
Możesz, ale tutaj akurat jest taka fajna pułapka, że program wczytuje znak nowej linii, bo pierwszą literę zatwierdzasz enterem. Gdybyś wpisała ab<enter>
to by przeszło jak jest.
Dodaj spację przed %c
w scanf aby zignorować poprzedzające białe znaki:
scanf(" %c", &drugi);
Jak podałam znaki a i b to wypisało, że b występuje wcześniej jak to zmienić?
#include <stdio.h>
main()
{
char pierwszy,drugi;
printf("podaj pierwszy znak\n");
scanf("%c",&pierwszy);
printf("podaj drugi znak");
scanf(" %c",&drugi);
if(pierwszy > drugi)
printf("pierwszy %c wystepuje wczesniej niz drugi %c",pierwszy,drugi);
else
printf("drugi %c wystepuje wczesniej niz pierwszy %c",drugi,pierwszy);
}
Wypisuj poprawnie, teraz masz odwrotnie warunek.