| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 08.09.11 Prihlásený: 17.09.11 Príspevky: 11 Témy: 4 | Napísal mk*: 12.09.2011 19:04 | |
|
Chcel by som sa naučiť aspoň trochu c, urobil som si malý program (zadanie bolo na webe, a tento funguje):
#include <stdio.h>
/*Uloha: Napisat program, ktory nacita hodnotu do znakovej premennej zn a vzpise '1' ak je to cislo '0' az '9', inak vypise 0*/
main()
{
char zn, dol, hor;
zn= 10;
dol= 0;
hor= 9;
printf("%d\n", (zn>=dol && zn<=hor));
getchar();
}
Tento programík som si chcel vylepšiť aby načítal znak z klávesnice, pridal som tam aj riadok aby mi ukázal aký znak bol zadaný.
Už som presurfoval spústu času, premŕvam sa v knihe Programovací jazyk C a stále to neviem rozlúsknuť. Jednak mi nefunguje true/false, okrem toho ak zadám dvojmiestne číslo tak mi vypíše len prvú číslicu:
#include <stdio.h>
/*Uloha: Napisat program, ktory nacita hodnotu do znakovej premennej zn a vzpise '1' ak je to cislo '0' az '9', inak vypise 0*/
main()
{
char zn, dol, hor;
dol= 0;
hor= 9;
printf("Zadaj na klavesnici lubovolny znak, ak bude z intervalu 0-9 tak program vypise 1\n");
printf("Inak vypise 0\n\n");
printf("Zadaj znak: ");
/*scanf("%c", &zn);*/
zn=getchar();
printf("\n");
printf("zadane cislo je %c\n", zn);
printf("Vysledok je: ");
printf("%d\n", (zn>=dol && zn<=hor));
getchar();
}
Vie mi niekto vysvetliť v čom je problém?
|
|
Registrovaný: 11.01.09 Prihlásený: 27.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 12.09.2011 19:28 | |
|
mk* píše: Jednak mi nefunguje true/false Trocha som ti to upravil ( pod kodom vysvetlenie ): Kód: /*Uloha: Napisat program, ktory nacita hodnotu do znakovej premennej zn a vzpise '1' ak je to cislo '0' az '9', inak vypise 0*/
int main() // 1. chyba - main ma navratovu hodnou typu int {
char zn, dol, hor; dol= '0'; // druha chyba, dole vysvetlene hor= '9'; printf("Zadaj na klavesnici lubovolny znak, ak bude z intervalu 0-9 tak program vypise 1\n"); printf("Inak vypise 0\n\n"); printf("Zadaj znak: "); /*scanf("%c", &zn);*/ zn=getchar(); printf("\n"); printf("zadane cislo je %c\n", zn); printf("Vysledok je: "); printf("%d\n", (zn>=dol && zn<=hor)); getchar();
return 0; } True / false ti nefungovalo preto, lebo 0 a '0' nie je to iste. Kedze porovnavas znaky, tak musis pouzit '0' lebo 0 je vlastne znak s ASCII hodnotou 0, kdezto '0' ma hodnou 48. mk* píše: Ak zadám dvojmiestne číslo tak mi vypíše len prvú číslicu Na nacitanie pouzivas funkciu getchar(), kde uz z nazvu vyplyva, ze sa vrati iba jeden znak. Ak chces nacitavat lubovolne dlhe cislo/retazec, tak pouzi zakomentovanu funkciu scanf. P.S. Vsetok kod umiestnuj do znaciek [code ][/code], ktore mas hore na paneli. Je to ovela viac prehladnejsie.
|
|
Registrovaný: 08.09.11 Prihlásený: 17.09.11 Príspevky: 11 Témy: 4 | Napísal autor témy mk*: 12.09.2011 19:39 | |
|
Dík
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|