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