#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
int main()
{
/*
Zadanie 1
Wczytać plik "text.txt" i zliczyć:
a) ilość zdań
b) ilość słów
c) ilość znaków
*/
ifstream plik_we; // deklaracja strumienia pliku wejściowego
string linia; // zmienna przechowująca pojedynczą linię z pliku
int zdania = 0; // liczniki
int slowa = 0;
int znaki = 0;
int linia_len; // długość linii
plik_we.open("D:\\C++\\text.txt"); // otwarcie strumienia
if (plik_we.is_open()) // jeżeli plik jest otwarty
{
while (getline(plik_we, linia)) // wczytaj linię to zmiennej
{
linia_len = linia.length(); // ustaw długość linii
znaki += linia_len; // ustaw ilość znaków
for (int i = 0; i < linia_len; i++) // pętla po znaku w linii
{
if (linia[i] == ' ') // spacja rozdziela słowa
{
slowa++;
}
else if (linia[i] == '.') // kropka rozdziala zdania
{
zdania++;
}
}
}
cout << "zdania: " << zdania << endl; // wypisz liczniki
cout << "slowa: " << slowa << endl;
cout << "znaki: " << znaki << endl << endl;
}
else // jeżeli plik nie został otwary pokaż błąd
{
perror("Blad otwarcia pliku"); // perror zwraca nazwę błędu po argumencie
}
plik_we.close(); // zamykamy strumień
/*
Zadanie 2
Utworzyć strukturę Produkt o polach nazwa, cena i producent.
Program główny tworzy tablicę dynamiczną n produktów.
*/
struct Produkt // struktura lokalna wewnątrz funkcji
{
string nazwa; // jej pola
double cena;
string producent;
void wyswietl() // funkcja wyświetlająca pola
{
cout << nazwa << " " << cena << " " << producent << endl;
}
};
int n; // ilość produktów
cout << "n: "; cin >> n;
Produkt *Produkty = new Produkt[n]; // dynamiczna tablica produktów (w postaci sterty)
for (int i = 0; i < n; i++) // funkcja po produkcie
{
cout << "Produkt " << i + 1 << endl;
cout << "Nazwa: "; cin >> Produkty[i].nazwa; // podajemy dane każdego produktu
cout << "Cena: "; cin >> Produkty[i].cena;
cout << "Producent: "; cin >> Produkty[i].producent;
Produkty[i].wyswietl(); // wyświetlenie produktu
}
delete[] Produkty; // usunięcie (zwolnienie pamięci) tablicy dynamicznej
/*
Zadanie 3
Wczytać z pliku 20 liczb całkowitych i posortować dowolną metodą
*/
plik_we.open("D:\\C++\\liczby.txt"); // ponowne otwarcie strumienia
int liczby[20]; // deklaracja tablicy liczb
int i = 0; // indeks dla tablicy liczb
int temp; // tymczasowa zmienna używana podczas sortowania
if (plik_we.is_open())
{
while (plik_we >> liczby[i]) // pobierz liczbę do tablicy
{
cout << setw(3) << liczby[i];
i++; // inkrementuj indeks
}
cout << endl;
for (int i = 0; i < 20; i++) // pętla po indeksach od i = 0
{
for (int j = i; j < 20; j++) // pętla po indeksach od j = i
{
if (liczby[j] < liczby[i]) // jeżeli kolejny element jest mniejszy to
{
temp = liczby[i]; // zamień elementy ze sobą
liczby[i] = liczby[j];
liczby[j] = temp;
}
}
}
for (int i = 0; i < 20; i++) // wyświetlanie tablicy
{
cout << setw(3) << liczby[i];
}
}
else
{
perror("Blad otwarcia pliku");
}
plik_we.close(); // zamknięcie strumienia
return 0;
}