[C++] wskaźniki, sortowanie bąbelkowe

agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: agggnes »

Witam,
mam problem z napisaniem programu, który używając wskaźników posortuje bąbelkowo tablicę \(\displaystyle{ {1, 5, 3, 6, 4, 7}}\).

Z góry dziękuję za pomoc
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: MichalPWr »

W czym konkretnie jest problem?
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: agggnes »

Właśnie nie wiem. Umiem sortowanie, myślę, że umiem wskaźniki, a wypisuje tablicę taką, jaką była.-- 15 maja 2012, o 20:25 --Program:

Kod: Zaznacz cały

#include<iostream>
#include<cstdio>

using namespace std;

void zamien(int a, int b)
{
     int temp=a;
     a=b;
     b=temp;
     }

int main()
{
    int tab[]={1,5,3,6,4,7};
    int *wsk;
    wsk=&tab[0];
    int n=6;
    for (int j=n-1; j>0; j--)
    {
        for (int i=0; i<j;i++)
        {if (*wsk > *(wsk+1))
        zamien (*wsk, *(wsk+1));
        }
}
    for (int k=0; k<6; k++)
    {cout<<tab[k];
    }
        getchar();
        return 0;
        }
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: MichalPWr »

Napisane na szybko i średnio finezyjnie.

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
void wys(int *wsk,int n);
void sortowanie(int *wsk, int n);

int main()
{int tab[]={1,5,3,6,4,7};
int *wsk,n;
wsk=tab; 
n=sizeof(tab)/4;

sortowanie(wsk,n); 
wys(wsk,n);
system("PAUSE");	

return 0;
}

void wys(int *wsk, int n){
int i;

for(i=0;i<n;i++)   {
printf("%d
",*(wsk+i));
 }}

void sortowanie(int *wsk, int n){
int i,j,c;
for(i=0;i<n;i++){
for(j=0;j<n-1;j++){
if(*(wsk+j)>*(wsk+j+1)){
c=*(wsk+j);
*(wsk+j)=*(wsk+j+1);
*(wsk+j+1)=c;
 }}}}                                                                            
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: agggnes »

Jestem raczej początkująca i połowy z twojego programu nie rozumiem...

Potrafiłbyś delikatnie przerobić mój, żeby działał?
Jeśli napiszę twój, nauczyciel będzie wiedział że jest przepisany.
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: MichalPWr »

Spoko ja też jestem początkujący w \(\displaystyle{ C/C++}\). Program jest napisany bardzo łopatologicznie.
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: agggnes »

Kod: Zaznacz cały

n=sizeof(tab)/4;
system("PAUSE");   
printf("%d
",*(wsk+i));
Nie mieliśmy tego jeszcze, więc raczej nie chciałabym tego pisać...
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: wawek91 »

agggnes, sizeof(tab) zwraca wielkośc tablicy, system("pause"); zatrzymuje program po to, żeby się okienko konsoli nie zamknęło zaraz po wykonaniu programu, printf wypisuje to co się mu przekaże, w tym przypadku dokładnie kolejne elementy tablicy
Ostatnio zmieniony 15 maja 2012, o 21:25 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: Afish »

Kod: Zaznacz cały

void zamien(int a, int b)
{
     int temp=a;
     a=b;
     b=temp;
     }
Ta funkcja nie robi tego, co prawdopodobnie masz na myśli - parametry są przekazywane przez wartość, więc po wyjściu z funkcji wartości nie zostaną zamienione. Musisz przekazać je przez referencję lub przekazać wskaźniki na odpowiednie zmienne.
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: agggnes »

Dopisałam przed a, b w funkcji zamień, a program wciąż wypisuje nieposortowaną tablicę.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] wskaźniki, sortowanie bąbelkowe

Post autor: Afish »

Bo nigdzie nie modyfikujesz zmiennej wsk. Technicznie rzecz biorąc, w tym momencie Twój program sortuje dwa pierwsze elementy tablicy.
ODPOWIEDZ