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

como iterar fila por fila en pandas

1  Asked on November 4, 2021 by emanuel-lemos

     

Express.static() en Cpanel no sirve CSS

1  Asked on November 4, 2021 by gabriel-taype

     

React native APK sin servidor

1  Asked on November 4, 2021 by gabocafer

 

Generar imagen php

1  Asked on November 4, 2021

   

Cambiar el valor de input cuando introduzco un numero

0  Asked on November 4, 2021 by razvan-lismanu

     

Como usar variables if en java para dos condiciones

1  Asked on November 4, 2021 by emil-jpz

 

Implementar método async que devuelva un valor decimal

2  Asked on August 27, 2021 by pedro-vila

   

No funciona mi botón con JavaScript

1  Asked on August 27, 2021 by braylin-ivan-payano

   

No puedo llamar Clase

1  Asked on August 27, 2021 by camilo34

   

Porque no funciona mi javascript?

1  Asked on August 27, 2021

     

Python – ayuda con regex

3  Asked on August 27, 2021 by gonzalo-rojo

   

Recibir datos post en node js express js

2  Asked on August 27, 2021 by alejandrognzls

     

Problema con errores en forms Django

1  Asked on August 27, 2021 by lucas-leone

   

Ask a Question

Get help from others!

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