Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #include <stdlib.h>
- #include <string.h>
- #define ROZSAH 200
- #define SUBOR "zajazdy.txt"
- #define RIADOK fgets(buf, 255, fr)
- #define LADENIE
- int vynuluj(float pole[], int pocet);
- int vypis();
- int nacitaj(float cena[], int dni[]);
- int najlacnejsi(float cena[], int dni[], int zaznamy);
- int tabulka_cien(float cena[], int zaznamy);
- int histogram(int dni[], int zaznamy);
- int main(){
- float cena[ROZSAH];
- int dni[ROZSAH], zaznamy=0;
- char volba;
- while ((volba = tolower(getchar())) != 'k'){
- while (getchar() != '\n');
- switch (volba){
- case 'v': vypis(); break;
- case 'n': zaznamy=nacitaj(cena, dni); break;
- case 'l': najlacnejsi(cena, dni, zaznamy); break;
- case 'r': tabulka_cien(cena, zaznamy); break;
- case 'h': histogram(dni, zaznamy); break;
- }
- }
- return 0;
- }
- int vynuluj(float pole[], int pocet){
- int i;
- for (i = 0; i < pocet; i++)
- pole[i] = 0;
- return EXIT_SUCCESS;
- }
- int vypis(){
- FILE *fr;
- char buf[256];
- int i;
- if ((fr = fopen(SUBOR, "r")) == NULL){
- printf("Subor neotvoreny\n");
- return EXIT_FAILURE;
- }
- while (!feof(fr)){
- RIADOK;
- printf("Krajina: %s", buf);
- RIADOK;
- printf("Miesto: %s", buf);
- RIADOK;
- printf("Hotel: %s", buf);
- RIADOK;
- printf("Kategoria: ");
- sscanf(buf, "%d", &i);
- for (; i >= 1; i--)
- putchar('*');
- RIADOK;
- printf("\nCena: %s", buf);
- RIADOK;
- printf("Datum: %s", buf);
- RIADOK;
- printf("Pocet dni: %s\n", buf);
- RIADOK;
- }
- fclose(fr);
- return EXIT_SUCCESS;
- }
- int nacitaj(float cena[], int dni[]){
- int zaznam=0, riadok=1;
- FILE *fr;
- char buf[256];
- vynuluj(cena, ROZSAH); vynuluj(dni, ROZSAH);
- if ((fr = fopen(SUBOR, "r")) == NULL){
- printf("Neotvoreny subor\n");
- return EXIT_FAILURE;
- }
- while (!feof(fr)){
- for (; riadok <= 5 + 8 * zaznam; riadok++)
- RIADOK;
- sscanf(buf, "%f", &cena[zaznam]);
- for (; riadok <= 7 + 8 * zaznam; riadok++)
- RIADOK;
- sscanf(buf, "%d", &dni[zaznam]);
- zaznam++;
- }
- #ifdef LADENIE
- for (riadok = 0; riadok < zaznam; riadok++)
- printf("Zaznam cislo: %d cena: %f pocet dni: %d\n", riadok + 1, cena[riadok], dni[riadok]);
- #endif
- fclose(fr);
- return zaznam;
- }
- int najlacnejsi(float cena[], int dni[], int zaznamy){
- int i;
- float min;
- if (!zaznamy){
- printf("Polozky nie su nacitane\n");
- return EXIT_FAILURE;
- }
- min = cena[0] / dni[0];
- for (i = 1; i < zaznamy; i++)
- min = (cena[i] / dni[i] < min) ? cena[i] / dni[i] : min;
- printf("%g\n", min);
- return EXIT_SUCCESS;
- }
- int tabulka_cien(float cena[], int zaznamy){
- int max_rad=0, akt_rad, i;
- float max=cena[0], akt;
- if (!zaznamy){
- printf("Polozky nie su nacitane\n");
- return EXIT_FAILURE;
- }
- for (i = 1; i < zaznamy; i++)
- max = (cena[i] > max) ? cena[i] : max;
- while (max>=1){
- max /= 10;
- max_rad++;
- }
- for (i = 0; i < zaznamy; i++){
- akt_rad = 0;
- akt = cena[i];
- while (akt >= 1) {
- akt /= 10;
- akt_rad++;
- }
- for (; akt_rad < max_rad; akt_rad++)
- putchar(' ');
- printf("%.2f\n", cena[i]);
- }
- return EXIT_SUCCESS;
- }
- int histogram(int dni[], int zaznamy){
- int max=dni[0], *histogram, i;
- if (!zaznamy){
- printf("Polozky nie su nacitane\n");
- return EXIT_FAILURE;
- }
- for (i = 1; i < zaznamy; i++)
- max = (dni[i]>max) ? dni[i] : max;
- histogram = (int*)malloc(max+1);
- vynuluj(histogram, max + 1);
- for (i = 0; i < zaznamy; i++)
- histogram[dni[i]]++;
- for (i = 0; i <= max; i++)
- if (histogram[i])
- printf("%2d: %d\n", i, histogram[i]);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement