• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

program sortujacy liczby losowe

0 głosów
1,415 wizyt
pytanie zadane 20 marca 2021 w C i C++ przez paweł007 Nowicjusz (180 p.)

witam natknałem sie na mały problem mianowicie mam zadanie ktorego polecenie brzmi 

Stwórz program, który wypełnia tablicę jednowymiarową o dowolnym rozmiarze i ustawia rosnąco elementy z zastosowaniem algorytmu sortowania bąbelkowego.

Program zawiera funkcje (void!!!):

 - wprowadzania danych (rozmiar tab),1funkcja void

 - losującą (gen. l. pseudolosowych) 2funkcja void

 - sortowania danych (alg. s. bąbelkowego) 3funkcja void

poki co mam to:

 

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void WprowadzenieDanych()
{
 int n; //początkowy rozmiar tablicy

 cout << "Podaj rozmiar tablicy: ";
 cin >> n;

 int tab [n];
}

void GenerowanieLiczbLososwych()
{
    int i;
    srand (time(NULL));
    cout << "Elementy tablicy: "<<endl;

    for (i=1;i<=n; i++)
        {
            tab[i] = rand () %1000;
            cout << tab[i] <<" ";
        }
}





int main()
{

 WprowadzenieDanych();
 GenerowanieLiczbLososwych();

return 0;
}

 wyswietla mi sie błąd dotyczacy drugiej funkcji void ze nie zadeklarowałem tablicy "tab" a ja to zrobiłem w pierwszej funkcji i rozumiem dlaczego tak sie dzieje no bo to sa dwie funkcje oddzielne i jezeli jakies dane stworzyłem w pierwszej to nie istnieja one w drugiej funkcji tylko w takim razie jak mam zrobic druga funkcje no bo musi ona korzystac z danych stworzonych w pierwszej funkcji tak samo bedzie w trzeciej funkcji ktora ma za zadanie posortowac te liczby wiec bedzie musiala znać liczby wylosowane w drugiej funkcji 

2 odpowiedzi

0 głosów
odpowiedź 20 marca 2021 przez Landu Stary wyjadacz (11,880 p.)
Do głowy przychodzą mi dwa rozwiązania:

1. Jeżeli możesz, to zwróć z funkcji WprowadzanieDanych() zmienną tab[] i przekaż ją w argumencie do funkcji GenerowanieLiczbLosowych()

2. Wewnątrz funkcji WprowadzanieDanych() wywołaj funkcję GenerowanieLiczbLosowych() i przekaż do niej tab[]
komentarz 20 marca 2021 przez Landu Stary wyjadacz (11,880 p.)
Ja bym powiedział, że to jest totalna podstawa do tego typu zadania.
komentarz 21 marca 2021 przez paweł007 Nowicjusz (180 p.)
dlatego wlasnie zdziwilem sie ze dostalem takie zadanie
komentarz 21 marca 2021 przez paweł007 Nowicjusz (180 p.)
a tak wracajac do zadania to teraz musze dodac funkcje void odpowiedzialna za posortowanie tych liczb, czyli musze przekazac tablice tab z funkcji GenerowanieLiczbLososwych(int tab[], int tab_dlugosc) i jej wielkosc czyli "n" z funkcji WprowadzenieDanych() tak?
komentarz 21 marca 2021 przez tkz Nałogowiec (42,040 p.)

@Landu,

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
void GenerowanieLiczbLososwych(int tab[], int tab_dlugosc) {
    srand(time(NULL));
    cout << "Elementy tablicy: " << endl;
 
    for (int i = 0; i < tab_dlugosc; i++) {
        tab[i] = rand() % 1000;
        cout << tab[i] << " ";
    }
 
    delete[] tab;
}
 
void WprowadzenieDanych() {
    int n; //początkowy rozmiar tablicy
 
    cout << "Podaj rozmiar tablicy: ";
    cin >> n;
 
    int* tab = new int[n];
    GenerowanieLiczbLososwych(tab, n);
}
 
 
int main() {
    WprowadzenieDanych();
 
    return 0;
}

Ten kod jest bezsensu. Delegujesz zwalnianie tablicy gdzieś, gdzie nie ma to sensu. 

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
void GenerowanieLiczbLososwych(int tab[], int tab_dlugosc) {
    srand(time(NULL));
    cout << "Elementy tablicy: " << endl;
    for (int i = 0; i < tab_dlugosc; i++) {
        tab[i] = rand() % 1000;
        cout << tab[i] << " ";
    }
}
 
void WprowadzenieDanych(int tab[], int tab_dlugosc) { //ta funckja jest kompletnie zbędna, ale skoro polecenie tego wymaga...
    GenerowanieLiczbLososwych(tab, tab_dlugosc);
} 

int main() {
    int n;
    cout << "Podaj rozmiar tablicy: ";
    cin >> n;
    int* tab = new int[n];
    WprowadzenieDanych();
    Sortowanie(tab, n); //do implementacji
    delete[] tab;
    return 0;
}

Tak to powinno wyglądać. 

komentarz 21 marca 2021 przez paweł007 Nowicjusz (180 p.)
dobra wreszcie sie udało nie wiem czy program jest dobrze zbudowany czy nie ale dziala jak ma dzialac wiec ja sie nie przejmuje juz
0 głosów
odpowiedź 31 marca 2021 przez BedrisK Użytkownik (600 p.)

Sortowanie bąbelkowe

#include<iostream>

using namespace std;

main()
{
    int tab[100], n, zap;
    cout<<"Ile liczb chcesz posortowac: ";
    cin>>n;

    for(int i=0; i<n; i++)
    {
        cout << "Wypisz liczbe " << i+1 << ": ";
        cin>>tab[i];
    }

    for(int i=0; i<n; i++)
    {
        for(int j=1; j<n-i; j++)
        {
            if(tab[j-1]>tab[j])
            {
                zap=tab[j-1];
                tab[j-1]=tab[j];
                tab[j]=zap;
            }
        }
    }

    cout << "Liczby po posortowaniu: ";
    for(int i=0; i<n; i++)
    {
        cout << tab[i] << " ";
    }
}

 

Podobne pytania

0 głosów
0 odpowiedzi 1,306 wizyt
pytanie zadane 21 maja 2020 w C i C++ przez Szarlotka Użytkownik (890 p.)
0 głosów
2 odpowiedzi 347 wizyt
pytanie zadane 15 września 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 598 wizyt
pytanie zadane 13 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)

93,776 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...