AnswerBun.com

warning: passing argument 2 makes integer from pointer without a cast

Stack Overflow en español Asked by Dylan Nuga on December 13, 2020

#include <stdio.h>
#include <stdbool.h>
void buscapareja1 (int n,int *a, int *b);
void buscapareja2 (int n, int a, int *b);
bool pitagoricos (int h, int *c1, int *c2);   


int main() {
    int hipo, cmenor, cmayor;
    cmenor=1;
    cmayor=1;
    
    printf("introduce el primer número");
    scanf( "%d", &hipo);
    while (hipo != 0){
        buscapareja1 (hipo, &cmenor, &cmayor);
        if (pitagoricos (hipo, &cmenor, &cmayor)==true){
            printf("Hipotenusa: %i n",hipo);
            printf("Cateto menor %i n",cmenor);
            printf("Cateto myor %i n", cmayor);
        } else
        {
            printf("introduce el siguiente numero");
            scanf( "%d", &hipo);
        }
    }
    return 0;
}                 

void buscapareja1 (int n,int *a, int *b){
    bool encontrado= false;
    *a=1;
    *b=1;
    while (*a < n && encontrado==false){
        buscapareja2 (n,a,b);
        encontrado==pitagoricos(n,a,b);
        if (encontrado=false){
            *a=*a+1;
        }

    } 
    return; 
}

            
void buscapareja2 (int n, int a, int *b){
    bool encontrado= false;
    *b=1;
    while (*b < n && encontrado==false){
        encontrado==pitagoricos(n,a,b);
        if (encontrado=false){
            *b=*b+1;
        }

    } 
    return; 
}

bool pitagoricos (int h, int *c1, int *c2){
    if (h*h==*c1**c1+*c2**c2)
    {
        return true;
    } else
    {
        return false;
    }
        
}

Cuando compilé el programa me salió este error:

[Warning]assignment makes integer from pointer without a cast

Y aquí me aparece este error:

note: expected ‘int’ but argument is of type ‘int *’.

Estos errores se repiten a lo largo del código ya que no entiendo muy bien como pasar punteros entre varias funciones.

El programa consiste en dada unos números enteros h, hipotenusa, mostrar por pantalla los catetos que formen ternas pitagóricas si las tuviera.

One Answer

En primer lugar, haces una comparación cuando en realidad tienes que hacer una asignación:

encontrado==pitagoricos(n,a,b);

Esto debería de ser:

encontrado=pitagoricos(n,a,b);

En segundo lugar la cabecera de la función:

void buscapareja2 (int n, int a, int *b);

Debería ser:

void buscapareja2 (int n, int *a, int *b);

Y en tercer lugar en el bucle tienes un fallo, y es que, en el caso de que se encuentre una combinación de catetos que haga a pitagóricos devolver true se queda en un bucle infinito porque no das la oportunidad de modificar el valor de la hipotenusa, es decir, no se ejecuta el scanf.

La solución sería:

#include <stdio.h>
#include <stdbool.h>

void buscapareja1 (int n,int *a, int *b);
void buscapareja2 (int n, int *a, int *b);
bool pitagoricos (int h, int *c1, int *c2);   


int main() {
    int hipo, cmenor, cmayor;
    cmenor=1;
    cmayor=1;
    
    printf("introduce el primer número: ");
    scanf( "%d", &hipo);
    while (hipo != 0){
        buscapareja1 (hipo, &cmenor, &cmayor);
        if (pitagoricos (hipo, &cmenor, &cmayor)==true){
          printf("Hipotenusa: %i n",hipo);
          printf("Cateto menor %i n",cmenor);
          printf("Cateto myor %i n", cmayor);
        } else {
          printf("Nope!n");
        }

        printf("introduce el siguiente numero: ");
        scanf( "%d", &hipo);
    }
    return 0;
}                 

void buscapareja1 (int n,int *a, int *b){
    *a=1;
    *b=1;
    bool encontrado = false;
    while (*a < n && encontrado==false){
        buscapareja2 (n,a,b);
        encontrado=pitagoricos(n,a,b);

        if ( encontrado == false ) {
          (*a)++;
        }
    } 
    return; 
}

            
void buscapareja2 (int n, int *a, int *b){
    bool encontrado= false;
    *b=1;
    while (*b < n && encontrado==false){
        encontrado=pitagoricos(n,a,b);
        if ( encontrado == false ) {
          (*b)++;
        }
    } 
    return; 
}

bool pitagoricos (int h, int *c1, int *c2){
    return h*h==*c1**c1+*c2**c2;
}

Answered by lromeraj on December 13, 2020

Add your own answers!

Related Questions

¿Terminar ejecucion de una clase en python?

0  Asked on February 19, 2021 by isaac-martinez

 

Select Main class java

0  Asked on February 19, 2021 by ricardo-morelos

 

No accede a los archivos de la memoria en Android 10

1  Asked on February 19, 2021 by leonardo-henao

     

Multiconsulta realtime database firebase flutter

0  Asked on February 19, 2021 by jorge-cuello

   

Procesos en forma de anillo hasta N

1  Asked on February 18, 2021 by tomas-hidalgo

 

Scroll dentro de un modal jQuery

1  Asked on February 18, 2021 by roberto-arguello

     

Key Reinstalation Attack WPA2 No Funciona

1  Asked on February 17, 2021

   

CRUD con Jests, mongo y jests

0  Asked on February 17, 2021 by rrodo1310

       

Como acceder desde otra clase a una lista “private static List”?

4  Asked on February 17, 2021 by dobarqueiro

   

Python. Error al realizar un loop con while

1  Asked on February 17, 2021 by adrin-p-l

 

¿Cómo usar el acces token de Spotify?

1  Asked on February 17, 2021 by walixgam-fowx

   

como es el proceso para enviar un formulario de contacto?

0  Asked on February 16, 2021 by julianprog

     

php no genera variables de formulario con domPdf

1  Asked on February 16, 2021 by wlf-dk

       

¿Como puedo cambiar de ramas en git?

1  Asked on February 15, 2021 by ignacio-torres

 

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP