Duda funciones c

SiKoPaTa

Hola buenas tengo una duda, si implemento un funcion que haga por ejemplo suma y resta

int funcion(int num1, int num2)
{
int aux1, aux2;
aux1 = num1 + num2;
aux2 = num1 - num2;

return aux1, aux2;
}

int main()
{
int num1, num2;
printf("Introduce dos numeros: ");
scanf("%i%i",&num1,&num2);

printf("resultado %i %i",funcion(num1,num2));

¿Como haria para mostrar en la misma llamada funcion la suma y la resta?

Muchas gracias.

cabron

No puedes devolver dos resultados desde una función, tienes que hacer dos funciones, una para cada operación.

1 1 respuesta
ke2g

no puedes devolver mas de un parámetro, o bien lo haces con un vector, o te creas tu propia estructura. Aunque personalmente eso lo haria con dos funciones.

SiKoPaTa

#2 muchas gracias.

gonya707

O haces dos funciones o lo pasas como puntero el resultado. Que yo sepa C no puede devolver dos cosas en una sola función.

void funcion(int num1, int num2, int* suma, int* resta ){

*suma = num1 + num2;
*resta = num1 - num2;

}

int main()
{
int num1, num2,s,r;
printf("Introduce dos numeros: ");
scanf("%i%i",&num1,&num2);

printf("resultado %i %i",funcion(num1,num2,&s,&r));
1 respuesta
SiKoPaTa

#5
Perdona tengo una duda porque cuando implementas esto:

int main()
    int x,y,z,w;
    printf("Dos numeros: ");
    scanf("%i%i",&x,&y);
    printf("\nsuma: %i resta: %i\n\n",suma(x,y,&z,&w));
    system("pause");

}
void suma(int a, int b, int *suma, int *resta)
{
    suma = a+b;
    resta = a-b;

}

¿Da como resultado primero la resta y despues la suma?
No tiene ningun sentido.

Gracias.

2 respuestas
gonya707

#6 No entiendo qué no tiene sentido. De todos modos no has puesto dos asteriscos en lugares clave para q esto funcione

1 respuesta
cabron

#7

¿Sabes lo que estás liando a una persona que tiene una duda tan básica dándole una solución con punteros?

#6

Te recomiendo que de momento pases de eso hasta que tengas un poco más conocimiento de lo básico.

1 respuesta
gonya707

Ups error mio,

void funcion(int num1, int num2, int* suma, int* resta ){

*suma = num1 + num2;
*resta = num1 - num2;

}

int main()
{
int num1, num2,s,r;
printf("Introduce dos numeros: ");
scanf("%i%i",&num1,&num2);
funcion(num1,num2,&s,&r);

printf("resultado %d %d",s,r);

ahora si

SiKoPaTa

#8
Tengo la necesidad del uso de punteros para poder regresar de una función más de un valor, pero no llego a entender muy bien el uso que hace el compañero de ellos, me parece que se puede hacer de forma mucho más sencilla.

Gracias.

Por cierto si teneis alguna documentación extensa sobre punteros en C lo agradecería muchisimo, ya que lo encontrado en internet es siempre lo mismo y no explica demasiado bien su funcionamiento.

gonya707

Si tienes que hacerlo con punteros, mas sencillo que mi forma... no creo.

Se crean 4 variables enteras y dos de ellas las inicias al valor que te dan por teclado:

int num1, num2,s,r;
printf("Introduce dos numeros: ");
scanf("%i%i",&num1,&num2);

Luego se le pasan los cuatro numeros a una función que se encarga de hacer las operaciones. El prototipo de la funcion tiene como parametros de entrada 2 números enteros (int) y dos punteros a numeros enteros (*int), estos ultimos son parámetrosa de entrada-salida. Para pasar el puntero de una variable se usa &.

funcion(num1,num2,&s,&r);

Dentro de la función tienes ahora 4 variables:

int num1,
int num2,
int* suma,
int* resta

Los dos ultimos son punteros y no es lo que quieres variar, quieres variar su contenido, asi que usas lo contrario que el &, el asterisco y cambias el contenido de esas direcciones de memoria.

*suma = num1 + num2;
*resta = num1 - num2;

Si tienes que hacerlo con punteros intuyo que comprendes lo que te estoy contando, si no, necesitaría profundizar un poco en los conceptos que voy soltando

1 respuesta
SiKoPaTa

#11 si si lo entiendo, muchisimas gracias por la aclaración.

11 días después
SiKoPaTa

Más vale tarde que nunca, el que necesite algo así aqui tiene un ejemplo claro:

#include <stdio.h>
#include <stdlib.h>

int sumaresta(int a,int b, int *suma, int *resta)
{
*suma = a + b;
*resta = a - b;
return 0;
}

int main()
{
    int a = 10, b=20;
    int sumar,restar;
    sumaresta(a,b,&sumar,&restar);
    printf("Suma %i resta %i",sumar,restar);
}

Usuarios habituales

  • SiKoPaTa
  • gonya707
  • cabron
  • ke2g