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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Como llamar a una funcion dentro de otra funcion. Una ayuda urgentemente porfavo en: 13 Abril 2013, 22:56 pm
Hola, mi problema es el siguiente: Tengo que llamar a varias funciones dentro de otra funcion, pero cuando ejecuto el programa, me da número muy altos que no se corresponden con lo que deberia ser. Que no os engañe tanto codigo, solo necesito que mireis el case:8 y la ultima funcion, abajo del todo.

Aqui va el codigo:
Código:
#include <stdio.h>
#include <math.h>

void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3); /*Declaraciones de todas las funciones*/
void resta(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
int mod(int equis1, int equis2, int equis3);
int mod1(int jota1, int jota2, int jota3);
void escalar_por_vector(int jota1, int jota2, int jota3, int escalar1);
int producto_escalar(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
void producto_vectorial(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
void listar_componentes(int equis1, int equis2, int equis3);
void listar_componentes1(int jota1, int jota2, int jota3);
void demostracion();

int main(){ /*Funcion principal "main"*/
int efe,equis1,equis2,equis3,jota1,jota2,jota3,zeta1,zeta2,zeta3,escalar1,resultado;
float modulo, modulo1;
printf("====================================\n");
  printf("Indtroduzca la operación a realizar:\n");
printf("1) Suma de vectores\n");
printf("2) Resta de vectores\n");
printf("3) Módulo de un vector\n");
printf("4) Producto de un escalar por un vector\n");
printf("5) Producto escalar de dos vectores\n");
printf("6) Producto vectorial de dos vectores\n");
printf("7) Listar componentes\n");
printf("8) Demostración\n");
printf("====================================\n");
scanf("%d",&efe);

if (efe>8 && efe<1)
printf("ERROR\n\n");
else{
switch (efe){
case 1:
printf("Introduzca 3 valores para el vector 1:\n"); /*Suma de vectores*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
suma(equis1,equis2,equis3,jota1,jota2,jota3);
break;

case 2:
printf("Introduzca 3 valores para el vector 1:\n"); /*Resta de vectores*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
resta(equis1,equis2,equis3,jota1,jota2,jota3);
break;

case 3:
printf("Introduce las coordenadas de un vector:\n"); /*Modulo de un vector*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
modulo = mod(equis1,equis2,equis3);
printf("El módulo será: %f\n", modulo);
break;

case 4:
printf("Introduce las coordenadas de un vector:\n"); /*Producto de un escalar con un vector*/
scanf("%d %d %d", &jota1, &jota2, &jota3);
printf("Introduce un escalar: \n");
scanf("%d", &escalar1);
escalar_por_vector(jota1, jota2, jota3, escalar1);
break;

case 5:
printf("Introduzca 3 valores para el vector 1:\n"); /*Producto escalar de dos vectores*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3);
printf("El producto escalar será: %d \n", resultado);
break;

case 6:
printf("Introduzca 3 valores para el vector 1:\n"); /*Producto vectorial*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3);
break;

case 7:
printf("Introduzca 3 valores para el vector:\n"); /*Listar componentes*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
listar_componentes(equis1,equis2,equis3);
break;

           case 8: /*Demostrar*/
equis1=1;
equis2=2;
equis3=3;
jota1=4;
jota2=5;
jota3=6;
escalar1=2;
demostracion();
break;[/color]
}

}


return (0);
}



void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ /*Funcion suma*/
int zeta1,zeta2,zeta3;
zeta1=equis1+jota1;
zeta2=equis2+jota2;
zeta3=equis3+jota3;
printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3);
}




void resta(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ /*Funcion resta*/
int zeta1,zeta2,zeta3;
zeta1=equis1-jota1;
zeta2=equis2-jota2;
zeta3=equis3-jota3;
printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3);
}


int mod(int equis1, int equis2, int equis3){ /*Funcion modulo*/
float modulo;
modulo = sqrt((equis1*equis1)+(equis2*equis2)+(equis3*equis3));
return(modulo);
}

int mod1(int jota1, int jota2, int jota3){
float modulo1;
modulo1 = sqrt((jota1*jota1)+(jota2*jota2)+(jota3*jota3));
return(modulo1);
}


void escalar_por_vector(int equis1, int equis2, int equis3, int escalar1){ /*Funcion escalar por vector*/
int zeta1,zeta2,zeta3;
zeta1=equis1*escalar1;
zeta2=equis2*escalar1;
zeta3=equis3*escalar1;
printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3);
}

int producto_escalar(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ /*Funcion producto escalar de dos vectores*/
int resultado;
resultado = ((equis1*jota1)+(equis2*jota2)+(equis3*jota3));
return (resultado);
}


void producto_vectorial(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ /*Funcion producto vectorial*/
int zeta1, zeta2, zeta3;
zeta1=((equis2*jota3)-(equis3*jota2));
zeta2=((equis1*jota3)-(equis3*jota1));
zeta3=((equis1*jota2)-(equis2*jota1));
printf("(%d, %d, %d)\n",zeta1, zeta2, zeta3);
}


