Programa que llene arreglo de 50 numeros aleatorios entre [1 y 100] y ordenarlos descendentemente y mostrar los numeros ordenados por pantalla..
Me salen los siguentes errores.. :C
13 12 [Error] expected identifier before numeric constant
13 15 [Error] expected '{' before ';' token
13 15 [Warning] lambda expressions only available with -std=c++11 or -std=gnu++11 [enabled by default]
13 15 [Error] invalid user-defined conversion from 'main()::__lambda0' to 'int' [-fpermissive]
13 14 [Note] candidate is: main()::__lambda0::operator void (*)()() const <near match>
13 14 [Note] no known conversion for implicit 'this' parameter from 'void (*)()' to 'int'
25 15 [Error] invalid conversion from 'int' to 'int*' [-fpermissive]
8 6 [Error] initializing argument 1 of 'void ordenar(int*)' [-fpermissive]
26 16 [Error] invalid conversion from 'int' to 'int*' [-fpermissive]
9 6 [Error] initializing argument 1 of 'void imprimir(int*)' [-fpermissive]
#include <cstdio>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
using namespace std;
void ordenar (int ord[]);
void imprimir (int impri[]);
int main ()
{
int num=[50];
int i=0;
int limite_inf=1, limite_sup=100;
srand (time(0));
for (i=0; i<50; i++)
{
printf("rand ()");
printf("Numero %d: ", i);
printf("%d\n", num);
}
ordenar (num);
imprimir (num);
system ("pause");
return 0;
}
void ordenar (int ord[])
{
int i=0, j=0, aux=0;
for (i=0; i<50; i++)
{
for (j=i; j<50-1; j++)
{
if (ord[i] < ord[j])
{
aux = ord[i];
ord [i] = ord[j];
ord [j] = aux;
}
}
}
}
void imprimir (int impri[])
{
int i=0;
for (i=0; i<50; i++)
{
printf ("%d" , impri [i]);
}
printf ("\n\n");
}
errores de linea 13
esta es la linea 13
int num=[50];
y está mal... no se hace así...
hay 2 formas
forma 1
int num[50];
forma 2(arreglo dinamico c++)
int *num=new int[50];
errores linea 8 y 9
void ordenar (int ord[]);
void imprimir (int impri[]);
malo...
se hace
void ordenar (int *ord);
void imprimir (int *impri);
error en linea 22, no puede imprimir un array en tal caso num...
no uses conio.h, a demás aquí no lo necesitas, si vas a usar las librerías de c++ usa todas de c++ si no, usa todas de c
#include <cstdio>
#include <cstdlib>
#include <ctime>
Porfin!! Codigo resulto lo comparto :D
Una duda.. porque se pone el asterisco?
void ordenar (int *ord);
void imprimir (int *impri);
#include <cstdio>
#include<stdlib.h>
#include<ctime>
#include<iostream>
using namespace std;
void ordenar(int *num);
void imprimir(int *impri);
int main ()
{
int num [50], i=0;
srand (time(NULL));
printf("\nNumeros: ");
for (i=0; i<50; i++)
{
int x = rand () %100;
num [i] = x;
cout <<num [i]<<" ";
}
printf ("\n\n");
ordenar (num);
imprimir (num);
system ("pause");
return 0;
}
void ordenar (int num[])
{
int i=0, j=0, aux=0;
for (i=0; i<50; i++)
{
for (j=0; j<50-1; j++)
{
if (num[j+1] > num[j])
{
aux = num [j];
num [j] = num [j+1];
num [j+1] = aux;
}
}
}
}
void imprimir (int impri[])
{
int i=0;
printf ("\n\n");
printf ("Numeros ordenados: \n");
for (i=0; i<50; i++)
{
cout << impri [i]<<" ";
}
printf ("\n\n");
}
Cita de: Jonathanxd en 6 Marzo 2015, 06:35 AM
porque se pone el asterisco?
void ordenar (int *ord);
void imprimir (int *impri);
En realidad no es necesario el cambio (es mas bien una cuestión de estilo).
Todo argumento que se declare en la forma "T nombre[N]", por ejemplo:
void ordenar (int ord[ALGUN_VALOR]);
void imprimir (int impri[ALGUN_VALOR]);
Se procesa como si la declaración fuera:
void ordenar (int *ord);
void imprimir (int *impri);
Ahí el asterisco indica que el argumento es un puntero, en tu caso la dirección en memoria del primer elemento del array. Revisa tu material de referencia y busca los apartados sobre punteros y arrays.
Un saludo