Problem ze wskaznikami -zadanie
Problem ze wskaznikami -zadanie
Cześć mam problem i nie wiem jak do niego podejść mam zadanie o takiej treści :
Napisz funkcję sortującą tablicę liczb całkowitych malejąco przez proste wybieranie. Algorytm sortowania:
1. Wyszukaj największy z n elementow tablicy
2. Zamień ten element z pierwszym elementem tablicy
3. W tym momencie największy element znajduje się na początku tablicy. Powtórz dwie pierwsze operacje dla
n-1 pozostałych elementow, następnie dla n-2 i tak dalej do chwili, gdy zostanie ostatni, najmniejszy
element.
Funkcja ma przyjmować następujące argumenty: adres tablicy do posortowania, rozmiar (liczbę elementow)
tablicy, znacznik wskazujący czy wyprowadzać wyniki pośrednie, to znaczy wartość tablicy po każdej zamianie
(1) czy też nie (0).
Jeśli ktoś by mógł się zlitować i pomóc w rozwiązaniu to bym był wdzięczny.
Napisz funkcję sortującą tablicę liczb całkowitych malejąco przez proste wybieranie. Algorytm sortowania:
1. Wyszukaj największy z n elementow tablicy
2. Zamień ten element z pierwszym elementem tablicy
3. W tym momencie największy element znajduje się na początku tablicy. Powtórz dwie pierwsze operacje dla
n-1 pozostałych elementow, następnie dla n-2 i tak dalej do chwili, gdy zostanie ostatni, najmniejszy
element.
Funkcja ma przyjmować następujące argumenty: adres tablicy do posortowania, rozmiar (liczbę elementow)
tablicy, znacznik wskazujący czy wyprowadzać wyniki pośrednie, to znaczy wartość tablicy po każdej zamianie
(1) czy też nie (0).
Jeśli ktoś by mógł się zlitować i pomóc w rozwiązaniu to bym był wdzięczny.
Re: Problem ze wskaznikami -zadanie
Panie Arkadiuszu przerobiłem tą lekcje z sortowaniem załączam na dowód nawet kawałek kodu :
lecz mój problem ciągle przysparza mi kłopotów nie bardzo rozumiem w zadaniu o co ma chodzić z przyjmowaniem przez funkcje znacznika pośredniego.
Pytałem nauczyciela ale on mi lakonicznie powiedział
i zostałem w czarnej d. z tym.
Zrobiłem coś takiego do tej pory :
Proszę o jakąś podpowiedź co robię źle ,i nakierować moje myślenie na jakieś dobre tory .Program mogę sam napisać ale nie wiem jak się zabrać za to sortowanie ze znacznikiem pośrednim.
Code: Zaznacz cały
void Sort(int tab,int rozmiar){
int k, t;
for(int i = 0; i < rozmiar - 1; i++)
{
k = i;
for(int j = i + 1; j < rozmiar; j++)
if (tab[j] < tab[k])
k = j;
t = tab[i];
tab[i] = tab[k];
tab[k] = t;
}
}
Pytałem nauczyciela ale on mi lakonicznie powiedział

Zrobiłem coś takiego do tej pory :
Code: Zaznacz cały
#include <iostream>
using namespace std;
void funkcja( int tabl[] , int rozmiar,bool czy );
int pierwszy(int tab ,int rozmiar);
int main()
{
int tab [] ={1,2,3,4,5,5,7,8,8,10};
int * pierwszy;
pierwszy=tab;
int rozmiar=sizeof(tab)/sizeof(int);
for(int i=0;i<rozmiar ;i++)
{
pierwszy=tab+i;
cout << *pierwszy << endl;
}
funkcja( tab,rozmiar,true);
}
void sortujmalejaco(int *adres,int rozmiar,bool znacznik)
{
if(znacznik=true)
{
}
}
Re: Problem ze wskaznikami -zadanie
Jeżeli znacznik jest false to wystarczy posortować tak jak jest w kursie, jeżeli znacznik jest true to znaczy wyświetlić dodatkowo po każdej zamianie wszystkie wartości tablicy co ukazuje jak działa algorytm sortujący.
Re: Problem ze wskaznikami -zadanie
Panie Arkadiuszu cały czas próbuje ale coś robię nie tak proszę o poprawienie kodu jeśli to możliwe i powiedzenie w czym tkwi błąd załączam program ,który do tej pory zrobiłem , cały czas chodzi o to sortowanie.
Code: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int tab[]={0,1,2,3,4,5,6,7,8,9,10};
int rozmiar=sizeof(tab)/sizeof(int);
int * pierwszy;
for(int i=0;i<rozmiar;i++)
{
pierwszy=tab+i;
//cout << *pierwszy <<endl;
for(int j=i+1;j<rozmiar;j++)
{
if(*pierwszy<*pierwszy+j)
{
int t; /inicjalizuje zmienna t;
t=*pierwszy; //pod t przypisuje wartosc znajdujaca sie pod *pierwszy
*pierwszy=*pierwszy+1; //pod *pierwszy przypisuje to co sie znajduje pod *pierwszy+1
//*pierwszy+1=&t; tu mam blad cos zle robie
}
}
}
}
Re: Problem ze wskaznikami -zadanie
Code: Zaznacz cały
#include <iostream>
using namespace std;
void sortuj(int *, int, bool);
void PokazStan();
const int ile = 4;
int tab[ile];
int main()
{
for (int i = 0; i < ile; i++)
{
cout <<"Podaj "<<i+1<<" liczbe ";
cin >>tab[i];
cin.ignore();
}
sortuj(tab, ile, 1);
getchar();
return 0;
}
void sortuj(int *tab,int rozmiar,bool znacznik)
{
int k, t;
for(int i = 0; i < rozmiar - 1; i++)
{
k = i;
for(int j = i + 1; j < rozmiar; j++)
if (tab[j] > tab[k])
k = j;
t = tab[i];
tab[i] = tab[k];
tab[k] = t;
if(znacznik)
PokazStan();
}
}
void PokazStan()
{
cout <<"Nasza tablica wyglada w kolejnosci nastepujaco: \n";
for (int i = 0; i < ile; i++)
{
cout <<i+1<<". = "<<tab[i]<<"\n";
}
}
Re: Problem ze wskaznikami -zadanie
Bardzo dziękuje ,jest Pan wielkim programistą 