void listar_componentes(int equis1, int equis2, int equis3){ /*Funcion listar componentes*/
printf("(%d, %d, %d)\n", equis1, equis2, equis3);
}

void listar_componentes1(int jota1, int jota2, int jota3){
printf("(%d, %d, %d)\n", jota1, jota2, jota3);
}

void demostracion(){

int equis1, equis2, equis3, jota1, jota2, jota3, modulo, modulo1, resultado,escalar1; /*Funcion demostracion*/

suma(equis1,equis2,equis3,jota1,jota2,jota3);

resta(equis1,equis2,equis3,jota1,jota2,jota3);

modulo = mod(equis1,equis2,equis3);
printf("El módulo será: %f\n", modulo);
modulo1 = mod1(jota1,jota2,jota3);
printf("El módulo será: %f\n", modulo1);
escalar_por_vector(jota1, jota2, jota3, escalar1);

resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3);
printf("%d \n", resultado);
producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3);

listar_componentes(equis1,equis2,equis3);

listar_componentes1(jota1,jota2,jota3);

}




Los vectores con los que debería trabajar son, (1,2,3) y el (4,5,6), y un escalar 2. Los resultados que me da el programa son:
(252393256, 1027456316, 1031621970)                                                         "Suma"
(252393256, -1027390782, -1023225128)                                                         "Resta"
El módulo será: 0.000000
El módulo será: 0.000000
(0, -2105009848, -2105009848)                                                                       "Escalar por vector"
-1971644220                                                                                                      "Prod, escalar"
(944204994, -296178552, -296178552)                                                               "Prod Vectorial"
(252393256, 32767, 4198421)                                                                              "Listar
(0, 1027423549, 1027423549)                                                                                 componentes"




Ayuda por favor, no tengo ni idea de como se hace esto para que haga bien las operaciones.

¿Están bien llamadas las funciones en la ultima funcion? Si es asi, ¿será porque defino mal las variables en el case:8?
2  Programación / Programación C/C++ / Re: Que error cometo aqui???????? Ayudaaaaa! en: 13 Abril 2013, 16:29 pm
Muchisimas gracias  a todos, por fin he terminado el trabajo.   ;-) ;-) ;-) ;-) ;-)
Y por cierto, perdonad esos fallos, porque la verdad es que me dan vergüenza, pero no era capaz a verlos.
Un saludo a todos.
3  Programación / Programación C/C++ / Que error cometo aqui???????? Ayudaaaaa! en: 13 Abril 2013, 12:38 pm

Hola amigos, vereis, al compilar me sale un error en la linea 93, que es donde llamo a la funcion demostracion, lo he señalado con 3 fantasmitas blancos para que no haya que buscar.
El error que me da es el siguiente:   " error: expected expression before ‘void’"
¿Que error cometo? ¿Me falta poner algo o quitar?


Luego me da dos avisos, pero con esto creo que el programa funciona igual, no obstante si me podeis echar una mano, aqui están los avisos:

En la función ‘main’:
prac.c:49:3: aviso: formato ‘%d’ espera un argumento de tipo ‘int *’, pero el argumento 3 es de tipo ‘int’ [-Wformat]
prac.c:51:3: aviso: formato ‘%f’ espera un argumento de tipo ‘double’, pero el argumento 2 es de tipo ‘int (*)(int,  int,  int)’ [-Wformat]





Código:
#include <stdio.h>
#include <math.h>

