Liczby przystajace modulo k
Kod był wyświetlany 1357 razy.
    /*
  Name: Liczby przystajace modulo k
  Copyright: GPL GNU
   Date: 03-04-10 17:23
  Description: 
  w pliku wejsciowym liczby nie powinny se powtarzac.
*/
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <math.h>

#define OK 0
#define ERROR -1

using namespace std;

void errorLog(int);
void sortuj();

int * tablica,n;
int main()
{
    ifstream rplik;
    rplik.open("zad3.dane");
    
    int liczba,i=0,k;
    tablica = new int[100];
    while(rplik>>liczba)
    {  
    tablica[i] = liczba;
    i++;                
    }
    rplik.close();
    n = i; // dla ulatwienia n oznacza ilosc elementow (1<n<100)
    if(n<1 || n>=100)
    {
     errorLog(1);  
     return ERROR;         
    }
 sortuj(); //tablica elementow zostaje posortowana,
           // teraz wyznaczenie podzbiorow jest duzo prostsze

  cout<<"Podaj k ";
  cin>>k;
  
  if(k>tablica[0] || k<2){errorLog(1); return ERROR;} // jezeli k jest wieksze
                                               // niz najwiekszy element tablicy
                                               // mamy do czynienia z bledem
                                               // zerowy element jest najwiekszy
                                               // bo tablica jest posortowana
                                               // malejaco
  //----------Program Wlasciwy---------------------------------
  int wypisano = 0;
for(int q = 0;q<n;q++)
{
 for(int i = q+1;i<n;i++)
 {
  if(((tablica[q] - tablica[i])%k == 0) && (tablica[q]!=tablica[i]) && (tablica[i]!=tablica[i-1]))
  {
  cout<<tablica[i]<<" ";   
  wypisano = 1;
  }     
 }
 if (wypisano ==1)
 {
 cout<<endl;
 wypisano = 0;
 }
}
    cin.ignore();
    getchar();
    return OK;
}


//------------------------Implementacje procedur pomocniczych--------------

void errorLog(int nrBledu) // obsluga bledow
{
ofstream plikBledu;
plikBledu.open("zad3.err");
 switch(nrBledu)
 {
  case 1:
  {
   //blad danych
   plikBledu<<"Dane niezgodne z trescia zadania!";
   break;  
  } 
 }   
 cout<<"Zajrzyj do pliku zad3.err!"; 
 cin.ignore();
 getchar();
}


void sortuj()  // sortowanie poprzez wybieranie najwiekszego elementu
{
int maxIndex=0;  //nr indexu najwiekszego elementu tablicy
int * tablica_pomocnicza = new int[n];

 for(int k = 0;k<n;k++)
 {
  for(int i = 0;i<n;i++)
  {
  if(tablica[i] > tablica[maxIndex])
  maxIndex = i;      
  } 
 tablica_pomocnicza[k] = tablica[maxIndex];
 tablica[maxIndex] = -1;  // aby ponownie nie brac tego samego elementu pod uwage
                          // warunek wynika z tresc zadania i mozliwych danych
 }  
 
 for(int i = 0;i<n;i++)
 {
 tablica[i] = tablica_pomocnicza[i];        
 }
 
 delete tablica_pomocnicza;
}
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT