Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".
1 /*
2 * Soubor: 20101129-Mon-nejdelsi-radek.c
3 * Datum: 29.11.2010 10:06
4 * Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 * Licence: GNU/GPL
6 * Úloha: Program vypíše na výstup nejdelší řádek, který mu byl
7 * předán na vstupu
8 */
9
10 #include <stdio.h>
11
12 /////////////////////////////////////////////////////
13 #define MAXDELKA 1024
14
15 /*
16 * Funkce načte řádek do pole s[] a vrátí délku načteného řádku
17 */
18 int nacti_radek(char s[], int maxdelka)
19 {
20 int pocet,znak;
21 for (pocet=0;pocet<maxdelka-1 && (znak=getchar()) != EOF && znak != '\n';pocet++) {
22 s[pocet]=znak;
23 }
24 if (znak == '\n') {
25 s[pocet]=znak;
26 pocet++;
27 }
28 s[pocet]='\0';
29
30 return pocet;
31 }
32
33 /* Funkce kopíruje řetězec z[] do řetězce do[] */
34 void kopiruj(char z[], char kam[])
35 {
36 int i=0;
37 while ( (kam[i] = z[i]) != '\0' ) {
38 i++;
39 }
40 }
41
42 /**
43 * Hlavní program.
44 */
45 int main(void) {
46 char radek[MAXDELKA];
47 char mradek[MAXDELKA];
48 int delka;
49 int mdelka=0;
50
51 while ( (delka = nacti_radek(radek,MAXDELKA)) != 0 ) {
52 if ( delka > mdelka ) {
53 mdelka = delka;
54 kopiruj(radek,mradek);
55 }
56 }
57 printf("%d\n",mdelka);
58 printf("%s",mradek);
59 return 0;
60 }