Witam. Na początku chciałbym się przywitać. Jest to mój pierwszy temat na tym forum.
Postanowiłem zacząć przygodę z programowaniem. Jeszcze nie wybrałem języka, z którym wiąże przyszłość, jednak chciałem się nauczyć ogólnych podstaw, nie konkretnego języka, więc zakupiłem książkę "C - szkoła programowania - wydanie VI" Stephena Praty, gdyż czytałem sporo pochlebnych opinii na jej temat i że wiele osób nauczyło się C właśnie dzięki tej książce (a podobno znając C dość łatwo jest przejść na inny język programowania, np. C++ czy Java).
Mniejsza o to, czy wybrałem dobry język/książkę na początek, jednak mam problem z programem, który mam nadzieję pomożecie mi rozwiązać.
Jestem w trakcie wykonywania ćwiczeń z działu 3 "Dane w C". W pytaniach sprawdzających musiałem poprawić kod w taki sposób, aby poprosił użytkownika o podanie liczby krów, a następnie wypisał na ekranie liczbę krowich nóg (czyli pomnożyć liczbę krów x4). Program działa, więc postanowiłem przejść do ćwiczenia, w którym muszę podać znak, a komputer wypisze jego kod w ASCII, jednak nie chcialem tworzyc nowego projektu programu, wiec zacząłem pisać kod w starym projekcie. Zrobiłem to, jednak potem chciałem dodatkowo zmodyfikować program, aby prosił użytkownika o podanie kodu, a potem wypisze znak ASCII odpowiadający temu kodowi. Kod programu wygląda tak:
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(void)
{
int krowy, nogi;
printf("Ile krow naliczyles: ");
scanf("%d", &krowy);
nogi=4*krowy;
printf("\nNaliczyles %d krow. Tyle krow to %d krowich nog!\n",krowy, nogi); //pierwsza czesc
char ch, n;
printf("\nWpisz jakis znak, a ja wyswietle jego kod w ASCII.\n"); //druga czesc
scanf("%c", &ch);
printf("Kod znaku %c to %d.\n",ch,ch);
printf("\nWpisz jakis kod, a ja wyswietle znak przypisany do niego w ASCII.\n"); //trzecia czesc
scanf("%d",&n);
printf("Kod %d ma znak %c",n,n);
getchar();
return 0;
}
A tak wygląda działanie programu:
<
Jak widać część pierwsza działa dobrze, jednak w części drugiej kiedy program prosi o podanie znaku, ten wypisuje jedynie komunikat, że kod znaku to 10 i od razu przechodzi do cześci trzeciej, która jest już akurat poprawna. Dlaczego pojawia się błąd, kiedy komputer powinien prosić o znak i wyswietlenie jego kodu w ASCII? Co ciekawe, kiedy usuwam cala pierwsza cześć programu dotycząca krów, to druga i trzecia część działają bez problemów. Wie ktoś co jest źle w powyższym kodzie? Dodam, że używam kompilatora CodeBlocks 16.01
Dziękuje za pomoc i pozdrawiam.