Liczby niekompletne, doskonale,zasobne
Kod był wyświetlany 2342 razy.
    /*
  Name: Liczby niekompletne, doskonale,zasobne
  Copyright: GPL GNU
  Data: 17-03-07 15:53
  Zadanie: tworzenie plku z losowymi danymi
  odczytanie pliku przez program, następnie wyrzucenie na ekran oraz
  do pliku roz.txt liczb zosobnych, niekompletnych oraz doskonalych.
*/


#include <cstdlib>
#include <iostream>
#include <fstream>

char * nazwa = "dane.dt";

using namespace std;

void wypelnij();
int sumaDzielnikow(int);
void sortuj();

const int n = 500; // ile liczb losowac?
int * dane = new int[n];
int main()
{
    wypelnij();
    
    int *pomocnicza = new int;
    ifstream rplik;
    rplik.open(nazwa);
    
    int i = n;
    while(rplik>>*pomocnicza)
    {
    dane[i - 1] = *pomocnicza;
    i--;
    }
    delete pomocnicza;
    rplik.close();
sortuj();
       int *niekompletne = new int[n];
       for(int i = 0;i<n;i++)
        niekompletne[i] = -1;
        
      int *doskonale = new int[n];
      for(int i =0;i<n;i++)
       doskonale[i] = -1;  
       
       int *zasobne = new int[n];
      for(int i =0;i<n;i++)
       zasobne[i] = -1;  
    
   int ileZasobnych = 0,ileDoskonalych = 0, ileNiekompletnych = 0;
   
   for(int i = 0;i<n;i++)
   {
    if(sumaDzielnikow(dane[i])>2 * dane[i])
    {
     zasobne[ileZasobnych] = dane[i];
     ileZasobnych++;                            
    }        
    
     if(sumaDzielnikow(dane[i])==2 * dane[i])
    {
     doskonale[ileDoskonalych] = dane[i];
     ileDoskonalych++;                            
    }   
    
      if(sumaDzielnikow(dane[i])<2 * dane[i])
    {
     niekompletne[ileNiekompletnych] = dane[i];
     ileNiekompletnych++;                            
    }   
   }
   ofstream roz;
   roz.open("roz.txt");
   int q=0;
   
   roz<<"Niekompletne:"<<endl;
   cout<<"Niekompletne:"<<endl;
   while(niekompletne[q] != -1)
   {
   if(q%11==0)roz<<endl;
    roz<<niekompletne[q]<<"\t";
    cout<<niekompletne[q]<<"\t";
    q++;
   }
   cout<<endl<<endl;
   roz<<endl<<endl;
   q = 0;
   roz<<"Doskonale:"<<endl;
    cout<<"Doskonale:"<<endl;
   while(doskonale[q] != -1)
   {
   if(q%11==0)roz<<endl;
    roz<<doskonale[q]<<"\t";
    
    cout<<doskonale[q]<<"\t";
    q++;
   }
   cout<<endl<<endl;
   roz<<endl<<endl;
   
   q = 0;
    cout<<"Zasobne:"<<endl;
    roz<<"Zasobne:"<<endl;
   while(zasobne[q] != -1)
   {
    if(q%11==0)roz<<endl;
    roz<<zasobne[q]<<"\t";
    cout<<zasobne[q]<<"\t";
    q++;
   }
    delete pomocnicza;
    cin.ignore();
    getchar();
    return 0;
}
void wypelnij()
{
   
    ofstream wplik;
    wplik.open(nazwa);
    
    int dol = 10,gora = 10000;
    
    //if(dol > gora) swap(dol,gora);
    
    srand(time(NULL));
    
    for(int i = 0;i<n;i++)
     wplik<<(rand() % (gora - dol + 1)) + dol<<endl;
     
    
    wplik.close();
}
     
int sumaDzielnikow(int liczba)
{
 int suma = 0;
 for(int i = 1;i<=liczba;i++)
 {
 if(liczba % i == 0) suma += i;        
 }   
 return suma;
}

void sortuj()
{
 
   for(int i = 0; i<n; i++)
   for(int q = n - 1; q>=1;q--)
   if(dane[q] < dane[q - 1])
   {   
   swap(dane[q],dane[q-1]);           
   }
     
}
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT