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

program sortujacy liczby losowe

Fiszki IT
Fiszki IT
0 głosów
93 wizyt
pytanie zadane 20 marca 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 przez Landu Stary wyjadacz (11,840 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 przez Landu Stary wyjadacz (11,840 p.)
Ja bym powiedział, że to jest totalna podstawa do tego typu zadania.
komentarz 21 marca przez paweł007 Nowicjusz (180 p.)
dlatego wlasnie zdziwilem sie ze dostalem takie zadanie
komentarz 21 marca 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 przez tkz Nałogowiec (39,540 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 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 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 185 wizyt
pytanie zadane 21 maja 2020 w C i C++ przez Szarlotka Początkujący (490 p.)
0 głosów
2 odpowiedzi 95 wizyt
pytanie zadane 15 września 2019 w C i C++ przez magda_19 Bywalec (2,590 p.)
0 głosów
1 odpowiedź 294 wizyt
pytanie zadane 13 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

84,762 zapytań

133,562 odpowiedzi

296,000 komentarzy

56,018 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...