background image

Katedra Informatyki Stosowanej  

 

 

 

 

     Borland C++ 

Opracowanie mgr Gra

ż

yna G

ę

bal, WZiMK P

Ś

 

 

Ćwicz. 5 – Operacje na tablicach, pliki tekstowe 

 

Funkcje operujące na plikach tekstowych (<stdio.h>) 

FILE *fopen(const char *nazwa_pliku, const char tryb) 

Funkcja  otwiera  plik  o  podanej  nazwie  i  zwraca  wskaźnik  pliku  lub  NULL,  jeśli  próba  otwarcia  się  nie 
powiedzie. Argument tryb określa rodzaj dostępu do pliku: 
“r” 

otwiera plik tekstowy tylko do odczytu 

“w” 

tworzy nowy plik tekstowy do zapisu, jeśli plik już istnieje kasuje jego zawartość 

“a” 

otwiera istniejący plik tekstowy w trybie dopisywania 

C++ i liczne kompilatory ANSI C umożliwiają otwarcie pliku do jednoczesnego odczytu i zapisu, co wskazują 
tryby “r+”, “w+”, “a+”. 

int fscanf(FILE *wsk_pliku,const char *format, ...) 
int fprintf(FILE *wsk_pliku,const char *format, ...) 

Działają analogicznie jak scanf i printf. Pierwszy parametr jest wskaźnikiem pliku. 

int fclose(FILE *wsk_pliku) 

Opróżnia  i  zwalnia  przydzielony  bufor,  zamyka  plik.  Zwraca  EOF  w  przypadku  błędu,  0  gdy  zakończy  się 
poprawnie. 

FILE *in, *out;  int x; 
in=fopen(”plik_d”,”r”); 
out=fopen(”plik_w”,”w”); 
fscanf(in,”%d”,&x); 
fprintf(out,”x=:%4d\n”,x); 
fclose(in); 
fclose(out); 

 
Zad. 5.1 
Otworzyć program zawierający rozwiązanie  Zad. 3.1.  
 
Zmodyfikować  program,  tak  aby  dane  wczytywane  były  z  pliku  tekstowego  znajdującego  się  w katalogu 
dydaktycznym  (plik  można  założyć  w  edytorze  tekstowym  lub  skopiować  z  katalogu  znajdującym  się  dysku 
wspólnym).  Program  powinien  sprawdzać  czy  operacja  otwierania  pliku  zakończyła  się  powodzeniem.  W 
przypadku błędu należy wyświetlić komunikat Nie odnaleziono pliku z danymi i zakończyć działanie programu. 
Zmienną plikową zadeklarować jako zmienną zewnętrzną. 
 
Opracować brakujące w programie funkcje: 

 

wyznaczyć sumę elementów dodatnich parzystych, 

 

wyznaczyć iloczyn niezerowych elementów ciągu, 

 

wyznaczyć element minimalny w ciągu oraz pozycję jego ostatniego wystąpienia, 

 

przenieść element  minimalny (jeśli się powtarza, to jego ostatnie wystąpienie) na początek ciągu , np. 

2  56  8  0  -1  10  -1  90 

 -1  56  8  0  -1   10   2  90 
wykorzystując funkcję zamien oraz funkcję min

 

policzyć ile razy w ciągu występuje zadana liczba b oraz ile razy występuje liczba –b, 

Pamiętać o wywołaniu opracowanych funkcji i wyprowadzeniu wyników na ekran. 
 
Zad. 5.2
 
Zmodyfikować  program,  tak  aby  wszystkie  wyniki  były  wyprowadzane  do  pliku.  Zmienną  plikową 
zadeklarować jako zmienną zewnętrzną. Plik wynikowy umieścić w swoim katalogu roboczym. 
    

Zad. 5.3. 

Napisać program, który pobiera z pliku kolejne znaki do znaku końca pliku. Znaki są przepisywane do drugiego 
pliku tak, że kolejne linie tekstu są w nowym pliku oddzielane pustym wierszem. 

 

background image

Katedra Informatyki Stosowanej  

 

 

 

 

     Borland C++ 

Opracowanie mgr Gra

ż

yna G

ę

bal, WZiMK P

Ś

 

Biblioteka iostream, obsługa wejścia/wyjścia 

Język C++ oferuje obiektowo zorientowaną bibliotekę  do obsługi operacji wejścia/wyjścia. Do programu należy 
dołączyć plik  nagłówkowy iostream.h, który udostępnia dwa obiekty: 

    

cin  - predefiniowany strumie

ń

 wej

ś

cia 

    

cout - predefiniowany strumie

ń

 wyj

ś

cia  

oraz dwa operatory: 

      >>   - operator wyjmowania (ekstrakcji) informacji ze strumienia 
    

<<   - operator wstawiania (insercji) informacji do strumienia 

Operator >> realizuje pobranie informacji wraz z jej interpretacją właściwą dla typu zmiennej. Analogicznie 
operator << powoduje, że informacja wyświetlana na ekranie będzie sformatowana stosownie do typu zmiennej. 
 
Istnieje możliwość formatowania wydruku: 

int width(int)     - 

określa minimalną szerokość pola dla wyniku kolejnego(jednego) 

                                                   wywołania cout, 

int precision(int) - 

określa dokładność wypisywania liczb zmiennoprzecinkowych; obowiązuje  

                                                   do kolejnego wywołania tej funkcji. 

 

Zad. 5.3 
Uruchomić i przeanalizować poniższy program: 
 

#include <iostream.h> 
void main() 
{ float a2,a1,a0,x; 
  cout <<"Podaj wspolczynniki wielomianu a2,a1,a0:\n" ; 
  cin >>a2 >>a1 >>a0; 
  cout <<"x="; 
  cin >>x; 
  cout <<"x=" <<x <<endl; 
  cout.precision(3); 
  cout <<"w(x)=" << a2*x*x+a1*x+a0; 
  return; 

 

Zmodyfikować  ten  program,  tak  aby  obliczał  wartość  wielomianu  w  przedziale  <A,B>  z  krokiem  H.  Wydruk 
powinien mieć postać: 
w(tu wartość liczbowa x)=tu wyliczona wartość wielomianu  
w(tu kolejna wartość liczbowa x)=tu kolejna wyliczona wartość wielomianu