elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:52  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Presentarme y primera peticion de ayuda!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Presentarme y primera peticion de ayuda!!!  (Leído 344 veces)
raulinchi

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Presentarme y primera peticion de ayuda!!!
« en: 22 Octubre 2011, 11:56 »

Hola, soy RAul, estoy empezando con C y me han planteado un problema que no me sale, adjunto codigo:

void main(){

int a,b,s,r,suma,resta;

printf("Dame dos enteros:\n");
scanf("%d %d", &a,&b);

s = suma_resta(a,b,&r);
printf("La suma es %d y la resta es %d:\n",suma,resta);

}

int suma_resta(int x,int y,int *pz){

int suma,resta;
suma = x + y;
resta = x - y;
*pz=resta;
return suma;
}



Utilizando una funcion para realizar la suma y resta, devolviendo la suma y guardando en u puntero la resta para devolverlo

¿Por que no me hace bien la operacion?


Gracias y perdonad por la torpeza.

Saludos.


En línea
Tzhed\ Kyperf/
Wiki

Desconectado Desconectado

Mensajes: 802


Tzhed > /dev/sda


Ver Perfil WWW
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #1 en: 22 Octubre 2011, 12:39 »

¿El código es tuyo?

Lo digo x cosas como esta:

Código:
printf("La suma es %d y la resta es %d:\n",suma,resta);

suma y resta no valen nada así que no entiendo que esperas que se imprima.

Código
#include <stdio.h>
 
main() {
   int a=0,b=0,s=0,r=0,suma=0,resta=0;
 
   printf("Dame dos enteros: ");
   scanf("%d%d", &a,&b);
 
   s = suma_resta(a,b,&r);
   printf("La suma es %d y la resta es %d.\n",s,r);
   return 0;
}
 
int suma_resta(int x,int y,int *pz) {
   int suma,resta;
   suma = x + y;
   resta = x - y;
   *pz=resta;
   return suma;
}

Código:
Dame dos enteros: 8
7
La suma es 15 y la resta es 1.


En línea
raulinchi

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #2 en: 22 Octubre 2011, 13:12 »


Hola Tzhed y muchas gracias por contestar, en principio decirte que si, el codigo es mil y entiendo que este mal, llevo dos dias intentando comprender algo de C y bueno, pues poco a poco espero aprender algo.

Ya entiendo lo que me explicas, gran error por mi parte, muchas gracias.
Lo que no entiendo es si es necesario inicializar las variables como lo haces a 0

Muchas gracias de nuevo.
En línea
Tzhed\ Kyperf/
Wiki

Desconectado Desconectado

Mensajes: 802


Tzhed > /dev/sda


Ver Perfil WWW
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #3 en: 22 Octubre 2011, 13:20 »

Siempre que sea posible es recomendable (se deben xD) inicializar las variables, esto es C no BASIC.

Saludos
En línea
raulinchi

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #4 en: 22 Octubre 2011, 13:42 »

Ok, gracias, asi lo hare..

Saludos.
En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #5 en: 22 Octubre 2011, 15:34 »

Lo que no entiendo es si es necesario inicializar las variables como lo haces a 0
Depende del caso. No es necesario si lo primero que haces con la variable es asignarle un valor.

En tu programa eso (la asignacion) no es seguro (debido a que depende de la entrada estandar) y por ello es mejor verificar el valor de retorno de la funcion scanf:
Código
#include <stdio.h>
#include <stdlib.h>
 
int suma_resta(int x, int y, int *pz);
 
int main(void)
{
   int a;
   int b;
   int s;
   int r;
 
   printf("Dame dos enteros: ");
   fflush(stdout);
   if (scanf("%d %d", &a,&b) != 2){
       puts("Entrada no valida!");
       return EXIT_FAILURE;
   }
 
   s = suma_resta(a, b, &r);
   printf("La suma es %d y la resta es %d\n", s, r);
 
   return EXIT_SUCCESS;
}
 
int suma_resta(int x, int y, int *pz)
{
   *pz = x - y;
 
   return x + y;
}

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
raulinchi

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #6 en: 22 Octubre 2011, 15:54 »

Entiendo, lo que haces es verificar que estas metiendo dos valores por teclado, sino te devolveria error, no?
En línea
raulinchi

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #7 en: 22 Octubre 2011, 15:59 »

Por cierto, a`rovecho para agradecer vuestra inmediata ayuda..

Muchas gracias.
En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Presentarme y primera peticion de ayuda!!!
« Respuesta #8 en: 22 Octubre 2011, 17:06 »

Entiendo, lo que haces es verificar que estas metiendo dos valores por teclado, sino te devolveria error, no?
Correcto. La función scanf retorna el numero de conversiones realizadas con exito y que en tu caso deben ser dos. Si no es asi lo indicamos mediante un mensaje y (a falta de algo mejor) terminamos de inmediato el programa.

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Petición de ayuda
Seguridad
pacone 7 439 Último mensaje 10 Septiembre 2006, 16:01
por pacone
_Hola a todos..solo queria..presentarme.._ « 1 2 3 4 5 »
Foro Libre
LA ESPIA 65 4,347 Último mensaje 1 Enero 2007, 16:26
por LA ESPIA
Necesito ayuda con un servidor y presentarme :D
Dudas Generales
1shot 6 556 Último mensaje 14 Junio 2007, 19:35
por 1shot
presentación y petición de ayuda
Programación Visual Basic
makinen00 0 249 Último mensaje 2 Marzo 2008, 13:13
por makinen00
saludos y peticion de ayuda
Windows
katarela 0 247 Último mensaje 29 Abril 2009, 21:10
por katarela
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines