Materiał uzupełniający do ćwiczen z przedmiotu: Język
Transkrypt
Materiał uzupełniający do ćwiczen z przedmiotu: Język
Materiał uzupełniający do ćwiczen z przedmiotu:
Język programowania obiektowego - ćwiczenia na
tablicach znaków
13 maja 2010
Program studenta ma realizować przetwarzanie tablic znakowych. Należy
wykonać ćwiczenie bez użycia funkcji bibliotecznych (string.h, ctype.h) – operacje przetwarzania napisów i identyfikowania znaków wykonać na piechotę.
Po implementacji tego programu warto przejrzeć informacje dotyczące funkcji i makr zawartych w bibliotekach identyfikowanych przez nagłówki sting.h i
ctype.h.
1
Funkcje podstawowe
1. int strlen( char s[])
Funkcja:
Wlasna implementacja funkcji wyznaczajacej dlugosc napisu liczona w
znakach
Parametry:
char s[] – tablica zawierajaca napis ktorego dlugosc jest wyznaczana
Rezultat:
dlugosc napisu liczona w znakach
2. int lwrstrcnt( char s[])
Funkcja:
Wyznacza liczbe malych liter w napisie s
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
Liczba malych liter w napisie s
3. int uprstrcnt( char s[])
Funkcja:
1
Wyznacza liczbe duzych liter w napisie s
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
Liczba duzych liter w napisie s
2
Funkcje dodatkowe
1. int lwrstrcnt( char s[] )
Funkcja:
Wyznacza liczbe malych liter w napisie s
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
Liczba malych liter w napisie s
2. int uprstrcnt( char s[] )
Funkcja:
Wyznacza liczbe duzych liter w napisie s
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
Liczba duzych liter w napisie s
3. int dgtstrcnt( char s[] )
Funkcja:
Wyznacza liczbe cyfr w napisie s
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
Liczba cyfr w napisie s
4. int nalphastrcnt( char s[] )
Funkcja:
Wyznacza liczbe liter i cyfr w napisie s
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
Liczba liter i cyfr w napisie s
5. int chrstrcnt( char c, char s[] )
Funkcja:
Wyznacza liczbe wystapien znaku c w s
2
Parametry:
char c – znak poszukiwany w napisie
char s[] – tablica zawierajaca napis
Rezultat:
Liczba wystapien znaku c w napisie s
6. int chrstrpos( char c, char s[] )
Funkcja:
Wyznacza indeks (pozycje w napisie) pierwszego wystapienia znaku c w s
Parametry:
char c – znak poszukiwany w napisie
char s[] – tablica zawierajaca napis
Rezultat:
Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony
7. int chrstrcnt( char c, char s[] ) Funkcja:
Wyznacza indeks (pozycje w napisie) ostatniego wystapienia znaku c w s
Parametry:
char c – znak poszukiwany w napisie
char s[] – tablica zawierajaca napis
Rezultat:
Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony
8. void change( char s[], char a, char b)
Funkcja:
Zamienia kazdy znak [a] na znak [b] w lancuchu s[]
Parametry:
char s[] – tablica zawierajaca napis
Rezultat:
zmieniony lancuch
9. int strcmp( char s1[], char s2[])
Funkcja:
Porównuje dwa łancuchy
Parametry:
char s1[],s2[] – tablice zawierajace porównywane napisy: s1 i s2
Rezultat:
0 jesli łańcuchy są różne, 1 jeśli są równe
3
#include
#include
#include
#include
int
int
int
int
<stdio.h>
<conio.h>
<stdlib.h>
<ctype.h>
str_len(char s[]);
lwr_str_cnt(char s[]);
upr_str_cnt(char s[]);
dgt_str_cnt(char s[]);
int str_len(char s[])
{
int i=0;
for (i=0; s[i]!=’\0’; i++);
return i;
}
int lwr_str_cnt(char s[])
{
int licznik=0;
for (int i=0; s[i]!=’\0’; i++)
{
if (s[i]>=’a’&&s[i]<=’z’) licznik++;
}
return licznik;
}
int upr_str_cnt(char s[])
{
int licznik=0;
for (int i=0; s[i]!=’\0’; i++)
{
if (s[i]>=’A’&&s[i]<=’Z’) licznik++;
}
return licznik;
}
int dgt_str_cnt(char s[])
{
int licznik = 0;
for (int i=0; s[i]!=’\0’; i++)
{
if (s[i]>=’0’&&s[i]<=’9’) licznik++;
}
return licznik;
4
}
int main()
{
char tekst[80];
char odp;
do
{
//clrscr();
puts("podaj tekst \n");
gets(tekst);
printf("\nwprowadzony lancuch to: %s", tekst);
printf("\ndlugosc lancucha: %d", str_len(tekst));
printf("\nliczba malych znakow: %d", lwr_str_cnt(tekst));
printf("\nliczba duzych znakow: %d", upr_str_cnt(tekst));
printf("\nliczba cyfr: %d", dgt_str_cnt(tekst));
puts("\nChcesz kontynuowac? [T/N]");
}
while ((odp=tolower(getch()))!=’n’);
return 0;
}
5