sortowanie przez wstawianie tekstu

Odpowiedz Nowy wątek
2015-02-23 20:15
rikrosfit
0

Witam, prosze o poprawie programu pokazanie błędow i wytlumaczenie co robie zle w najprosztszy mozliwy sposob:
zadanie: napisz program ktory metodą sortowania przez wstawianie posortuje ciag znakow (liter małych i duzych) wprowadzonych przez uzytkownika z klawiatury
sam napisalem tyle ( pogubilem sie troche z tymi znakami i robilem to tak jakby dla liczb )

void sort_wst(int tab[], int size) 
{ 
     int pom, j; 
         for (int i=1; i<=size;i++)
 { 
         pom= tab[i]; 
              for(j=i-1;j>=0&&tab[j]>pom;j--) 
              {

                                              tab[j+1]=tab[j]; 
                                              tab[j+1]=pom; 
              } 
 } 
}
 int main() 
 { 
     int n; 
     cout<<"podaj liczby";
      cin>>n;
       sort_wst(n);
        cout<<"posostowane liczby: "<<n<<endl; 
  system("pause");
  return 0; 
}

błąd: http://scr.hu/3j5r/fb66n

Pozostało 580 znaków

2015-02-23 21:15
0
void sort_wst(int tab[], int size) 
       sort_wst(n);
}

Problem leży w tych dwóch linijkach. Masz funkcję, która pobiera 2 argumenty a ty jej przekazujesz 1. Musisz dodatkowo przed n wstawić wskaźnik do wcześniej utworzonej tablicy (nazwa tablicy) np.

int main(){
int tablica[10]
....
sort_wst(tablica, n);

Z tym, że cię to poniekąd ogranicza do np. 10 liczb w tablicy. Możesz zamiast tego użyć

vector<int> tablica;

a przy każdym wpisywaniu liczby z klawiatury tablica.push_back(element);

edytowany 1x, ostatnio: n4lik, 2015-02-23 21:16

Pozostało 580 znaków

2015-02-24 12:23
Wielki Terrorysta
0

Ok sprobuje :)

Pozostało 580 znaków

2015-02-24 21:38
rikrosfi
0
#include<iostream>
#include<cstdlib>
#include<fstream>

using namespace std;
void sort_wst (int tab[], int size)
{
    int pom, j;
        for (int i=1; i<=size;i++)
        {
            pom= tab[i];
                for(j=i-1;j>=0&&tab[j]>pom;j--)
                    tab[j+1]=tab[j];
                    tab[j+1]=pom;

        }
}
int main()
{
    int n;
    int tablica[10];
    cout<<"podaj liczby";
    cin>>n;
    sort_wst(tablica,n);
    cout<<"posostowane liczby:  "<<n<<endl;

system ("pause");
return 0;
}

wywala mi blad : http://scr.hu/2eof/xkfaw http://scr.hu/2eof/um42t

Pozostało 580 znaków

2015-02-24 21:55
0
rikrosfi napisał(a):

wywala mi blad : http://scr.hu/2eof/xkfaw http://scr.hu/2eof/um42t

I nic dziwnego - bo co innego chcesz uzyskać i co innego robisz. Po podaj liczby - chcesz wczytać ilość liczb, a nie liczby. Przynajmniej tak wynika z Twojego kodu.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie

Pozostało 580 znaków

2015-02-24 21:56
0
for (int i=1; i<=size;i++)
...
pom= tab[i];

Wychodzisz poza zakres tablicy.

edytowany 3x, ostatnio: some_ONE, 2015-02-24 21:56

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