notatki
Transkrypt
notatki
Wstęp do programowania Kurs INP003203L Laboratorium 8-9 Karol Tarnowski [email protected] A-1 p. 411B Plan wykładu • Tablice • Tablice znakowe 2/10 Tablice • Problem Napisz program zliczający liczbę wystąpień każdej cyfry i każdego białego znaku oraz pozostałych znaków. Rozróżnić musimy 12 rodzajów danych wejściowych. Zamiast tworzyć 10 liczników dla wszystkich cyfr, wygodniej jest zastosować tablicę liczników. 3/10 Tablice #include <stdio.h> /*program zliczający cyfry, białe znaki i inne*/ main() { int c, i, nwhite, nother; int ndigit[10]; nwhite = nother = 0; for(i=0; i<10; ++i) ndigit[i] = 0; 4/10 Tablice while( (c = getchar()) != EOF) if( c >= '0' && c <= '9' ) ++ndigit[c - '0']; else if( c == ' ' || c == '\n' || c == '\t' ) ++nwhite; else ++nother; printf("digits ="); for( i=0; i<10; ++i) printf(" %d", ndigit[i]); printf(",\nwhitespace characters = %d,\nothers = %d.\n",nwhite,nother); } 5/10 Tablice • int ndigit[10]; • if( c >= '0' && c <= '9' ) ++ndigit[c - '0']; • if(warunek1) instrukcja1; else if(warunek2) instrukcja2; ... else instrukcja-n; 6/10 Tablice znakowe • Przyjęto konwencje, według której znak o kodzie 0 ogranicza tablicę znakową. 7/10 Tablice znakowe Przykład #include <stdio.h> int main(){ char napis[] = "0123456789"; char c; int i; for( i=0; napis[i]!=0; i++){ printf("%d ",napis[i]); printf("%d\n",napis[i+1]); } return 0; } 8/10 Tablice znakowe Przykład 2 #include <stdio.h> int atoi(char s[]); int main(){ char napis[] = "123"; int liczba; liczba = atoi(napis); printf("%s %d\n", napis, liczba); } 9/10 Tablice znakowe Przykład 2 int atoi(char s[]){ int i, n; n = 0; for(i=0; s[i] >= '0' && s[i] <= '9'; ++i){ n = 10*n + (s[i] - '0'); } return n; } 10/10