elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda uso de punteros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda uso de punteros.  (Leído 1,696 veces)
laurinhabig0

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Ayuda uso de punteros.
« en: 20 Noviembre 2017, 18:38 pm »

Necesito ayuda con este fragmento de código:

Código:
#include <stdio.h>

int *maximo(int vec[],int num){
    int *pmax = &vec[0];
    for (int i=0;i<num-1;i++){
        if(vec[i]<vec[i+1]){
            pmax++;
        }
    }
   
    return pmax;
}

int main() {
    int N;
       
    printf("Introduza o número de elementos do vector:\n");
    scanf("%d",&N);
       
    while(N<1){
    printf("ERRO. Introduza un número de elementos válido:\n");
    scanf("%d",&N);
    }
   
    int v[N];
   
    for(int i=0;i<N;i++){
        printf("Introduza un enteiro para a posición v[%d]:\n",i);
        scanf("%d",&v[i]);
    }
   
    printf("O máximo é %d\n",*maximo(v,N));
}

El ejercicio consiste en calcular el máximo de un vector de enteros con una función que se encuentre fuera del main y que devuelva un puntero a la posición del máximo. El código compila sin problemas pero al ejecutarlo falla en el cálculo del máximo, a ver si me echáis una mano y veis lo que está mal :( muchas gracias de antemano!!


En línea

calantra

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda uso de punteros.
« Respuesta #1 en: 20 Noviembre 2017, 20:53 pm »

Código:
int *maximo(int vec[],int num){
    int *pmax = &vec[0];
    int valormi=vec[0];
    for (int i=1;i<num;i++){
        if(vec[i]>valormi){
            valormi=vec[i];
            pmax=&vec[i];
        }
    }

    return pmax;
}

De nada.
P.D. valormi representa el valor Máximo Inicial. Se actualiza cada vez que encuentra un numero mayor, en ese momento guarda la dirección del puntero del vector actual en pmax. En tu código avanzaba pmax siempre que el siguiente número al actual controlado fuera menor, incluso si los anteriores fueran mayores, apuntando erróneamente al número incorrecto.


« Última modificación: 20 Noviembre 2017, 21:44 pm por calantra » En línea

laurinhabig0

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda uso de punteros.
« Respuesta #2 en: 21 Noviembre 2017, 14:29 pm »

Muchísimas gracias!!!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda]con punteros en asm
ASM
ny0x 4 6,761 Último mensaje 12 Mayo 2009, 21:45 pm
por ny0x
Ayuda punteros. [c++]
Programación C/C++
ninto33 3 3,813 Último mensaje 19 Enero 2011, 01:46 am
por ninto33
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 4,916 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
ayuda con punteros de C
Programación C/C++
LeoJ24 1 1,718 Último mensaje 11 Enero 2013, 18:13 pm
por durasno
Ayuda con punteros (en C++) (Actualizacion constante con nuevas preguntas)
Programación C/C++
DarkSorcerer 5 2,330 Último mensaje 18 Septiembre 2013, 07:12 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines