ANSI C 1

ANSI C 1



1 ELEMENTARZ

tymi w nawiasy klamrowe. W naszym programie zliczania słów po else występuje instrukcja if, która steruje wykonaniem dwóch instrukcji zawartych w nawiasach klamrowych.

Ćwiczenie 1.11. Jak mógłbyś sprawdzić poprawność programu zliczającego sło- i wa? Jaki rodzaj danych wejściowych najlepiej nadaje się do demaskowania błędów, jeśli tu występują?

Ćwiczenie 1.12. Napisz program, który każde słowo wejściowe wypisze w osobnym wierszu.


Tablice

Napiszmy program zliczający liczbę wystąpień każdej cyfry, każdego białego znaki (tj. znaku odstępu, tabulacji i nowego wiersza) oraz wszystkich innych znaków. Jest t< oczywiście problem sztuczny, ale pozwoli nam przedstawić kilka właściwości języl C w jednym programie.

Wyróżniamy aż dwanaście rodzajów danych wejściowych, a więc dla cyfr wygodni* jest zastosować tablicę przechowującą liczniki wystąpień każdej z nich, niż dziesii osobnych zmiennych. Oto jedna z wersji tego programu.

#include <stdio.h>

/* zlicz cyfry, białe znaki, inne */ main()

{

int c, i, nwhite, nother; int ndigit[10];

nwhite = nother = 0; for (i = 0; i < 10; ++i) ndigitfi] = 0;

while ((c = getchar()) != EOF) if (c >= ’0’ && c <= ’9’)

-H-ndigit[c-’0'];

else if (c == ’ ’ 11 c == ’\n’ || c == ’\f) ++nwhite; else

++nother;

printf(”cyfry =”); for (i = 0; i < 10; ++i) printf(” %d", ndigitfi]);

printfC, białe znaki = %d, inne = %d\n”, nwhite, nother);

}

Wynikiem tego programu uruchomionego dla własnego tekstu źródłowego jest wiersz

cyfry = 9300000001, białe znaki = 123, inne = 339 Deklaracja

int ndigit[10];

mówi, że ndigit jest tablicą 10 liczb całkowitych. Indeksy tablic w języku C zawsze rozpoczynają się od zera, elementami tablicy są zatem ndigit[0], ndigit[1], ...» ndigit[9]. Odzwierciedlają to pętle for, z których jedna inicjuje, a druga wypisuje elementy tablicy.

Indeks może być dowolnym wyrażeniem o wartości całkowitej, zawierającym zmienne całkowite (jak i) oraz stałe całkowite.

Szczególnie ten program wykorzystuje właściwości wewnętrznej reprezentacji cyfr. Na przykład instrukcja

if (c >= '0’ && c <= ’9’)...

sprawdza, czy znak w c jest cyfrą. Jeśli tak, to wartością numeryczną tej cyfry będzie

c-’0'

Takie wyrażenie jest poprawne jedynie wtedy, kiedy znaki ’0\ T, ... ’9’ są kolejnymi wartościami uporządkowanymi rosnąco. Na szczęście tak właśnie jest we wszystkich powszechnie stosowanych zbiorach znaków.

Obiekty typu char są z definicji po prostu niewielkimi liczbami całkowitymi, toteż w wyrażeniach arytmetycznych zmienne i stałe typu char są traktowane identycznie jak int. Jest to całkiem naturalne i wygodne; przykładowo C-’0’ jest wyrażeniem całkowitym o wartości między 0 a 9, która odpowiada jednemu ze znaków od ’0’ do ’9’ zawartemu w zmiennej c. Wartość ta jest poprawnym indeksem tablicy ndigit.

Decyzję o tym, czy znak jest cyfrą, białym znakiem czy czymkolwiek innym, podejmuje się w następującym fragmencie programu:

45


Wyszukiwarka

Podobne podstrony:
ANSI C 1 1 ELEMENTARZ Wypisz tekst ahoj, przygodo I już pojawia się pierwsza duża przeszkoda. Aby
ANSI C 2 1 ELEMENTARZ W naszym przykładzie występuje sekwencja

ANSI C 4 1 ELEMENTARZ Większość pracy programu jest realizowana przez pętlę while. Obliczenie temp
ANSI C 5 1 ELEMENTARZ Program wygląda prawie tak samo jak poprzednio, przy czym teraz zmienne fahr
ANSI C 0 1 ELEMENTARZ Ćwiczenie 1.8. Napisz program zliczający znaki odstępu, tabulacji i nowego
ANSI C 8 1 ELEMENTARZ Zmienne zewnętrzne dla fukcji main, getline i copy są zdefiniowane na począt
ANSI C 1 Sterowanie W każdym języku programowania instrukcje sterujące ustalają kolejność wykonywa
ANSI C 1 4 FUNKCJE I STRUKTURA PROGRAMU wykonywalnego pliku zwanego a.out. Jeśli wystąpi błąd, np.
ANSI C 1 4 FUNKCJE I STRUKTURA PROGRAMU I* qsort: uporządkuj v[left]...v[right] rosnąco */ void qs
2 Elementy zbioru wypisuje się pomiędzy nawiasami klamrowymi: ”{” i ”}” np. A = {Jaś, Staś,
nie powinny być stosowane na elementy konstrukcji nośnej Akceptacja zgłoszonych w programach wytwarz
skanuj0019 3 (YtOCtóL OSDOOu-O-ŚCu —    bcogenne. 1— eLemenJtij psuciŁOgeoju^e.
I. Informacje ogolne §1 1.    Studia są prowadzone na podstawie programów studiów
CCF20111211034 (2) —1 38    KULTURA POPULARNA 2010 NR I Program do katalogowania i
Statystyka z elementami badań operacyjnych BADANIA OPERACYJNE - programowanie

więcej podobnych podstron