ANSI C 9

ANSI C 9



6 STRUKTURY

6 STRUKTURY


Tablice struktur

Napiszmy program zliczający wystąpienia każdego słowa kluczowego języka C. Potrzebujemy więc tablicy tekstów przeznaczonej na ich nazwy oraz tablicy liczb całkowitych przeznaczonej na ich liczniki. Jedną z możliwości jest użycie dwóch równoległych tablic keyword i keycount:

char *keyword[NKEYS]; /* słowa kluczowe */ int keycount[NKEYS]; /* liczniki tych słów */

Ale właśnie to, że tablice są równoległe, sugeruje możliwość innej organizacji - tablicy struktur. Informacje związane z każdym słowem kluczowym tworzą parę:

char *word; /* słowo */ int count; /* licznik */

Mamy więc tablicę par. Deklaracja strukturowa

struct key { char *word: int count;

} keytab[NKEYS];

deklaruje strukturowy typ key, definiuje tablicę keytab o elementach będących strukturami tego typu oraz rezerwuje dla nich pamięć. Każdy element tablicy jest strukturą. Można to również zapisać tak:

struct key { char *word; int count;

struct key keytab[NKEYS];

Tablica struktur keytab zawiera stały zbiór nazw, najprościej jest więc zrobić z niej zmienną zewnętrzną i zainicjować raz na zawsze przy jej definicji. Inicjowanie tablicy struktur przeprowadza się podobnie, jak poprzednio - po definicji podaje się ujętą w klamry listę wartości początkowych:

6.3 TABLICE STRUKTUR


struct key { char *word; int count;

} keytabf 1 = {

"auto", 0,

"break”, 0,

"case”, 0,

"char”, 0,

"const", 0,

"continue”, 0,

"default”, 0,

/*... *1 "unsigned”, 0,

”void", 0,'

"volatile”, 0,

"while”, 0

};

Wartości początkowe są wymienione parami odpowiadającymi składowym struktury. Precyzyjniej byłoby ująć w klamry wartości początkowe dla każdego „wiersza” tablicy (każdej struktury), na przykład;

{"auto”, 0 },

{"break", 0 },

{ "case”, 0 },

ale gdy wartościami początkowymi są proste stałe lub napisy i gdy podano wszystkie wartości, wówczas wewnętrzne klamry można opuścić. Jak zwykle, jeśli pominięto wymiar tablicy (nawiasy [] są puste) i podano listę wartości początkowych, to liczba elementów tablicy keytab zostanie wyliczona automatycznie.

Program zliczający wystąpienia słów kluczowych rozpoczyna się deklaracją tablicy keytab. Funkcja main czyta dane wejściowe, cyklicznie wywołując funkcję getword, która za każdym razem pobiera z wejścia jedno słowo. Każde słowo jest poszukiwane w tablicy keytab za pomocą funkcji wyszukiwania metodą bisekcji, znanej z rozdz. 3. Usta słów kluczowych musi być w tablicy uporządkowana rosnąco.

#inc!ude <stdio.h>

#include <ctype.h>

#include <string.h>

#define MAXWORD 100

181


Wyszukiwarka

Podobne podstrony:
ANSI C 9 6 STRUKTURY________ W konsekwencji unia jest strukturą, w której wszystkie składowe są um
ANSI C 0 1 ELEMENTARZ Ćwiczenie 1.8. Napisz program zliczający znaki odstępu, tabulacji i nowego
■    Napisz program zliczający wszystkie liczby parzyste lub nieparzyste w tabli
1.    Napisz program zliczający i wypisujący na ekranie liczbę znaków w pliku tekstow
ANSI C 9 4 FUNKCJE I STRUKTURA PROGRAMU 4 FUNKCJE I STRUKTURA PROGRAMUWprowadzenie Na początku opr
ANSI C 9 4 FUNKCJE I STRUKTURA PROGRAMU gdyż słowo register w deklaracjach nadliczbowych czy też n
ANSI C 7 6 STRUKTURY______ Ćwiczenie 6.5. Napisz funkcję undef, która usuwa nazwę i jej definicję
Struktury danych — mechanizmy kontroli działania Wirth: Algorytmy + struktury danych = programy •
FUNDUSZE STRUKTURALNE Sektorowy Program Operacyjny „Rybołówstwo i przetwórstwo ryb 2004-2006”. Do
Wykres 2.1. Struktura gatunkowa programu TYP 1 w 2013 r. POPU L. WIEDZY R^L °IA OPRAWA RELIGIA ■ FAB
012 2 Programowanie strukturalne Budując program na podstawie języka wysokiego poziomu, należy zwróc
19 2. Struktura pamięci mikrokontrolera 19 Stan portu 1*2 równy jest bardziej znaczącemu bajtowi ws
WYKŁADALGORYTMY I STRUKTURY DANYCH PROGRAMOWANIE: -    proces układania programów,
Programowanie strukturalne Modularne Program podzielony jest na niewielkie fragmenty (podprogramy)
-    z pkt widzenia STRUKTURY PROBLEMU: programowalne/rutynowe/powtarialne - standard

więcej podobnych podstron