Wpis z mikrobloga

jestem januszem w tej sprawie więc prosze bez hejtu :C
pisze prosty kod ktory sprawdza czy podany znak to litera i zmienia wielkosc litery
pisane w C z uzyciem ASCII i problem polega na tym ze nie wazny jaki znak jest podawany wyskakuje ostatni "else", pomozecie?

#include
#include

int main()
{

char znak;
printf("Podaj litere: ");
scanf("%c", &znak);
printf("wartosc znaku w ASCII wynosi %d: \n" ,znak);

if('%d' >= 65 && '%d' <= 90)
{
printf("Wartosc nowego znaku w ASCII %d" ,znak-32 );
printf("\nNowy znak: %c " ,znak-32 );
}
else if('%d' >= 97 && '%d' <= 122)
{
printf("Wartosc nowego znaku w ASCII %d" ,znak+32 );
printf("\nNowy znak: %c " ,znak+32 );
}
else
{
printf("Podany znak nie jest litera!");
}
return 0;
}
#programowanie #c
  • 12
  • Odpowiedz
  • 2
@exaylel to sie w ogóle kompiluje? W pojedynczych apostrofach powinien byc jeden znak, jesli juz np 'c'. W podwójnym apostrofie("tu") sa ciagi znaków. Twoj if powinien porównywać zmienną znak, zamien '%d' na "znak" bez cudzysłowia. Prawidłowy tag, na przyszłość to jezykc ;)
  • Odpowiedz
  • 0
@exaylel ciekawe, co sobie z tym robi kompilator. Jak odpoczne to az sobie sprawdze ;) stawiam ze rzutuje to na ciag znakow hmm...niemniej, powodzenia. Ps "A" to ciag znaków ;) 'A' to znak ¯_(ツ)_/¯
  • Odpowiedz
@Oo-oO: @OlekAleksander: Dobra chlopaki udało mi się
mieliście rację z tym '%d' -> znak. Teraz wszystko dziala poprawnie. Dziękuję za pomoc ;)
sprawny kod mi poszedl tak:
#include
#include

int main()
{

char znak;
printf("Podaj litere: ");
scanf("%c", &znak);
printf("wartosc znaku w ASCII wynosi %d: \n" ,znak);

if(znak >= 65 && znak <= 90)
{
printf("Wartosc nowego znaku w ASCII %d" ,znak+32 );
printf("\nNowy znak: %c " ,znak+32 );
}
  • Odpowiedz
@QBA__: Ja to wiem, ale jednak na studiach pewnie czlowiek z ktorym mam zajecia chce zeby to rozwiazac bez wykorzystania funkcji ( ͡° ʖ̯ ͡°)
A przy okazji sie ucze składni siedząc na tym i myslac co #!$%@?łem xD
  • Odpowiedz