It douesn't give any error, but I need to know why when I execute it, it doesen't order the numbers that I introduce there, and only give's the bigger one.
I think that the mistake could be in the line 61, because it doesen't put any 0 in the array data.
#include <iostream>
usingnamespace std;
int max (int* data,int longitud);
void main()
{
//INIAZILACIÓN
int longitud;
int *data;
int *datatwo;
cout <<"Cuántos números quieres introducir?";
cin >> longitud;
data = newint [longitud];
if (data == NULL) {cout << "Error"; return;}
datatwo = newint [longitud];
if (datatwo == NULL) {cout << "Error"; return;}
//PEDIR DATOS
for (int i = 0 ; i < longitud ; i++)
{
cout << "El " << i+1 << " :";
cin >> data [i];
}
//ASIGNAR AL ARRAY AUXILIAR ORDENADAMENTE LOS MÁXIMOS DEL VECTOR PEDIDO AL USUARIO
for (int k=0; k<longitud ; k++)
{
datatwo[k] = max(data,longitud); // en la posición que estaba el máximo se transforma en el minimo
}
//VOLVER A PASAR LOS DATOS AL ARRAY ORIGINAL
//NO ES NECESARIO, PERO LO HAGO PARA HACERME EL CHULO
for ( int y = 0; y < longitud ; y++)
{
data[y]=datatwo[y];
}
//MOSTRAMOS POR PANTALLA
for (int p = 0; p<longitud ; p++) {cout <<p << " : " << data[p] << endl;}
//HACEMOS /DILIT/ A LA VARIABLE DATA
delete[] data;
}
int max (int* data,int longitud)
{
int maximo = data[0];
int posicion = 0;
for (int j = 1; j < longitud ; j++)
{
if (data[j] > maximo){maximo = data[j];posicion = j;}
return maximo;
}
data[posicion] = 0;
}
No, max() doesn't change the elements of data hence no ordering takes place.
All it does is finding the number that is greater than the first one (due to line 59)
If no greater value is found the result is undefined because there's no return after the loop
#include <iostream>
usingnamespace std;
int max (int* data,int longitud);
void main()
{
//INIAZILACIÓN
int longitud;
int *data;
int *datatwo;
cout <<"Cuántos números quieres introducir?";
cin >> longitud;
data = newint [longitud];
if (data == NULL) {cout << "Error"; return;}
datatwo = newint [longitud];
if (datatwo == NULL) {cout << "Error"; return;}
//PEDIR DATOS
for (int i = 0 ; i < longitud ; i++)
{
cout << "El " << i+1 << " :";
cin >> data [i];
}
//ASIGNAR AL ARRAY AUXILIAR ORDENADAMENTE LOS MÁXIMOS DEL VECTOR PEDIDO AL USUARIO
for (int k=0; k<longitud ; k++)
{
datatwo[k] = max(data,longitud); // en la posición que estaba el máximo se transforma en el minimo
}
//VOLVER A PASAR LOS DATOS AL ARRAY ORIGINAL
//NO ES NECESARIO, PERO LO HAGO PARA HACERME EL CHULO
for ( int y = 0; y < longitud ; y++)
{
data[y]=datatwo[y];
}
//MOSTRAMOS POR PANTALLA
for (int p = 0; p<longitud ; p++) {cout <<p << " : " << data[p] << endl;}
//HACEMOS /DILIT/ A LA VARIABLE DATA
delete[] data;
}
int max (int* data,int longitud)
{
int maximo = data[0];
int posicion = 0;
for (int j = 1; j < longitud ; j++)
{
if (data[j] > maximo){maximo = data[j];posicion = j;}
}
data[posicion] = 0;
return maximo;
}