Napisz program w c++, który pobierze z pliku o nazwie "liczby.txt" liczby i wyswietli je od 20 rosnąco co 2 do konca liczb z pliku.
Dam naj. z gory dziekuje..
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define NMAX 100
//program przeczyta liczby z pliku liczby.txt (ale nie wiecej niz NMAX liczb)
//liczby zostana wczytane to tablicy
//liczby zostana posortowane
//liczby zostana wypisane poczawszy od pierwszej wiekszej niz 20
// i dalej kolejno co druga
void sortujTab(int * tab, int tp, int tk)
{
if (tp >= tk) return;
int pol = (tp + tk) / 2;
//dziale na dwie tablice (dziel)
sortujTab(tab,tp,pol);
sortujTab(tab,pol+1,tk);
//lacze dwie posortowne tablice (zwyciezaj)
int tpom[NMAX], a=tp, b=pol+1;
for (int i=0; i<tk-tp+1;i++)
{
if (a > pol) tpom[i] = tab[b++];
else if (b > tk) tpom[i] = tab[a++];
else if (tab[a] <= tab[b]) tpom[i] = tab[a++];
else tpom[i] = tab[b++];
}
for (int i=0; i<tk-tp+1;i++) tab[tp+i] = tpom[i];
}
int main()
{
int tab[NMAX];
ifstream fin ("liczby.txt");
//wczytanie liczb z pliku
int nliczb = 0;
while(fin >> tab[nliczb++]) if (nliczb == NMAX) break;
//posortownie tablicy, metoda dziel i zwyciezaj
sortujTab(tab,0,nliczb-1);
//wypisanie liczb (wiekszych niz 20, i co 2)
int i=0; while ((i<nliczb) && (tab[i]<=20)) i++;
while (i<nliczb)
{
cout << tab[i] << endl;
i+=2;
}
return 0;
}