Uživatelské nástroje

Nástroje pro tento web


pitel:ijc:du1

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
pitel:ijc:du1 [08. 04. 2013, 09.24:36] – file pitelpitel:ijc:du1 [30. 12. 2022, 13.43:01] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Domácí úkol č.1 ======
 +<file c enumdny.c>
 +// Encoding: ISO-8859-2
  
 +// enumdny.c
 +// Řešení IJC-DU1, příklad a)
 +// Autor: Jan Kaláb, FIT
 +// Přeloženo gcc 4.1.1
 +
 +#include "error.h"
 +#include "enumdny.h"
 +
 +#include <stdio.h>
 +#include <ctype.h>
 +#include <string.h>
 +
 +const char *DayShort [] = {"", "po", "út", "st", "čt", "pá", "so", "ne"};
 +const char *DayShortASCII [] = {"", "po", "ut", "st", "ct", "pa", "so", "ne"};
 +const char *DayLong [] = {"", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota", "neděle"};
 +const char *DayLongASCII [] = {"", "pondeli", "utery", "streda", "ctvrtek", "patek", "sobota", "nedele"};
 +
 +void JeToDen (enum dny den) {
 +  if (den < Po || den > Ne)
 +  Error("PrintDay: hodnota %d mimo rozsah\n", den);
 +}
 +
 +void PrintDayShortASCII (enum dny den) {
 +  JeToDen(den);
 +  printf ("%c%s", toupper(DayShortASCII[den][0]), DayShortASCII[den]+1);
 +}
 +
 +void PrintDayLongASCII (enum dny den) {
 +  JeToDen(den);
 +  printf ("%c%s", toupper(DayLongASCII[den][0]), DayLongASCII[den]+1);
 +}
 +
 +void PrintDayShort(enum dny den) {
 +  JeToDen(den);
 +  printf("%c%s", toupper(DayShort[den][0]), DayShort[den]+1);
 +}
 +
 +void PrintDayLong(enum dny den) {
 +  JeToDen(den);
 +  printf("%c%s", toupper(DayLong[den][0]), DayLong[den]+1);
 +}
 +
 +enum dny ReadDay (void) {
 +//  printf("ReadDay\n");
 +
 +  char slovo[100]; //100 znaku by mohlo stacit
 +  int i=0;
 +  int znak;
 +
 +  while ((znak=getchar())!=EOF) {
 +    if (znak==EOF) return 0;
 +    if (!isalpha(znak)) continue; //zahodime blbosti
 +    if (i < sizeof(slovo)-1) slovo[i++] = tolower(znak);
 +  }
 +  slovo[i++] = '\0'; //ukonceni retezce
 +//  printf ("Precetl jsem: %s\n",slovo);
 +  
 +  for (enum dny i = Po; i <= Ne; i++) {
 +    if (strcmp(slovo, DayShortASCII[i])==0) return i;
 +    if (strcmp(slovo, DayShort[i])==0) return i;
 +    if (strcmp(slovo, DayLongASCII[i])==0) return i;
 +    if (strcmp(slovo, DayLong[i])==0) return i;
 +  }
 +  return 0;
 +}
 +</file>
 +
 +<file c enumdny.h>
 +// enumdny.h
 +// Řešení IJC-DU1, příklad a)
 +// Autor: Jan Kaláb, FIT
 +// Přeloženo gcc 4.1.1
 +
 +enum dny {Po=1, Ut, St, Ct, Pa, So, Ne};
 +
 +void PrintDayShort (enum dny den);
 +void PrintDayShortASCII (enum dny den);
 +void PrintDayLong (enum dny den);
 +void PrintDayLongASCII (enum dny den);
 +
 +enum dny ReadDay(void);
 +</file>
 +
 +<file c enumtest.c>
 +// enumtest.c
 +// Řešení IJC-DU1, příklad a)
 +// Autor: Jan Kaláb, FIT
 +// Přeloženo gcc 4.1.1
 +
 +#include "error.h"
 +#include "enumdny.h"
 +
 +#include <stdio.h>
 +#include <locale.h>
 +
 +int main(void) { /* test funkcí - NEMĚNIT!!! */
 +  enum dny den;
 +  char *l = setlocale(LC_ALL,"cs_CZ");
 +  if(l==NULL)
 +      Error("setlocale: Nelze nastavit českou lokalizaci\n");
 +  den = ReadDay(); // čte Po, Pondělí, Pondeli, PONdeli, ....
 +  PrintDayShort(den);        // tiskne Po
 +  printf("\n");
 +  PrintDayShortASCII(den);   // tiskne Po
 +  printf("\n");
 +  PrintDayLong(den);         // tiskne Pondělí
 +  printf("\n");
 +  PrintDayLongASCII(den);    // tiskne Pondeli
 +  printf("\n\n");
 +  for( den = Po; den < 10; den++ ) { /* úmyslná chyba */
 +    PrintDayShortASCII(den);
 +    printf("\n");
 +  }
 +  return 0;
 +}
 +</file>
 +
 +<file c error.cz>
 +// error.c
 +// Řešení IJC-DU1, příklad a)
 +// Autor: Jan Kaláb, FIT
 +// Přeloženo gcc 4.1.1
 +
 +#include "error.h"
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <stdarg.h>
 +
 +void Error (const char *fmt, ...) {
 +  va_list parametry;
 +  va_start (parametry, fmt);
 +  fprintf (stderr, "CHYBA: ");
 +  vfprintf (stderr, fmt, parametry);
 +  fprintf (stderr, "\n");
 +  va_end (parametry);
 +  exit (1);
 +}     
 +</file>
 +
 +<file c error.h>
 +// error.h
 +// Řešení IJC-DU1, příklad a)
 +// Autor: Jan Kaláb, FIT
 +// Přeloženo gcc 4.1.1
 +
 +void Error (const char *fmt, ...);
 +</file>
 +
 +<file make Makefile>
 +CC = gcc
 +CFLAGS = -O2 -std=c99 -pedantic -Wall 
 +PROGS = enumtest
 +LOGIN = xkalab00
 +ARCHIVER = zip
 +
 +all: $(PROGS)
 +
 +enumtest: enumtest.o error.o enumdny.o
 +
 +enumdny.o: enumdny.c error.h enumdny.h
 +enumtest.o: enumtest.c error.h enumdny.h
 +error.o: error.c error.h
 +
 +clean:
 + -rm -f *.o $(PROGS)
 +
 +pack:
 + -$(ARCHIVER) $(LOGIN).zip *.c *.h Makefile
 +</file>
/var/www/wiki/data/attic/pitel/ijc/du1.1365413076.txt.bz2 · Poslední úprava: 30. 12. 2022, 13.43:01 (upraveno mimo DokuWiki)