void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
void resta(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
int mod(int equis1, int equis2, int equis3);
int mod1(int jota1, int jota2, int jota3);
void escalar_por_vector(int jota1, int jota2, int jota3, int escalar1);
int producto_escalar(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
void producto_vectorial(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3);
void listar_componentes(int equis1, int equis2, int equis3);
void listar_componentes1(int jota1, int jota2, int jota3);
void demostracion();

int main(){
int efe,equis1,equis2,equis3,jota1,jota2,jota3,zeta1,zeta2,zeta3,escalar1,resultado;
float modulo, modulo1;
  printf("Indtroduzca la operación a realizar:\n");
printf("1) Suma de vectores\n");
printf("2) Resta de vectores\n");
printf("3) Módulo de un vector\n");
printf("4) Producto de un escalar por un vector\n");
printf("5) Producto escalar por dos vectores\n");
printf("6) Producto vectorial de dos vectores\n");
printf("7) Listar componentes\n");
printf("8) Demostración\n");
scanf("%d",&efe);


switch (efe){
case 1:
printf("Introduzca 3 valores para el vector 1:\n");
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
suma(equis1,equis2,equis3,jota1,jota2,jota3);
break;

case 2:
printf("Introduzca 3 valores para el vector 1:\n");
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
resta(equis1,equis2,equis3,jota1,jota2,jota3);
break;

case 3:
printf("Introduce las coordenadas de un vector:\n");
scanf("%d %d %d", &equis1, equis2, &equis3);
modulo = mod(equis1,equis2,equis3);
printf("El módulo será: %f\n", mod);
break;

case 4:
printf("Introduce las coordenadas de un vector:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
printf("Introduce un escalar: \n");
scanf("%d", &escalar1);
escalar_por_vector(jota1, jota2, jota3, escalar1);
break;

case 5:
printf("Introduzca 3 valores para el vector 1:\n");
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3);
printf("%d \n", resultado);
break;

case 6:
printf("Introduzca 3 valores para el vector 1:\n");
scanf("%d %d %d", &equis1, &equis2, &equis3);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d %d %d", &jota1, &jota2, &jota3);
producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3);
break;

case 7:
printf("Introduzca 3 valores para el vector:\n");
scanf("%d %d %d", &equis1, &equis2, &equis3);
listar_componentes(equis1,equis2,equis3);
break;

case 8:
equis1=1;
equis2=2;
equis3=3;
jota1=4;
jota2=5;
jota3=6;
escalar1=2;
demostracion(void);       >:( >:( >:(
break;


}
return 0;
}



void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){
int zeta1,zeta2,zeta3;
zeta1=equis1+jota1;
zeta2=equis2+jota2;
zeta3=equis3+jota3;
printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3);
}




void resta(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){
int zeta1,zeta2,zeta3;
zeta1=equis1-jota1;
zeta2=equis2-jota2;
zeta3=equis3-jota3;
printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3);
}


int mod(int equis1, int equis2, int equis3){
float modulo;
modulo = sqrt((equis1*equis1)+(equis2*equis2)+(equis3*equis3));
return(modulo);
}

int mod1(int jota1, int jota2, int jota3){
float modulo1;
modulo1 = sqrt((jota1*jota1)+(jota2*jota2)+(jota3*jota3));
return(modulo1);
}


void escalar_por_vector(int equis1, int equis2, int equis3, int escalar1){
int zeta1,zeta2,zeta3;
zeta1=equis1*escalar1;
zeta2=equis2*escalar1;
zeta3=equis3*escalar1;
printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3);
}

int producto_escalar(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){
int resultado;
resultado = ((equis1*jota1)+(equis2*jota2)+(equis3*jota3));
return (resultado);
}


void producto_vectorial(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){
int zeta1, zeta2, zeta3;
zeta1=((equis2*jota3)-(equis3*jota2));
zeta2=((equis1*jota3)-(equis3*jota1));
zeta3=((equis1*jota2)-(equis2*jota1));
printf("%d %d %d\n",zeta1, zeta2, zeta3);
}


void listar_componentes(int equis1, int equis2, int equis3){
printf("%d %d %d\n", equis1, equis2, equis3);
}

void listar_componentes1(int jota1, int jota2, int jota3){
printf("%d %d %d\n", jota1, jota2, jota3);
}

void demostracion(void){
int equis1, equis2, equis3, jota1, jota2, jota3, modulo, modulo1, resultado,escalar1;

suma(equis1,equis2,equis3,jota1,jota2,jota3);

resta(equis1,equis2,equis3,jota1,jota2,jota3);

modulo = mod(equis1,equis2,equis3);

modulo1 = mod1(jota1,jota2,jota3);

escalar_por_vector(jota1, jota2, jota3, escalar1);

resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3);

producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3);

listar_componentes(equis1,equis2,equis3);

listar_componentes1(equis1,equis2,equis3);

}








Gracias a todos los que me ayudeis.
4  Programación / Programación C/C++ / Duda al hacer un programa. en: 5 Abril 2013, 11:56 am
Hola a todos, soy nuevo aqui, y necesito ayuda con una cosa de C. El caso es que el ejercicio consiste en hacer un programa de suma y resta de vectores tridimensionales, y ya casi lo tengo (o eso creo), pero el caso es que cuando ejecuto y meto los valores y hace la suma me da un número de la hostia, y además creo que me debería dar 3 números, cada uno por cada componente del vector.

Pego código:

#include <stdio.h>
#include <math.h>

void suma(int vect1[3], int vect2[3], int vect3[3]);
//int resta(int h, int i, int j, int k, int l, int m);


int main(){
   int a,i;
   int vect1[3], vect2[3], vect3[3];
   printf("Indtroduzca la operación a realizar:\n");
   printf("1) Suma de vectores\n");
   printf("2) Resta de vectores\n");
   scanf("%d",&a);
   
   if (a=1){
      for(i=0;i<3;i++){
      printf("Introduzca 3 valores para el vector 1:\n");
      scanf("%d", &vect1);
      printf("Introduzca 3 valores para el vector 2:\n");
      scanf("%d", &vect2);
      }
      void suma(vect1, vect2, vect3);   
      printf("El resultado de la suma es: %d\n", vect3);
      }
}



void suma(int vect1[3], int vect2[3], int vect3[3]){   
   vect3[0]=vect1[0]+vect2[0];
   vect3[1]=vect1[1]+vect2[1];
   vect3[2]=vect1[2]+vect2[2];
}




¿Qué hago mal?

Gracias a todos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines