ACCESS Cwicz4 2008

background image

Katedra Informatyki Stosowanej

Borland C++

Opracowanie mgr Gra

ż

yna G

ę

bal, WZiMK P

Ś

k

Ćwicz. 4 – Operacje na zmiennych i tablicach znakowych

Operacje wejścia/wyjścia dla zmiennych znakowych (<stdio.h>)

int getchar(void)

Funkcja pobiera ze standardowego strumienia wejściowego (klawiatura) następny znak i zwraca jego wartość
(kod znaku). W przypadku błędu lub napotkania końca pliku zwraca EOF.

int putchar(int)

Funkcja wypisuje jeden znak do standardowego strumienia wyjściowego (monitor). Zwraca wypisany znak
lub EOF w przypadku błędu.

Zad. 4.1
Uzupełnić poniższy program, tak aby dla zadanego ciągu znaków zakończonego klawiszem Enter wyznaczona
została liczba występujących w nim cyfr, liter oraz pozostałych znaków. Do rozwiązania zadania wykorzystać
poniższy schemat blokowy. Następnie zmodyfikować program przenosząc instrukcję czytania kolejnego znaku
do warunku pętli.
Uwaga: Wciśnięcie klawisza Enter powoduje przesłanie do standardowego strumienia wejściowego znaku nowej
linii (‘\n’).

#include <stdio.h>
char litera(char);
char cyfra(char);
void main()
{
char c; int lc,

//liczba cyfr

ll,

//liczba liter

lp;

//liczba pozostałych znaków

lc=ll=lp=0;
printf("\nPodaj ciag znakow, zakoncz Enterem\n");

Tu należy wstawić ciąg instrukcji obliczających ile w podanym ciąg znaków występuje cyfr, liter oraz pozostałych
znaków (porówna
ć schemat blokowy). Wykorzystać funkcje

litera

oraz

cyfra.

printf("\nLiczba cyfr: %d", lc);
printf("\nLiczba liter: %d", ll);
printf("\nLiczba pozostalych znakow: %d", lp);
return;
}

char litera(char znak)
{

Tu należy wstawić teść funkcji badającej czy podany znak jest literą. Jeśli tak funkcja powinna zwrócić wartość 1, w
przeciwnym przypadku warto
ść 0.

}
char cyfra(char znak)
{
if ( znak>='0' && znak<='9' ) return 1;
return 0;
}

Wczytaj znak.

Czy jest to znak

różny od ‘\n’?

Zbadaj znak. Jeśli jest to cyfra zwiększ licznik
cyfr, jeśli litera – licznik liter, a jeśli inny znak to
licznik pozostałych znaków.

Wczytaj kolejny znak.

T

N

background image

Katedra Informatyki Stosowanej

Borland C++

Opracowanie mgr Gra

ż

yna G

ę

bal, WZiMK P

Ś

k

Zad. 4.2
W programie z zad. 4.1 przenieść operację czytania znaku do warunku pętli.


Operacje wejścia/wyjścia dla tablic znakowych (<stdio.h>)

char *gets(char *s)

Funkcja wczytuje ze standardowego strumienia wejściowego następny wiersz i wpisuje go do tablicy s.
Końcowy znak nowego wiersza zastępuje znakiem ‘\0’. Zwraca s (adres tablicy). W przypadku błędu lub
napotkania końca pliku zwraca NULL.

int puts(const char *s)

Funkcja wypisuje tekst zawarty w tablicy s oraz znak nowego wiersza do standardowego strumienia
wyjściowego. Zwraca liczbę nieujemną lub EOF w przypadku błędu.

Zad. 4.3
Poniższy program wczytuje łańcuch znaków do tablicy buf1. Następnie usuwa z niego wszystkie spacje i wynik
zapisuje do buf2. Zawartość buf2 wyprowadza na ekran. Zmodyfikować ten program, tak aby w pętli wczytywał
kolejne podawane linie znaków i usuwał z nich spacje. Pętla powinna zakończyć się po przesłaniu do programu
znaku końca pliku (Ctrl-z). Sprawdzić czy program działa poprawnie, jeśli w zadanym łańcuchu występują znaki
tabulacji. Jeśli działanie programu jest błędne należy poprawić funkcję bez_spacji.


#include <stdio.h>
void bez_spacji(char [],char []);
void main()
{ char buf1[81],buf2[81];
gets(buf1);
bez_spacji(buf1,buf2);
puts(buf2);
return;
}
void bez_spacji(char buf1[],char buf2[])
{
int i,j;
for (i=j=0 ; buf1[i]!=’\0’ ; i++)
if (buf1[i]!=' ') {buf2[j]=buf1[i]; j++;}
buf2[j]='\0';
return;
}

Zad. 4.4
Do programu z zad. 4.3 dodać funkcję duze_litery, która w zadanej tablicy znakowej zamienia wszystkie małe
litery na duże. Następnie w programie głównym zastosować tę funkcję do łańcucha bez spacji.
Uwaga: Wykorzystać funkcję toupper(c), która zwraca c przekształcone na dużą literę. Funkcja znajduje się w
nagłówku ctype.h.

Zadania domowe

1. W programie zmienić funkcję bez_spacji, następnie dostosować program do nowej wersji funkcji.

void bez_spacji(char buf[])
{
int i,j;
for (i=j=0 ; buf[i] ; i++)
if (buf[i]!=' ') buf[j++]=buf[i];
buf[j]='\0';
return;
}


2. Napisać program, który bada dwa ciągi znakowe następująco:

czy ciągi różnią się pierwszym znakiem,

czy ciągi różnią się ostatnim znakiem,

który z ciągów jest dłuższy.

Uwaga: zaprojektować program, tak aby były wykorzystywane funkcje programisty.


Wyszukiwarka

Podobne podstrony:
ACCESS Cwicz4 2008
ACCESS Cwicz5 2008
Przewodnik Relacyjne bazy danych 2008-2009, Ogrodnictwo 2011, INFORMATYKA, informatyka sgg, MS Acces
Ubytki,niepr,poch poł(16 01 2008)
2008 XIIbid 26568 ppt
Tamponada serca, Karpacz, 2008
Bliźniuk G , interoperacyjność przegląd, marzec 2008
komunikacja niewerbalna wgGlodowskiego 2008
Osteoporaza diag i lecz podsumow interna 2008
Wzorniki cz 3 typy serii 2008 2009
Norma ISO 9001 2008 ZUT sem 3 2014
2 Fizyko KRIOTERAPIA 2008
Wyklad 4 HP 2008 09
ostre białaczki 24 11 2008 (kurs)
download Prawo PrawoAW Prawo A W sem I rok akadem 2008 2009 Prezentacja prawo europejskie, A W ppt

więcej podobnych podstron