pasar float con array usando punteros - help

Iniciado por Micah Genji, 28 Mayo 2010, 10:19 AM

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

Micah Genji

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
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former : A.E

Gallu

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" ......
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

.:BlackCoder:.

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...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




[L]ord [R]NA

Te recomiendo que estudies funciones, el problema que tiene se debe a que no utilizas ningunos de los valores que pasas como parametros.

do-while

?????????

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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Micah Genji

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
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former : A.E

.:BlackCoder:.

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
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




[L]ord [R]NA

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.

.:BlackCoder:.

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...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja