!! "#! *&!'! & '!# 2&&! () &

Podobne dokumenty
Nazwy programów, polece, katalogów, wyniki działania wydawanych polece.

1. Wprowadzenie do C/C++

Wprowadzenie do kompilatorów

1. Wprowadzenie do C/C++

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

!"" ' #$$$%&' ()*$+&',! Nazwy programów, polece, katalogów, wyniki działania wydawanych polece.

Proces tworzenia programu:

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Sposoby przekazywania parametrów w metodach.

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Struktury, unie, formatowanie, wskaźniki

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

Argumenty wywołania programu, operacje na plikach

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Podstawy programowania w języku C++

Podstawy programowania w języku C i C++

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Planowanie adresacji IP dla przedsibiorstwa.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wstęp do Programowania, laboratorium 02

Podstawy programowania C. dr. Krystyna Łapin

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Programowanie i struktury danych

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

%$-,./+,-.0! Nazwy programów, polece, katalogów, wyniki działania wydawanych polece.

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki

System midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver Aplikacja WWW ver. 2.1 Instrukcja Obsługi

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Standardy danych w tagu EPC

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C

dr inż. Jarosław Forenc

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Język C zajęcia nr 11. Funkcje

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Stałe i zmienne znakowe. Stała znakowa: znak

Tablice, funkcje - wprowadzenie

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

1 Podstawy c++ w pigułce.

Projektowanie algorytmów rekurencyjnych

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie komputerowe. Zajęcia 4

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Lab 9 Podstawy Programowania

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Języki i metodyka programowania. Wprowadzenie do języka C

Programowanie w językach wysokiego poziomu

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Logiczny model komputera i działanie procesora. Część 1.

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

1.Wstęp. 2.Generowanie systemu w EDK

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Zmienne, stałe i operatory

Pytania sprawdzające wiedzę z programowania C++

Wskaźniki. Programowanie Proceduralne 1

Gramatyki regularne i automaty skoczone

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Biblioteka standardowa - operacje wejścia/wyjścia

E S - uniwersum struktury stosu

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

SUPLEMENT SM-BOSS WERSJA 6.15

while(wyrażenie) instrukcja

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

KURS C/C++ WYKŁAD 6. Wskaźniki

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wstęp. do języka C na procesor (kompilator RC51)

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Wstęp do programowania

Zastosowanie programu Microsoft Excel do analizy wyników nauczania

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wskaźniki. Informatyka

2 Przygotował: mgr inż. Maciej Lasota

Transkrypt:

!" #$!! "#! # %&&'()'& *&!'! $% &% &! +")(,-+./012%34&5 & '!# 2&&! 6&&)'&! 78 78 () & Zadanie polega na napisaniu programu umoliwiajcego wprowadzanie i odczytywaniu do / z tablicy jednowymiarowej podanego zbioru liczb całkowitych. Dla ułatwienia na pocztek zakładamy, e dane podawane s z klawiatury. Po uruchomieniu i przetestowaniu takiej uproszczonej wersji programu, powinien zosta on rozbudowany o moliwo zapisywania oraz odczytywania danych z plików dyskowych. Zapis i odczyt danych zorganizowany jest w postaci tzw. odwzorowania bitowego. Zakładamy równie, e zbiór liczb jest unikalny (dla urealnienia zadania niech bd to np. numery telefonów w jednej strefie numeracyjnej). *) $'"% w zadaniu chodzi o przechowywanie zbioru np. 10.000 liczb całkowitych z zakresu <1, 10000> a nie 10.000 dowolnych (dowolnie duych) liczb całkowitych. Zakładamy równie, e nie wszystkie liczby z podanego zakresu wystpuj w zbiorze. Bez ostatniego załoenia zadanie nie miałoby oczywicie sensu. chcc przechowa 10.000 kolejnych liczb całkowitych (zakładamy, e pracujemy w rodowisku 32. bitowym gdzie liczby typu int s 4. bajtowe), potrzebowa bdziemy 40.000 bajtów opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 1

