Pomoc w wytłumaczeniu programi- zapisywanie do pliku

0

Wiam mam pewną prośbę, a mianowicie czy mógłby mi ktoś wytłumaczyć ten program bardzo łopatologicznie, bo kompletnie tego nie ogarniam, a same komentarze nie wiele mi dają

#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
const int n=500;

int main()
{ char nazwa[100];//deklaracja tablicy 100 elementowej typu char
char tekst[n];//deklaracja tablicy n elementowej typu char
int i;
cout << "Program pobiera z klawiatury tekst (maksymalna ilosc znakow to ";//wypisujemy sobie na ekranie komonikaty
cout << n << ") i zapisuje \nkazde zdanie w osobnej linii. Przez zdanie ";
cout << "rozumiemy ciag znakow zakonczony \nkropka.\n";
cout << "Podaj nazwe pliku (wraz z rozszerzeniem .txt), do ktorego mam";
cout << " zapisac tekst: \n";
cin.getline(nazwa,100); //tutaj wpisujemy nazwe pliku
ofstream zapis(nazwa);//tu rozpoczynamy zapis do pliku
if(!zapis)//tutaj jest warunek który odpowiada za to jeżeli nie znajdzie pliku to wyśietli się komunikat "nie można otworzyć pliku.
{ cout << "Nie mozna otworzyc pliku...\n";
getchar();
return 1;
}
cout << "\nPodaj tekst, kazde zdanie powinno byc oddzielone kropka\n";
cin.getline(tekst,n); //tutaj sczytujemy tekst z klawiatury
for(i=0;i<=n;i++)
{ if (tekst[i]=='.')//jeżeli napotkany znak to kropka, to...
{ zapis << tekst[i] << endl;//...przechodzimy do następnej linii...
i++;//...pomijając przy tym spację, która znajduje się po kropce
}
else zapis << tekst[i];
/* Bez tej linii,
w pliku po zapisanych zdaniach, pojawiają się "krzaczki".*/
if (!tekst[i]) break;//tutaj jest warunek który zapewnia nam że program się nie zapętli tylko zapisze wszystkie znaki i się wyłączy, a nie zapętli się.
}
cout << "\n\nZapisano tekst do pliku " << nazwa << " ...";
zapis.close();
cout << "\nProgram zakonczyl dzialanie...\n\n";
system("pause");
return 0;
}

Chodzi mi o niemalże wszystko, dlaczego takie biblioteki, co to za funkcje, jakie parametry są używane w nawiasach.
Z góry dzięki :)
Prosiłbym nie pisać postów nie związanych z moją prośbą...

0

Czesc.
#include - łączy nasz program z plikiem zrodlowym zapisanym w <> np. iostream / #include<iostream>
using namespace std; - deklaracja obszaru nazw nie pamieta jak to sie dokladnie nazywa, potrzebne do tego ze zamiast std::cout<<""; piszesz samo cout<<"";
cout<<"Tekst"; - wyswietla tekst na ekran
const int n=500; dlekarujemy programowi ze istniejje zmienna "n" o wartosci 500 i jest STAŁĄ (const) jej wartosc sie nie zmieni do konca programu
int main() - to glowna funkcja programu w tym przypadku obsluguje konsole
char nazwa[100]; char tekst[n]; - to sa tablice znakowe czyli przechowuja elemety typu char (poejdyncze znaki a, z, b, d) tylko tablice przechowuja tych znakow ileś w tym przypadku 100 w pierwszej a w drugiej n czyli 500

int i; mowimy kompilatorowi ze jest taka zmienna liczbowa jak "i"
cout << n <<" Tekst"; wypisujemy na ekran zmienna n i "Tekst"
cin.getline(nazwa,100); - zacznijmy od cin, cin to taka funkcja ktora odczytuje znaki z klawiatury cin.getline(); odczytuje znaki z klawiatury do mametu gdy napotka jakis znak ktory wczesniej zadeklarujemy ja jakos zawsze pisalem getline(cin, zmienna do ktorej zapisze sie tekst, ogranicznik typu char)

if(!zapis) //tutaj jest warunek który odpowiada za to jeżeli nie znajdzie pliku to wyśietli się komunikat "nie można otworzyć pliku.
{ cout << "Nie mozna otworzyc pliku...\n";
getchar();
return 1;
}
To chyba jasne return 1 oznacza ze program zakonczyl sie niepowodzeniem
for(i=0;i<=n;i++) {} Petla ktora powtarza sie do pÓÓÓÓki warunek nie zostanie spelniony ( i = 0 tu jest miejsce na inicjalizacje i definiowanie ; tu warunek ; a tu po kazdym kroku zmienna i zwieksza nie o jeden "i++"){tu jest instrukcja co sie powtarz x razy}

Sorka reszty jakos sam nie trawie ale mam nadzieje ze to co napisalem troche Ci przyblirzy podstawy :)

0

@Patryk27
Skoro się już trzepiamy, to cin to obiekt(zmienna), a getline to metoda - takie coś to zmiennej/obiektu.

0
Skiba napisał(a)

zacznijmy od cin, cin to taka funkcja ktora odczytuje znaki z klawiatury cin.getline();

cin nie jest funkcją jest to obiekt klasy istream, analogicznie cout jest obiektem klasy ostream :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1