Program tablice, uporządkowanie

0

Siemanko wszystkim!
Proszę o pomoc w napisaniu prostego programu.
Program ma wylosowac n liczb i uporządkowac je jako tablicę.
Potem musi przesówac ciąg w lewo aż na pierwszym miejscu będzie najmniejsza liczba z tablicy.
Napisałem coś takiego:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
const int n=10;
int A[n],a;
srand (time(NULL));
for(int i=0; i<n; i++)
{
A[i]=rand()%12-5;
}
for(int i=0; i<n; i++)
{
cout<<A[i]<<" ";
}
cout<<endl;
int mn=0,i=0;
for(int i=0;i<n;i++)
{
if(A[mn]>A[i])
mn=i;
}
cout<<"\n\nWartosc najmniejsza: "<<A[mn]<<endl;
while(A[0]!=A[mn])
{

a=A[0];
for(int i=0; i<n-1; i++)
{

    A[i]=A[i+1];

}
A[n-1]=a;
for(int i=0; i<n; i++)
cout<<A[i]<<" ";
cout<<endl;
}


return 0;

}

ale program raz działa poprawnie, raz liczy w nieskończonośc, a raz w ogóle nie działa...
Proszę o pomoc. Pozdrawiam!!

0
 while(A[0]!=A[mn])

Wydaje mi się, że tutaj tkwi problem. Sprawdzasz wartość A[mn], która za każdym przejściem pętli while jest inna ( indeks mn pozostaje ten sam ). Musisz zapamiętać wartość minimum

 int nMin = A[mn];

a następnie jej używać do sprawdzenia warunku w pętli while

 while(A[0]!=nMin)
0

Jak zrobiłem tak jak mówisz to program w ogóle przestał działac - nie przestawia liczb. Czy jest tu w ogóle ktoś kto ogarnia na tyle c++ żeby mi pomóc?

0

Proszę bardzo. Zajęło mi to jakieś 3 minuty (co i tak nie jest specjalnym wyczynem).

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    const int n=10;
    int A[n],a, min = 10000;
    srand (time(NULL));
    for(int i=0; i<n; i++)
    {
        A[i]=rand()%12-5;
        if(A[i] < min)
        {
                a = i;
                min = A[i];
        }
    }
    for(int i=0; i<n; i++)
        cout<<A[i]<<" ";
    cout<<endl;
    for(int i = 0; i < n; i++)
    {
            if(i != a)
            {
                 int pierwsza = A[0];
                 for(int j = 0; j < n-1; j++)
                         A[j] = A[j+1];
                 A[n-1] = pierwsza;
            }
            else
                break;
    }
    for(int i=0; i<n; i++)
            cout<<A[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
0

Dzięki ;) ja dopiero zaczynam takie zabawy z c++. Najważniejsze, że działa, Pozdro!

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