[c++]Sortowanie bąbelkowe - odwołanie

Odpowiedz Nowy wątek
2006-12-18 14:04
Oriel
0

Witam,

dobrnąłem do momentu w programie w którym niekoniecznie wiem co dalej :/ Jest algorytm sortowania, wczytanie plików do tablicy dane[] ale nie umiem odwołać się do funkcji sortowania w pętli wyświetlającej wyniki. Czy ktoś jest mi w stanie albo poprawić ten program, albo po ludzku (czyli jak dla humanisty mającego zaliczyć C++) powiedzieć co mam dalej zrobić :( ?

Oto moje wypociny:

#include <iostream.h>
#include <fstream.h>

using namespace std;
void czytaj(int *wsk, char *nazwa);
void sortowanie(int [], int *wielkosc);

int i=0;
main()
{
      cout<<"Wczytujemy dane do tablicy z pliku liczby.txt\n";
      int dane[100];
      char *nazwa="liczby.txt";
      czytaj(dane,nazwa); /*czyta z funkcji, liczby z txt do tablicy dane*/
      cout<<endl<<"Wczytane liczby to:\n\n";
            for (int k=0;k<i;k++)
            {
                cout<<dane[k]<<" ";
            }
      cout<<" ";
      cout << endl;
      /*staramy się posortować*/
      sortowanie(dane,nazwa);   
      cout<<endl;
      system("PAUSE"); return 0;
}

/*fukcja wczytujaca plik*/
void czytaj(int *wsk,char *nazwa)
{
ifstream plik;  //skojarzenie pliku ze stromieniem plikowym
plik.open(nazwa);      //otwarcie plik tab.txt
while(!plik.eof())         // funkcja eof zwraca prawde jesli zostanie
                              // osiagniety koniec pliku
        plik >>wsk[i++];      //wczytywnie danych do tablicy typu int

plik.close();     //zamkniecie pliku
}

void sortowanie(int dane [], int *wielkosc)
{
     int temp;

     for (int i=0;i<wielkosc-1;i++)
         for (int j=0;j<wielkosc-1;j++)
             if(dane[j]>dane[1+j])
             {
             temp=dane[j];
             dane[j]=dane[j+1];
             dane[j+1]=temp;
             }
}

</cpp>

Pozostało 580 znaków

2006-12-18 14:24
0

Fun sortowanie pobiera tablice i wykonuje na niej sortowanie, więc wystarczy się odwołać do tablicy dane.

#include <iostream>
#include <fstream>

using namespace std;
void czytaj(int *wsk, char *nazwa);
void sortowanie(int [], int wielkosc);

int i=0;
main()
{
      cout<<"Wczytujemy dane do tablicy z pliku liczby.txt\n";
      int dane[100];
      for(int i = 0; i < 100; i++)
              dane[i] = 0; // Zerujemy tablice
      char *nazwa="liczby.txt";
      czytaj(dane,nazwa); /*czyta z funkcji, liczby z txt do tablicy dane*/
      cout<<endl<<"Wczytane liczby to:\n\n";
            for (int k=0;k<i;k++)
            {
                cout<<dane[k]<<" ";
            }
      cout<<" ";
      cout << endl;
      /*staramy się posortować*/
      sortowanie(dane, 100);   
      cout<<endl;
      for(int i = 0; i < 100; i++) {
              if(dane[i] != 0) cout << dane[i] << " "; // Wyswietal wszystko oprocz 0, czyli putyche elemntoe tablicy
              }
      system("PAUSE"); return 0;
}

/*fukcja wczytujaca plik*/
void czytaj(int *wsk,char *nazwa)
{
ifstream plik;  //skojarzenie pliku ze stromieniem plikowym
plik.open(nazwa);      //otwarcie plik tab.txt
while(!plik.eof())         // funkcja eof zwraca prawde jesli zostanie
                              // osiagniety koniec pliku
        plik >>wsk[i++];      //wczytywnie danych do tablicy typu int

plik.close();     //zamkniecie pliku
}

void sortowanie(int dane [], int wielkosc)
{
     int temp;

     for (int i=0;i<wielkosc-1;i++)
         for (int j=0;j<wielkosc-1;j++)
             if(dane[j]>dane[1+j])
             {
             temp=dane[j];
             dane[j]=dane[j+1];
             dane[j+1]=temp;
             }
}

Oczywiście kod wymaga jeszcze drobnych poprawek, kosmetycznych, gcc zwraca warny, ale kod się kompiluje i chasa.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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