Registrovaný: 06 Jan 2012, 19:26 Príspevky: 458 Bydlisko: pod Pátrovom Udelené body:228 bodov Získané body:21 bodov
1. Zisti veľkosť všetkých základných dátových typov (int, float, ...) v bajtoch.
Spoiler:
Kód:
/*********************************************** * * 1.c ver. 2.0 * popis je vyššie * =========================================== * * libcosenior, august 2012 * ***********************************************/
#include <stdio.h>
/* funkcia main() */ int main(void) { /********************************************************* * Zakladne datove typy su 4: char, int, float a double. * * Je vsak mozna ich modifikacia za pomoci modifikatorov:* * short, long alebo unsigned. * * Napr.: short int, long double, unsigned char * *********************************************************/ printf("Velkosti zakladnych datovych typov v bajtoch:\n\n" "char\t= %d\n" "int\t= %d\n" "float\t= %d\n" "double\t= %d\n", sizeof(char), sizeof(int), sizeof(float), sizeof(double)); return 0; }
2. Napíš funkciu int set(char a, char *p_a) s jedným vstupným a druhým výstupným parametrom. Funkcia ako svoju návratovú hodnotu vracia 1, ak bolo vo vstupnom parametre písmeno a 0 v ostatných prípadoch. Do výstupného parametru uloží funkcia opačný typ písmena (veľké prevedie na malé a naopak), ak bol vstupný znak písmeno, alebo ho nezmení, ak znak nebol písmeno. Otestuj v programe. Vo funkcii main() bude výpis znaku z výstupného parametru funkcie set() na základe vyhodnotenia jej výstupnej hodnoty za pomoci if-else. Celý program náležite okomentuj.
Spoiler:
Kód:
/*********************************************** * * 2.c ver. 2.0 * popis je vyssie * =========================================== * * libcosenior, august 2012 * ***********************************************/
#include <stdio.h> #include <ctype.h> // pouzitie makier na zistenie typu znakov a ich konverziu
/* vo funkcii je typ návratovej hodnoty int, vstupný parameter je char a, výstupný parameter je volanie odkazom char *p_a */ int set(char a, char *p_a) { *p_a = islower(a) ? toupper(a) : isupper(a) ? tolower(a) : a; // priradenie hodnoty pointeru return (isalpha(a) ? 1 : 0); // navratova hodnota funkcie }
int main(void) { char c, *p_c = &c; /* definicia premennej c, definicia pointeru p_c a jeho sucasna inicializacia adresou premennej c */
printf("Zadaj jeden znak z klavesnice a stlac Enter: "); c = getchar(); printf("\nZadal si znak %c, ", c); /* vyhodnotenie navratovej hodnoty funkcie */ if (set(c, &c) == 1) printf("je to pismeno a jeho opacny typ je %c.\n", *p_c); // vypis hodnoty z pointeru else printf("nie je to pismeno.\n"); return 0; }
3. Napíš funkciu long citaj_znak(FILE *fr, int *p_c), ktorá prečíta jeden znak zo súboru TEST.TXT a vráti ho pomocou druhého parametru. Návratovou hodnotou funkcie bude počet volaní tejto funkcie (využitie lokálnej statickej premennej). Hlavný program vypíše pomocou tejto funkcie súbor a nakoniec aj počet prečítaných znakov.
Spoiler:
Kód:
/*********************************************** * * 3.c ver. 2.0 * popis je vyssie * =========================================== * * libcosenior, august 2012 * ***********************************************/
#include <stdio.h>
/* funkcia precita jeden znak zo suboru a vrati ho pomocou druheho parametru navratovou hodnotou je pocet volani dunkcie */ long citaj_znak(FILE *fr, int *p_c) { static long a = 0; // lokalna staticka premenna, zvysuje sa pri kazdom pouziti funkcie // riadkom (return a++;)
*p_c = getc(fr); // priradenie precitaneho znaku do pointeru return a++; // navratova hodnota = pocet volani funkcie }
int main(void) { FILE *fr; int i, *p_i = &i; /* definicia premennej i, definicia pointeru p_i a jeho sucasna inicializacia adresou premennej c */
if ((fr = fopen("TEST.TXT", "r")) == NULL) { printf("Subor sa nepodarilo otvorit.\n"); return 0; } do { citaj_znak(fr, &i); printf("%c", *p_i); } while (*p_i != EOF); printf("\n\nSubor TEST.TXT ma %d znakov.\n", (citaj_znak(fr, &i))); fclose(fr); return 0; }
4. Napíš funkciu, ktoré usporiada hodnoty 3 premenných int a, b, c tak, aby po skončení kódu funkcie platilo a <= b <= c. Uvedené premenné budú definované vo funkcii main. Vstupné parametre funkcie budú adresy tých premenných. Hodnoty premenných budú zadané z klávesnice (main) a výpis bude vyzerať nejak takto: vstup: a = 5, b = 58, c = 3 výstup: a = 3, b = 5, c = 58
Spoiler:
Kód:
/*********************************************** * * 4.c ver. 2.0 * popis je vyssie * =========================================== * * libcosenior, august 2012 * ***********************************************/
#include <stdio.h>
/* funkcia usporiada tri hodnoty od najmensej po najvacsiu */ void poradie(int *p_a, int *p_b, int *p_c) { int i = *p_a, j = *p_b, k = *p_c; // vlozenie hodnot z pointerov do pomocnych premennych // aby bol zapis terarnych operatorov prehladnejsi
*p_a = i < j && i < k ? i : j < k ? j : k; // najmensie *p_c = i > j && i > k ? i : j > k ? j : k; // najvacsie *p_b = i != *p_a && i != *p_c ? i : j != *p_a && j != *p_c ? j : k; //stredne }
int main(void) { int a, b, c, *p_a = &a, *p_b = &b, *p_c = &c; /* definicia premennych, definicia pointerov a ich sucasna inicializacia adresami premennych */
printf("Zadaj tri rozdielne cele cisla, zoradim ich od najmensieho po najvacsie.\n"); scanf("%d%d%d", &a, &b, &c); printf("vstup: a = %d, b = %d, c = %d\n", a, b, c); poradie(&a, &b, &c); printf("vstup: a = %d, b = %d, c = %d\n", *p_a, *p_b, *p_c); return 0; }
_________________ kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor), Skype: libcokamo, ICQ: 56312279 Ak treba, napíš mi na libcosenior@gmail.com. To mám v mobile a stále po ruke.
Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 1 hosť
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 Nemôžete zasielať súbory v tomto fóre