pamici. Moemy jednak odwzorowa nasz zbiór liczb jako cig 10.000 bitów, gdzie i-ty bit jest jedynk wtedy i tylko wtedy, gdy liczba i znajduje si w zbiorze. Przykładowo układ bitów w tablicy: -- rodowisko jest 32. bitowe, wic: (10000/32=312.5) -- po zaokrgleniu w gór daje 313 int Tab[313]; do której zapisalimy nastpujcy zbiór liczb: 2, 5, 12, 9999, 10000 wyglda nastpujco: [01001000 00010000 00000000 00000000... 00000011 00000000 00000000] Powyej pokazano tylko cz z dokładnie 10.016 bitów tablicy int Tab[313]. Zauwamy, e z powodu wprowadzenia niezbdnych zaokrgle (liczba 312.5 została zaokrglona do 313) nasz system bdzie słuył do przechowywania 10.016 liczb zamiast zakładanych 10.000. Oczywicie gdyby zaokrgli w dół, do liczby 312, mona by zapamita tylko 9984 liczb. Zakładamy ponadto, e bity liczymy od jeden (nie od zera). Uwaga: rozwa równie inne sposoby deklaracji odpowiedniej tablicy np: // ta wersja jest bardziej ogólna, gdy bdzie zadziała // w rodowisku zarówno 32. bitowym jak i 16. bitowym #define X 10000 / sizeof(int)*8 int Tab[X]; // lub char Tab[10000 / 8]; // typ char jest zawsze 8. bitowy // lub #include <limits.h> char Tab[10000 / CHAR_BIT]; Swój wybór uzasadnij. W programie staraj si tam gdzie jest to tylko moliwe pisa kod, który nie bdzie zaleny od platformy systemowej. w programie naley zaimplementowa zarówno operacje zapisu jak i odczytu liczb. Przykładowo zapis do tablicy liczby 9999 ustawia 9999-ty bit w tablicy Tab[], odczyt liczby 9999 polega na sprawdzeniu, czy 9999-ty bit tablicy Tab[] jest ustawiony. powysze rozwaania ilustruje te nastpujcy rysunek, pokazujcy zawarto bitow pierwszego elementu tablicy czyli element Tab[0] oraz ostatnie 8 bitów ostatniego elementu tablicy, czyli elementu Tab[312]. 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0... 0 0 0 0 0 0 0 0 Tab[0]... Tab[312] w rzeczywistoci tak duy zbiór danych byłby z pewnoci odczytywany z pliku dyskowego. Opracuj równie wersj plikow programu. W pierwszej wersji dane do pobrania niech znajduj si w pliku tekstowym (chodzi o format tekstowy a nie tekstowy tryb otwarcia pliku to s dwa zupełnie róne zagadnienia!). Po zakoczeniu pracy programu, dane z tablicy (znajdujcej si oczywicie w pamici operacyjnej komputera) powinny równie zosta zapisane do pliku tekstowego. Zastanów si nad rozmiarem pliku przeznaczonym do przechowywania zbioru 10.000 całkowitych liczb 4. bajtowych w postaci tekstowej. Przedyskutuj ew. korzyci wyboru formatu binarnego zapisu danych w pliku (chodzi tu o binarny format zapisu danych na pliku) dla przechowywania zbioru 1000 liczb, 10.000 liczb, opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 2

1.000.000 liczb. Dyskusj zamie w sprawozdaniu. We własnym programie zastosuj najlepszy według ciebie sposób zapisu / odczytu na / z dysku. zastanów si równie nad problemem zapamitywania liczb powtarzajcych si. Moesz załoy, e liczby mog powtarza si tylko okrelon liczb razy np. 7 razy. Zastanów si, czy dozwolona liczba powtórze podlega jakim ograniczeniom. Odpowied uzasadnij na podstawie własnej propozycji rozwizania problemu zapamitywania powtarzajcych si liczb. Dyskusj zamie w sprawozdaniu. od pocztku dziel program na mniejsze czci (funkcje). Program zawierajcy jedynie funkcj main() nie bdzie oceniany. +),-- Przykładowe uruchomienie programu (w wersji bezplikowej nie bd wystpowa dwie pierwsze opcje). W przykładzie nie obsługuje si wystpowania powtarzajcych si liczb. Wybierz tryb pracy: [L] ładowanie danych z pliku [Z] zapis danych na plik [W] wstawianie liczby do tablicy [O] odczytywanie liczby z tablicy [U] usuwanie liczby z tablicy [A] automatyczne odczytanie zawartoci tablicy [Q] wyjcie z programu Twój wybór: A W bazie nie ma adnej liczby Twój wybór: W Podaj liczb do wstawienia: 5 OK. Twój wybór: W Podaj liczb do wstawienia: 5 BŁD: liczba 5 jest ju zarejestrowana Twój wybór: W Podaj liczb do wstawienia: 2 OK. Twój wybór: K BŁD: nieznane polecenie Twój wybór: O Jakiej liczby szukasz: 4 Brak szukanej liczby Twój wybór: O Jakiej liczby szukasz: 5 Liczba jest zarejestrowana Twój wybór: A W bazie znajduj si nastpujce liczby: 2, 5 Twój wybór: W Podaj liczb do wstawienia: 10 OK. opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 3

