Registrovaný: 06 Jan 2012, 19:26 Príspevky: 458 Bydlisko: pod Pátrovom Udelené body:228 bodov Získané body:21 bodov
1) Napíšte program, ktorý spočíta N prvých prirodzených čísiel a vypíše napr.: Sucet prvych 5 cisiel je 15. N definujte ako symbolickú konštantu.
Spoiler:
Kód:
#include <stdio.h> #define N 5 // symbolicka konstanta N = 5
int main(void) { int i, j = 0;
for (i = 1; i <= N; i++) { // cyklus, i je 1 az 5 printf("%2d + %d = ", j, i); // vypise j (pred vypoctom) + i = j += i; // pri kazdom cykle sa hodnota j zvacsi o momentalnu hodnotu i printf("%2d\n", j); // vypise j po vypocte a odriadkuje } printf("\nSucet prvych %d cisiel je %d.\n", N, j); // vypis vysledku
return 0; }
2) Čítajte znaky z klávesnice až do EOLN, ktoré sa zadefinujete. Po skončení čítania vypíšte počet zadaných čísiel. Ďalej odpíšte len zadané malé písmená, ktoré preveďte na veľké. Využite makrá isdigit(), islower() a toupper() zo súboru ctype.h.
Spoiler:
Kód:
#include <stdio.h> #include <ctype.h> #include <string.h> #define EOLN '\n' // definovany koniec citania z klavesnice (ENTER)
int main(void) { int ncislic = 0, c;
printf("Zadavaj lubovolne znaky pre citanie, zadavanie ukoncis klavesou ENTER.\n\n");
while ((c = getchar()) != EOLN) { // cyklus bezi kym sa nezada ENTER if (isdigit(c)) // ak je znak cislica ++ncislic; // pripocitaj jedna k celkovemu poctu cislic else if (islower(c)) { // ak je znak male pismeno printf("male %c\tvelke %c\n", c, toupper(c)); // vypis male pismeno a jeho ekvivalent velke pismeno } } printf("\nZadanych bolo %d cislic.\n", ncislic); // vypise celkovy pocet zadanych cislic
return 0; }
3) Napíšte makro na_tretiu(x), ktoré bude počítať tretiu mocninu. Vyskúšajte ho na výrazoch: na_tretiu(3) na_tretiu(i) na_tretiu(2 + 3) na_tretiu(i * j + 1)
Spoiler:
Kód:
#include <stdio.h> #include <math.h> //#define na_tretiu(x) ((x) * (x) * (x)) // klasicky spôsob x krat x krat x #define na_tretiu(x) pow(x, 3.0) // pouzitie funkcie pow() z kniznice math.h
int main(void) { int i = 6, j = 4;
/* vo vypise musi byt float (%f), ak by bolo int (%d), vysledky by boli nuly */ printf("%6.f\n", na_tretiu(3)); // %6.f vypise desatinne cislo bez desatinnej ciarky printf("%6.f\n", na_tretiu(i)); // a posledna cislica vpravo bude na 6 stlpci zlava printf("%6.f\n", na_tretiu(2 + 3)); // to iste printf("%6.f\n", na_tretiu(i * j + 1)); // to iste
return 0; }
4) Definujte makro je_velke(c), ktoré vráti 0 ak znak nie je veľké písmeno a 1, ak je veľké písmeno.
Spoiler:
Kód:
#include <stdio.h> #include <ctype.h> #define EOLN '0' #define je_velke(c) (isupper(c)) // funkcia isupper() z kniznice ctype.h => ak je znak velke pismeno, TRUE = 1, FALSE = 0
int main(void) { int c;
printf("Zadavaj lubovolne znaky pre citanie, zadavanie ukoncis znakom 0 (nula).\n" "Ak zadas velke pismeno, vytlacim 1, ak iny znak, vytlacim 0.\n"); while ((c = getch()) != EOLN) // cyklus bezi kym nie je zadana nula printf("%c\t%d\n", c, je_velke(c)); // vypis zadaneho znaku, tabulator, 0 alebo 1, podla vysledku
return 0; }
5) Definujte makro moze_tlacit(c), ktoré zistí, ži je znak tlačiteľný (od ASCII hodnoty 32 do 126). Pomocou makra vytlačte ACSII tabuľku.
Spoiler:
Kód:
#include <stdio.h> #include <ctype.h> #define moze_tlacit(c) (isprint(c)) int main(void) { int i;
printf("Vytlacim tabulku ACSII (tlacitelne znaky od ASCII hodnoty 32 do 126).\n"); for (i = 0; i <= 255; i++) { if (moze_tlacit(i)) printf("%d -> %c\n", i, i); } return 0; }
6) Definujte makro citaj_int(i), ktoré číta z klávesnice celé číslo. Makro sa musí dať použiť vo výraze: if ((j = citaj_int(k)) == 0) Nápoveda: Využite operátor čiarka.
Spoiler:
Kód:
#include <stdio.h> #define citaj_int(i) (scanf("%d", &i), i) int main(void) { int j, k;
8) Napíšte program, ktorý bude čítať 10 celých čísiel. Čísla bude čítať buď zo súboru CISLA.TXT, kde bude každé číslo na novom riadku, alebo z klávesnice. Pri obidvoch spôsoboch sa bude na obrazovke vypisovať text: Zadaj 1. cislo : Určite počet párnych čísiel.
Spoiler:
Kód:
#include <stdio.h> int main(void) { FILE *fr; int i, j, k, c, d;
k = 0; if ((fr = fopen("CISLA.TXT", "r")) == NULL) { printf("Subor CISLA.TXT sa nepodarilo otvorit.\n"); return 0; /* ukoncenie programu */ } for (i = 1; i <= 10; i++) { printf("Chces citat cislo zo <s>uboru alebo z <k>lavesnice? : "); c = getchar();
if (c == 'k') { printf("Zadaj %d. cislo : ", i); scanf("%d", &j); if (j % 2 == 0) k += 1; } else if (c == 's') { fscanf(fr, "%d", &d); printf("Zadaj %d. cislo : %d\n", i, d); if (d %2 == 0) k += 1; } else { i -= 1; printf("Nespravna volba, znovu!!!\n"); } while ((c = getchar()) != '\n') ; putchar('\n'); } printf("\nPocet parnych cisiel z desiatich precitanych bol %d.\n", k); if (fclose(fr) == EOF) printf("Subor sa nepodarilo zavriet.\n"); 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