#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
int main()
{
int* tab = new int[10];
int* pos = new int[10];
srand(time(NULL));
for (int i = 0; i < 10; i++)
{
tab[i] = rand() % 50;
cout << tab[i] << endl;
if (i == 9)
cout << endl;
}
for (int i = 0; i < 10; i++)
{
if (i == 0)
pos[i] = tab[i];
else if (i == 1)
{
if (tab[i] < pos[i - 1])
{
int liczba3 = pos[i - 1];
pos[i - 1] = tab[i];
pos[i] = liczba3;
}
else
pos[i] = tab[i];
}
else
{
int find = 0;
for (int j = 0; j < i; j++)
{
if (tab[i] < pos[j])
{
int* liczba = new int[i - j];
int l = 0;
for (int k = j; k < i; k++)
{
liczba[l] = pos[k];
l++;
}
l = 0;
for (int k = j + 1; k <= i; k++)
{
pos[k] = liczba[l];
l++;
}
pos[j] = tab[i];
find = 1;
delete[] liczba;
break;
}
if (j == i - 1 && find == 0)
pos[i] = tab[i];
}
}
}
for (int i = 0; i < 10; i++)
cout << pos[i] << endl;
delete[] tab;
delete[] pos;
}
Chyba udało mi się naprawić ten program. Takie większe błędy jakie miałeś to:
- Jeżeli i == 1 i tab[i]>=pos[i-1] to nic się nie dzieje (linia 22)
- Rozmiar tablicy liczba jest o 1 za duży (linia 36)
- W linii 44 powinno być k<=i
- W linii 55 powinno być pos[i]=tab[i]
(Chodzi mi o linie w Twoim programie, nie moim)