Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Micah Genji en 28 Mayo 2010, 10:19 AM

Título: pasar float con array usando punteros - help
Publicado por: Micah Genji en 28 Mayo 2010, 10:19 AM
bueno amigos estuve casi 2 horas tratando de implementar un codigo algo sencillo en con array simple, pero ahora que lo pienso quiero implementarlo con punteros pero no se que ocurre:

Código (cpp) [Seleccionar]
#include<iostream>
#include<cmath>
#define MAX 10
using namespace std;

//funcion ingresar angulo
int ingresar(int *anguloprincipal, int LIM){
    int angle[MAX];
    for (int i=0; i<5; i++){
        cout<<i+1<<" Ingrese angulo: ";
        cin>>angle[i];
    }
    return angle[MAX];
}

//funcion calcular
float calcular(int *anguloprincipal,int *aux, int LIM){
    int angle[MAX];
    float auxi[MAX];
    for (int i=0; i<5; i++){
        for (int j=0;j<i;j++){
            auxi[j]=cos(angle[i]);
        }
    }
    return angle[MAX],auxi[MAX];
}

//funcion mostrar
int mostrar(int *auxi, int LIM){
    int aux[MAX];
    for (int j=0; j<5; j++){
        cout<<aux[j];
    }
    return aux[MAX];
}

main(){
    int angulo[MAX],auxiliar[MAX] cal;
    int *ang=angulo;
    int *aux=auxiliar;
    ingresar(ang, MAX);
    calcular(ang, aux, MAX);
    mostrar(aux, MAX);
    cin.get();
}


la verdad no se donde estoy cometiendo el error si en mi funcion calcular o en el paso de valor al puntero auxiliar :(

saludos
Título: Re: pasar float con array usando punteros - help
Publicado por: Gallu en 28 Mayo 2010, 11:57 AM
No entiendo mucho de C++ pero en niguna de las funciones estas usando/modificando el valor de las variables que pasas como parametro a las mismas
por ejemplo en "calcular" no veo que utilices dentro de la función  ni "int *anguloprincipal" ,  ni    "int *aux",  ni  "int LIM" ......
Título: Re: pasar float con array usando punteros - help
Publicado por: .:BlackCoder:. en 28 Mayo 2010, 14:21 PM
Weno men, vuelve a estudiar punteros, y repasa funciones... Primero que nada definiste MAX con una macro asi que es como una variable global, entonces para que, la pasas como parametro en toooodas las funciones??...

Segundo las funciones estan devolviendo valores y cuando las llamas, no le estas asignando dicho valor a nada, ademas eso no es necesario, acuerdate que estas trabajando con punteros...

Tercero para que declaras angle si pasaste "ang" y la llamaste anguloprincipal, guarda directamente en anguloprincipal...

Y weno despues leo las otras funciones... Arregla esa parte...

PD: Ingresar, no deberia devolver nada, y seguro que las otras tampoco, aunque no las he leido, me lo imagino

Saludos...
Título: Re: pasar float con array usando punteros - help
Publicado por: [L]ord [R]NA en 28 Mayo 2010, 21:28 PM
Te recomiendo que estudies funciones, el problema que tiene se debe a que no utilizas ningunos de los valores que pasas como parametros.
Título: Re: pasar float con array usando punteros - help
Publicado por: do-while en 29 Mayo 2010, 06:44 AM
?????????

return angle[MAX]

Este valor de retorno esta fuera de rango. (Estudia algo sobre vectores)

return angle[MAX],auxi[MAX];

De nuevo fuera de rango, y no puedes devolver dos valores (estudia algo sobre funciones y paso de parametros...)
...

¡Saludos!
Título: Re: pasar float con array usando punteros - help
Publicado por: Micah Genji en 29 Mayo 2010, 20:39 PM
Bueno gracias por los jalones de oreja, ya repase un poco si no que lo hice directamente sin tener en cuenta como trabaja las funciones con punteros, en fin tengo algo terminado, alguna sugerencia o por si otro jalon de orejas pasen el dato:

Código (cpp) [Seleccionar]
#include<iostream>
#include<cmath>
#define MAX 50
using namespace std;

//funcion ingresar angulo
int ingresar(int *anguloprincipal, int LIM){
   for (int i=0; i<2; i++){
       cout<<i+1<<" Ingrese angulo: ";
       cin>>anguloprincipal[i];
   }
}

//funcion calcular
float calcular(int *anguloprincipal,float *auxiliar, int LIM){
   for (int i=0; i<5; i++){
           auxiliar[i]=cos(anguloprincipal[i]);
       }
}

//funcion mostrar
float mostrar(float *auxiliar, int LIM){
   for (int i=0; i<2; i++){
       cout<<i+1<<" "<<auxiliar[i]<<endl;
}
}

main(){
   int angulo[MAX];
   float auxiliar[MAX];
   int *ang=angulo;
   ingresar(ang, MAX);
   calcular(ang, auxiliar, MAX);
   mostrar(auxiliar, MAX);
   cin.get();
}


ahora estoy en el ingreso de n veces que se quiera ingresar bueno eso ya lo implemento y meto mas funciones matematicas.

saludos
Título: Re: pasar float con array usando punteros - help
Publicado por: .:BlackCoder:. en 30 Mayo 2010, 01:17 AM
Esas funciones no retornan nada men, no te compliques ponles el tipo de retorno void...

No lei todo el code pero lo que vi por encimita esta raro, si tu dices que funciona pes... Ta bien, pero trata de reducir los algoritmos...

Saludos
Título: Re: pasar float con array usando punteros - help
Publicado por: [L]ord [R]NA en 30 Mayo 2010, 02:28 AM
Cita de: El_nuevo_HH en 30 Mayo 2010, 01:17 AM
Esas funciones no retornan nada men, no te compliques ponles el tipo de retorno void...

No lei todo el code pero lo que vi por encimita esta raro, si tu dices que funciona pes... Ta bien, pero trata de reducir los algoritmos...

Saludos

Creo que la cantidad de algoritmos esta bien y funcional, aunque se debio pensar en los valores de retorno en las funciones para el tratamiento de errores.
Título: Re: pasar float con array usando punteros - help
Publicado por: .:BlackCoder:. en 30 Mayo 2010, 02:42 AM
Weno yo por lo menos no le veo sentido a la asignacion de angulo al puntero ang... para eso que le pase de una vez angulo... digo yo  :xD y los bules no deberian de llegar hasta MAX? Por eso dije que vi raro el code...

Pero seh de resto parece que todo esta bien...

Saludos...