sortowanie przez wstawianie tekstu

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

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);

0

Ok sprobuje :)

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

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.

0
for (int i=1; i<=size;i++)
...
pom= tab[i];

Wychodzisz poza zakres tablicy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1