To com um Programa para ordenação QuickSort
o programa ta funcionando… mas na hora de gerar os numeros aleatorios ta dando erro quando eu faço um rand maior de 100
o main:[code]int main(int argc, char *argv[])
{
int n;
srand(time(NULL));
cout<<"Quantos Elementos?\n";
cin>>n;
long A[n];
system("cls");
cout<<"Antes da Ordenacao\n\n";
for(int i=0;i<n;i++){
A[i]= rand()%100 + 0;
if(i==(n-1)){
cout><<A[i];
}
else{
cout<<A[i]><<" - ";
}
}
qs(A,0,n-1);
cout<<"\nDepois da Ordenacao\n\n";
for(int i=0;i<n;i++){
if(i==(n-1)){
cout><<A[i];
}
else{
cout<<A[i]><<" - ";
}
}
cout<<"\n\n\n\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
[/code]
o problema está nesse trecho
se coloco o numero 100 da CERTO
mas se coloco um numero maior que 148 já da erro
eu fiz teste com A[i]= rand()%148 + 0;
e deu certo mas A[i]= rand()%149 + 0;
já deu erro…
Como que eu faço para consertar?
abaixo o codigo inteiro:
[code]#include <cstdlib>
#include <iostream>
using namespace std;
void qs (long *item, int left, int right)
{
int i, j;
char x, y;
i = left; j = right;
x = item[right];
do {
while(item[i]<x && i><right) i++;
while(x><item[j] && j>left) j–;
if(i<=j) {
y = item[i];
item[i] = item[j];
item[j] = y;
i++; j--;
}
} while(i<=j);
if(left<j) qs(item, left, j);
if(i><right) qs(item, i, right);
}
int main(int argc, char *argv[])
{
int n;
srand(time(NULL));
cout><<"Quantos Elementos?\n";
cin>>n;
long A[n];
system("cls");
cout<<"Antes da Ordenacao\n\n";
for(int i=0;i<n;i++){
A[i]= rand()%148 + 0;
if(i==(n-1)){
cout><<A[i];
}
else{
cout<<A[i]><<" - ";
}
}
qs(A,0,n-1);
cout<<"\nDepois da Ordenacao\n\n";
for(int i=0;i<n;i++){
if(i==(n-1)){
cout><<A[i];
}
else{
cout<<A[i]><<" - ";
}
}
cout<<"\n\n\n\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
[/code]
Obrigado a todos que me ajudarem… abs