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???
Tal vez ... ?
fn_programa_a();
// fn_programa_b();
fn_programa_c();
xDDDD
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();
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:
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
}
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.
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
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???
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?
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í:
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:
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
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.
Supuse que tenía que ver con Blackzero. ¡Podemos ponernos a criticarlo a muerte, just for fun ;-)!