Twój wybór: Z Zapisano liczby do pliku. W pliku znajduj si liczby: 2, 5, 10 Twój wybór: L Załadowano liczby z pliku. W pliku znajduj si liczby: 2, 5, 10 Twój wybór: U Jak liczb usun: 2 OK. Twój wybór: U Jak liczb usun: 7 BŁD: brak szukanej liczby 7 Twój wybór: Z Zapisano liczby do pliku. W pliku znajduj si liczby: 5, 10 Twój wybór: Q Do zobaczenia!.) & Sprawozdanie powinno zawiera nastpujce elementy: wydrukowany kod ródłowy programu (do wydruku uy koniecznie takiej czcionki: Courier New 8pt). Plik ródłowy musi by rozsdnie skomentowany oraz czytelnie sformatowany (moesz uy jakiego programu narzdziowego, który pomoe ładnie sformatowa tekst ródłowy). Nieczytelny kod nie bdzie sprawdzany! plik makefile do kompilacji programu, dyskusj rozwizania i rzeczowe uwagi autora programu. /) 0 ( W trakcie pisania programu moe przyda si analiza poniszych trzech, krótkich programów słucych do wywietlania podanej liczby typu char lub int w formacie dwójkowym. Pierwszy z nich był omawiany na wykładzie, drugi i trzeci jest ulepszon wersj pierwszego. // num2bin.c // ver. 1 // converts char number to its binary representation #include <limits.h> // for CHAR_BIT void main(void) unsigned char j, bit; char num; unsigned char mask; // musk MUST be unsigned while(num!= 0) // terminate on 0 opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 4

mask = 0x80; // 1000 0000 binary printf("\nenter number: "); scanf("%d", &num); printf("binary of %d is: ", num); for(j=0; j < CHAR_BIT; j++) // for each bit bit = (mask & num)? 1 : 0; // bit is 1 or 0 printf("%d ", bit); // print bit if(j==3) // print dash between printf("-- "); // each four bits mask >>= 1; // shift mask to right // end for // end while // end main() // num2bin.c // ver. 2 // converts int number to its binary representation #define INT_BITS sizeof(int)*8 void main(void) unsigned char j, bit; int num; unsigned int mask; // musk MUST be unsigned printf("\n%o \n%x \n%o \n%x \n%x \n%x \n%x \n", ~077, ~077, ~0, ~0, 0, ~0<<31, ~(~0<<31)); // koniecznie przeanalizuj! // gdy wynik działania powyszej funkcji printf bdzie dla // ciebie niezrozumiały, dalsza analiza tego // programu (i nastpnego) nie ma sensu! while(num!= 0) //mask = 0x80000000; //mask = 0x80000; mask = ~0 << INT_BITS-1; // gdy int 32. bitowy // gdy int 16. bitowy // lepiej, gdy ~0 NIE zaley // od długoci typu! printf("\nenter number: "); scanf("%d", &num); printf("binary of %d is\n: ", num); for(j=0; j < INT_BITS; j++) bit = (num & mask)? 1 : 0; // bit is 1 or 0 printf("%d ", bit); if( (j+1)%8 == 0) printf("-- "); mask >>= 1; // print bit // print dash between // bytes opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 5

// num2bin.c // ver. 3 // converts int number to its binary representation #define INT_BITS sizeof(int)*8 void main(void) unsigned char j, bit; int num; // w tej wersji jawnie zadeklarowana maska i (jawne) // przesuwanie w niej bitów nie jest ju potrzebne while(num!= 0) printf("\nenter number: "); scanf("%d", &num); printf("binary of %d is\n: ", num); for(j=0; j < INT_BITS; j++) bit = (num & (unsigned int)(~0 << INT_BITS 1) >> j)? 1 : 0; // do złoone wyraenie, ale poprawne // zwró uwag, e jakiekolwiek dodatkowe nawiasy s tu zbdne! // (przeanalizuj priorytet i łczno uytych operatorów) printf("%d ", bit); if((j+1)%8 == 0) printf("-- "); W ostatniej wersji programu num2bin.c zastosowano dosy złoone wyraenie (jest tam a osiem operatorów!). Tak złoonych konstrukcji naley raczej unika, gdy s one bardzo podatne na błdy, a podany przykład traktowa jako ciekawostk programistyczn. Zauwamy, e bez rzutowania (unsigned int), program bdzie działał, jednak wyniki pojawiajce si na ekranie bd błdne. Rzutowanie to przygotowuje poprawny argument dla operatora przesunicia >>. Operator ten bdzie prawidłowo przesuwał bity maski w prawo tylko dla argumentów BEZ znaku. Zgodnie z dokumentacj jzyka C, działanie tego operatora dla argumentów ZE znakiem jest nieokrelone i zaley od implementacji (kompilatora). Poniszy program pozwala zaobserwowa błd w procesie przesuwania bitów maski. Bez trudu zauwaamy, e przesuwajc bitowo liczb ZE znakiem w prawo, nastpuje (tu zbdne) powielanie bitu znaku. // num2bin.c // ver. 4 #define INT_BITS sizeof(int)*8 void main(void) unsigned char j; for(j=0; j < INT_BITS; j++) printf("j: %2d %x ", j, ~0 << INT_BITS - 1 >> j); opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 6

printf("%8x\n", (unsigned int)(~0 << INT_BITS - 1) >> j); // wynik działania programu j: 0 80000000 80000000 j: 1 c0000000 40000000 j: 2 e0000000 20000000 j: 3 f0000000 10000000 j: 4 f8000000 8000000 j: 5 fc000000 4000000 j: 6 fe000000 2000000 j: 7 ff000000 1000000 j: 8 ff800000 800000 j: 9 ffc00000 400000 j: 10 ffe00000 200000 j: 11 fff00000 100000 j: 12 fff80000 80000 j: 13 fffc0000 40000 j: 14 fffe0000 20000 j: 15 ffff0000 10000 j: 16 ffff8000 8000 j: 17 ffffc000 4000 j: 18 ffffe000 2000 j: 19 fffff000 1000 j: 20 fffff800 800 j: 21 fffffc00 400 j: 22 fffffe00 200 j: 23 ffffff00 100 j: 24 ffffff80 80 j: 25 ffffffc0 40 j: 26 ffffffe0 20 j: 27 fffffff0 10 j: 28 fffffff8 8 j: 29 fffffffc 4 j: 30 fffffffe 2 j: 31 ffffffff 1 1) 0 * Kody ródłowe powinny by zawsze jednolicie sformatowane, gdy przede wszystkim poprawia to ich czytelno. Rczne dbanie o właciwe formatowanie moe by jednak do uciliwe. Dlatego te stworzono program o nazwie indent, który szybko i elegancko wykonuje za nas cał czarn robot. Ma on bardzo wiele opcji (patrz dokumentacja man), jednak w praktyce zwykle wystarcza nam tylko kilka z nich. Zachcamy do zapoznania si z dokumentacj. Poniej zamieszczono plik ródłowy w jzyku C przed formatowaniem oraz wyniki jakie uzyskano po przepuszczeniu tego pliku przez program indent. Wersj pierwotn celowo bardzo rozformatowano, aby pokaza moliwoci omawianego programu. Postaraj si samodzielnie zorientowa jaki efekt kocowy daj poszczególne przełczniki. opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 7

/* indent_bad.c */ /* Pierwotny plik ródłowy */ /* Całkowity chaos! */ #include<stdio.h> int main (void) int i, sum=0; int count= 0; int total = 0; char ch; for (i=0;i<3;i++) printf ("Hello world\n" ); sum+=i; while (count<10 ) total += count ; printf( "\ncount=%d,total=%d",count++,total); printf ("\ntype a character: "); ch=getchar(); if ( ch == 'y' ) printf ("\nyou typed y.");printf("\nnot some other character.\n"); return 0; /* indent -kr -i2 -ts2 indent_bad.c -o indent_kr.c */ int main(void) int i, sum = 0; int count = 0; int total = 0; char ch; for (i = 0; i < 3; i++) printf("hello world\n"); sum += i; while (count < 10) total += count; printf("\ncount=%d,total=%d", count++, total); printf("\ntype a character: "); ch = getchar(); if (ch == 'y') printf("\nyou typed y."); printf("\nnot some other character.\n"); return 0; opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 8

/* indent -gnu -i2 -ts2 indent_bad.c -o indent_gnu.c */ int main (void) int i, sum = 0; int count = 0; int total = 0; char ch; for (i = 0; i < 3; i++) printf ("Hello world\n"); sum += i; while (count < 10) total += count; printf ("\ncount=%d,total=%d", count++, total); printf ("\ntype a character: "); ch = getchar (); if (ch == 'y') printf ("\nyou typed y."); printf ("\nnot some other character.\n"); return 0; /* indent -gnu -i0 -ts2 indent_bad.c -o indent_gnu.c */ int main (void) int i, sum = 0; int count = 0; int total = 0; char ch; for (i = 0; i < 3; i++) printf ("Hello world\n"); sum += i; while (count < 10) total += count; printf ("\ncount=%d,total=%d", count++, total); printf ("\ntype a character: "); ch = getchar (); if (ch == 'y') printf ("\nyou typed y."); printf ("\nnot some other character.\n"); return 0; opracowali: dr in. Artur Gramacki, dr in. Jarosław Gramacki 9