Jak porównać litery względem kolejności w alfabecie.

0

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

2

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.

0

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);
}

3

Trollujesz?

if('a' < 'c')

Co tu sprawdzasz?

("pierwszy %c wystepuje wczesniej niz drugi %c",pierwszy,drugi);

Co tu wg ciebie ma się wydarzyć?

0

Nie wiem jak powinno się to wykonać. To była moja nieudana próba i nie potrafię powiedzieć co miałam na myśli.

1

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.

0

To jak wykonać porównanie tych liter?

0

A jak byś porównała liczby przekazane przez użytkownika? Znaki są tak naprawdę liczbami, które są specjalnie traktowane przy wypisywaniu.

0

liczba1>liczba2

1

To tutaj zrób tak samo.

0

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);
}

1

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);
0

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);
}

1

Wypisuj poprawnie, teraz masz odwrotnie warunek.

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