Úvod do jazyka C Algoritmizácia úloh
Zadanie Zistite, či zadaný rok je priestupný. Program spracujte formou funkcie
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> // tu bude funkcia, vracajuca priestupny / nepriestupny rok main() { int i, rok; char rok_text[20]; for(i=1890; i<2020; i++) if(priestupny_rok(i)==1) strcpy(rok_text,"priestupny"); else strcpy(rok_text,"nepriestupny"); printf("\n\r Rok %d je: %s ",i,rok_text); }
int priestupny_rok(int rok) { int priestupny=1; if((rok%4)!=0) priestupny=0; if((rok%100)==0) if((rok%400)!=0) priestupny=0; } return priestupny;
Zadanie Nájdite najväčší spoločný deliteľ dvoch čísel Na zistenie čísla použite funkciu
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> // tu bude funkcia main() { int cislo1, cislo2, delitel; cislo1=150; cislo2=120; delitel=spolocny_delitel(cislo1,cislo2); printf("Najvacsi spolocny delitel %d a %d je %d ", cislo1, cislo2, delitel); }
int spolocny_delitel(int cislo1, int cislo2) { int i, max,delitel; if (cislo1 > cislo2) max=cislo1; else max=cislo2; delitel=1; for(i=1; i<max; i++) printf("\n\r Skusam: %d ",i); if( ((cislo1%i)==0) && ((cislo2%i)==0)) delitel=i; } return delitel;
Zadanie Nájdite najmenší spoločný násobok dvoch čísel Na zistenie čísla použite funkciu
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> // tu bude funkcia main() { int cislo1, cislo2, nasobok; cislo1=15; cislo2=12; nasobok=spolocny_nasobok(cislo1,cislo2); printf("Najmensi spolocny nasobok %d a %d je %d ", cislo1, cislo2, nasobok); }
int spolocny_nasobok(int cislo1, int cislo2) { int i, max,nasobok; if (cislo1 > cislo2) max=cislo1; else max=cislo2; nasobok=1; for(i=(cislo1*cislo2); i>max; i--) printf("\n\r Skusam: %d ",i); if( ((i%cislo1)==0) && ((i%cislo2)==0)) nasobok=i; } return nasobok;
Výhody použitia štruktúr Položky, ktoré logicky súvisia, sú zjednotené do jedného celku Zápis/čítanie zo súboru sa vykonajú v jednom kroku cez fread() / fwrite(). Nie je potrebné deklarovať n-premenných, ktoré zbytočné rozširujú program
Zadanie úlohy Existuje databáza, kde sú uložené dni a teploty Program ho pridá podľa zadania užívateľa ďalšie, vypíše ich a najde minimum Pre prístup k dátam použite štruktúru „struct“
Hlavný program #include <stdio.h> #include <string.h> struct den_teplota { char den[20]; int teplota; }; void nacitaj_teploty(); void zapis(struct den_teplota *zaznam); void vyber_najnizsiu(); main() nacitaj_teploty(); vyber_najnizsiu(); }
Načítanie teplôt void nacitaj_teploty() { int i, count; char datum[20]; int teplota; struct den_teplota zaznam; printf("\n\r Zadaj pocet dni: "); scanf("%d",&count); for(i=0; i<count; i++) printf("\n\r Zadaj den: "); scanf("%s",&zaznam.den); printf("\n\r Zadaj teplotu: "); scanf("%d",&zaznam.teplota); zapis((struct den_teplota*)&zaznam); } return;
Zápis štruktúry void zapis(struct den_teplota *zaznam) { FILE *fp; fp=fopen("zaznamy.txt","a"); if(fp!=NULL) fwrite((void*)zaznam,sizeof(struct den_teplota),1,fp); fclose(fp); } else {printf("\n\n\r zapis(): chyba pri otvarani suboru");} return;
Načítanie štruktúr a vyhľadanie najnižšej teploty void vyber_najnizsiu() { int i, min=100; struct den_teplota zaznam; char buffer[1024]; FILE *fp; fp=fopen("zaznamy.txt","r"); if(fp!=NULL) while(!feof(fp)) fread(&zaznam,sizeof(zaznam),1,fp); printf("\n\r Den: '%s' Teplota: '%d' ",zaznam.den,zaznam.teplota); if(min>zaznam.teplota) min=zaznam.teplota; } fclose(fp); else {printf("\n\n\r vyber_najnizsiu(): chyba pri otvarani suboru");} printf("\n\n\r Najnizsia teplota: %d ",min); return;
Výpis programu