del programa A al C

Iniciado por guillem_bm, 3 Abril 2012, 20:16 PM

0 Miembros y 2 Visitantes están viendo este tema.

guillem_bm

tengo el siguiente codigo
#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???

Beakman

Tal vez ... ?
Código (cpp) [Seleccionar]
fn_programa_a();
// fn_programa_b();
fn_programa_c();

durasno

Ahorrate una pregunta, lee el man

guillem_bm

se que podria poner lo que dices...
fn_programa_a();
fn_programa_c();


pero la idea es que me haga un salto de apartado, es decir, que despues del
fn_programa_a();
pueda elegir el:
fn_programa_c();
sin necesidad de que pase por el
fn_programa_b();
pero que al mismo tiempo que pueda elegir el
fn_programa_b();
despues del
fn_programa_a();

Beakman

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 (cpp) [Seleccionar]

if( opcion == 1 ) {
    // llamada a la primer función
} else if ( opcion == 2 ) {
    // llamada a la segunda función
} else if ( opcion == 3 ) {
    // llamada a la tercer función
} else {
   // ninguna opción elegida
}

skapunky

#5
Puedes usar una estructura condicional con una variable que controle si quieres saltartelo o quieres entrar.

void fn_programa_a();
if (variable == 1){
void fn_programa_b();
}
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.
Killtrojan Syslog v1.44: ENTRAR

david_BS

cuando se trata de saber si es positivo o no, te conviene evaluar el estado booleano de la variable:

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


guillem_bm

muchisimas gracias...

he puesto el siguiente codigo:
#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???

durasno

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?
Ahorrate una pregunta, lee el man

Xandrete

#9
Cita de: guillem_bm en  6 Abril 2012, 17:47 PM
muchisimas gracias...

he puesto el siguiente codigo:
#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 (cpp) [Seleccionar]
if (opcion == 1) {// haz lo que sea}
else if (opcion == 2) {// haz lo que sea}
//...


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


EDITO:
Cita de: 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?

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