Errores al compilar

Iniciado por Supermanxd, 6 Marzo 2015, 04:33 AM

0 Miembros y 1 Visitante están viendo este tema.

Supermanxd

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

Código (cpp) [Seleccionar]
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]


Código (cpp) [Seleccionar]
#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");

}

engel lex

errores de linea 13

esta es la linea 13
Código (cpp) [Seleccionar]
int num=[50];

y está mal... no se hace así...

hay 2 formas
forma 1
Código (cpp) [Seleccionar]
int num[50];

forma 2(arreglo dinamico c++)
Código (cpp) [Seleccionar]
int *num=new int[50];

errores linea 8 y 9
Código (cpp) [Seleccionar]
void ordenar (int ord[]);
void imprimir (int impri[]);


malo...

se hace
Código (cpp) [Seleccionar]
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
Código (cpp) [Seleccionar]
#include <cstdio>
#include <cstdlib>
#include <ctime>
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Supermanxd

Porfin!! Codigo resulto lo comparto :D
Una duda.. porque se pone el asterisco?

Código (cpp) [Seleccionar]
void ordenar (int *ord);
void imprimir (int *impri);


Código (cpp) [Seleccionar]
#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");

}

rir3760

Cita de: Jonathanxd en  6 Marzo 2015, 06:35 AM
porque se pone el asterisco?

Código (cpp) [Seleccionar]
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:
Código (cpp) [Seleccionar]
void ordenar (int ord[ALGUN_VALOR]);
void imprimir (int impri[ALGUN_VALOR]);

Se procesa como si la declaración fuera:
Código (cpp) [Seleccionar]
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language