Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: guillem_bm en 3 Abril 2012, 20:16 pm



Título: del programa A al C
Publicado por: guillem_bm en 3 Abril 2012, 20:16 pm
tengo el siguiente codigo
Código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
void fn_programa_a();
void fn_programa_b();
void fn_programa_c();
 
int main()
{
    int number;
        fn_programa_a();
        fn_programa_b();
        fn_programa_c();
 
        return 0;
}
 
void fn_programa_a()
{
              int ch;
   
   
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'a');
    printf("opcion A\n");
   
   
    }

void fn_programa_b()
{
          int ch;
   
   
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'b');
    printf("opcion B\n");
 
   
   

}

void fn_programa_c()
{
          int ch;
   
   
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'a');
    printf("opcion C\n");
   
   
   
system("pause");
}


Como podreis adivinar este codigo junta 3 apartados (A, B, C)
Y mi pregunta es... como puedo acer para que pase del apartado A al C sin necesidad que se tenga que tocar el apartado B???


Título: Re: del programa A al C
Publicado por: Beakman en 3 Abril 2012, 21:57 pm
Tal vez ... ?
Código
  1. fn_programa_a();
  2. // fn_programa_b();
  3. fn_programa_c();


Título: Re: del programa A al C
Publicado por: durasno en 4 Abril 2012, 06:01 am
xDDDD


Título: Re: del programa A al C
Publicado por: guillem_bm en 4 Abril 2012, 20:20 pm
se que podria poner lo que dices...
Código:
fn_programa_a();
fn_programa_c();

pero la idea es que me haga un salto de apartado, es decir, que despues del
Código:
fn_programa_a();
pueda elegir el:
Código:
fn_programa_c();

sin necesidad de que pase por el
Código:
fn_programa_b();
pero que al mismo tiempo que pueda elegir el
Código:
fn_programa_b();
despues del
Código:
fn_programa_a();


Título: Re: del programa A al C
Publicado por: Beakman en 4 Abril 2012, 21:24 pm
Bien. En ese caso tenés que hacer un menú. Se ingresa un número ( cin / scanf ) y de acuerdo a eso lo derivás a una función con switch o if else:

Código
  1. if( opcion == 1 ) {
  2.     // llamada a la primer función
  3. } else if ( opcion == 2 ) {
  4.     // llamada a la segunda función
  5. } else if ( opcion == 3 ) {
  6.     // llamada a la tercer función
  7. } else {
  8.    // ninguna opción elegida
  9. }
  10.  


Título: Re: del programa A al C
Publicado por: skapunky en 4 Abril 2012, 21:37 pm
Puedes usar una estructura condicional con una variable que controle si quieres saltartelo o quieres entrar.

Código
  1. void fn_programa_a();
  2. if (variable == 1){
  3. void fn_programa_b();
  4. }
  5. void fn_programa_c();

Si variable equivale 1 lo ejecutará, si equivale un valor diferente se lo saltará. Otra opción es utilizar "goto" aunque bueno...mas facil es no llamar a la función.

Lo mas lógico es controlar la ejecución de la función mediante una variable.


Título: Re: del programa A al C
Publicado por: david_BS en 4 Abril 2012, 22:11 pm
cuando se trata de saber si es positivo o no, te conviene evaluar el estado booleano de la variable:

Código:
if ( variable ){// si es distinto de cero
}


sin necesidad del operador de asignación = , o el de comparación ==.
osea algunos se confunden con este operador y asignan a donde deben comparar.

si variable es por ejemplo un entero y puede tomar muchos valores como resultado, entonces vas a necesitar evaluar esa variable con un switch , que es una
evaluación mucho más rápida que usar muchos if + else if



Título: Re: del programa A al C
Publicado por: guillem_bm en 6 Abril 2012, 17:47 pm
muchisimas gracias...

he puesto el siguiente codigo:
Código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
void fn_programa_a();
void fn_programa_b();
void fn_programa_c();
 
int main()
{
    int number, opcion;
    if( opcion == 1 ) {
        fn_programa_a();
        if ( opcion == 2 ) {
        fn_programa_b();
        if ( opcion == 3){
        fn_programa_c();
        if (opcion == 4){
 
 
        return 0;
}
}
}
}
}
    // llamada a la primer función}
void fn_programa_a()
{
              int ch;
   
   
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'a');
    printf("opcion A\n");
   
    getch();
   
    }

void fn_programa_b()
{
          int ch;
   
   
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'b');
    printf("opcion B\n");
 
   
   
getch();
}

void fn_programa_c()
{
          int ch;
   
   
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'a');
    printf("opcion C\n");
   
    getch();
   

}
pero aora mi problema es que cuando lo coopilarlo, se me cierra en el instante...
por que me pasa eso???


Título: Re: del programa A al C
Publicado por: durasno en 6 Abril 2012, 19:08 pm
Como diria aristoteles, t responde a tu pregunta con otra pregunta(asi era :S)
¿en que momento le almacenas un valor a la variable opcion?


Título: Re: del programa A al C
Publicado por: Xandrete en 7 Abril 2012, 18:06 pm
muchisimas gracias...

he puesto el siguiente codigo:
Código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
void fn_programa_a();
void fn_programa_b();
void fn_programa_c();
 
int main()
{
    int number, opcion;
    if( opcion == 1 ) {
        fn_programa_a();
        if ( opcion == 2 ) {
        fn_programa_b();
        if ( opcion == 3){
        fn_programa_c();
        if (opcion == 4){
 
 
        return 0;
}
}
}
}
}
    // llamada a la primer función}
void fn_programa_a()
{
              int ch;
    
    
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'a');
    printf("opcion A\n");
    
    getch();
    
    }

void fn_programa_b()
{
          int ch;
    
    
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'b');
    printf("opcion B\n");
  
    
    
getch();
}

void fn_programa_c()
{
          int ch;
    
    
   do {
      ch = _getch();
   }while (ch != EOF && ch != 'a');
    printf("opcion C\n");
    
    getch();
    

}
pero aora mi problema es que cuando lo coopilarlo, se me cierra en el instante...
por que me pasa eso???

Ehmm... Fíjate en una cosa. ¿En qué momento lees un valor para opción? Exacto, no lo haces  ;). Por otro lado, estas anidando los if's. Sin embargo, estos son excluyentes, deberían ir así:

Código
  1. if (opcion == 1) {// haz lo que sea}
  2. else if (opcion == 2) {// haz lo que sea}
  3. //...

CrisQC, ¿por qué odias las dulces lunas? :-(


EDITO:
Como diria aristoteles, t responde a tu pregunta con otra pregunta(asi era :S)
¿en que momento le almacenas un valor a la variable opcion?

Perdona, durasno, no había visto que ya habías respondido tú   :silbar:


Título: Re: del programa A al C
Publicado por: david_BS en 7 Abril 2012, 19:43 pm
lo que pasa que cuando dicen dulces lunas es porque blackzero hizo un code mas optimizado que uno XD

ami ya me pasó
http://foro.elhacker.net/programacion_cc/atoi_itoa_personalizadas-t358459.0.html

XD


Título: Re: del programa A al C
Publicado por: Beakman en 7 Abril 2012, 20:13 pm
Jaja. Nada contra "Blackzero", no lo había visto a él.
Simplemente no me gustaba esa frase.
No vi tu código David, igual me pareció un poco extenso para lo que querías hacer.
Un saludo.


Título: Re: del programa A al C
Publicado por: Xandrete en 7 Abril 2012, 22:38 pm
Supuse que tenía que ver con Blackzero. ¡Podemos ponernos a criticarlo a muerte, just for fun  ;-)!