[AYUDA]C++ / VALIDAR SOLO NUMEROS SEGUN MI TRABAJO

Iniciado por hctr12, 9 Julio 2014, 06:35 AM

0 Miembros y 1 Visitante están viendo este tema.

hctr12

Cita de: engel lex en  9 Julio 2014, 08:04 AM
sorry... copie y pegué el codigo... lo tienes como deberia ser?

while (M<'0' || M>'1');

sigue imprimiendome dos veces.

PD2: QUÉ FUNCION PUEDE REEMPLAZAR A GOTO ?

engel lex

no es "qué funcion puede reemplazar a goto XD es reemplazarlo con una función XD

es decir
Código (cpp) [Seleccionar]
#include<stdio.h>

using namespace std;

int menu() {
    int OP;
    char M; // VARIABLES DE MENU
    int N, A, SN, MN = 1; //VARIABLES DE LA FUNCION 1
    ///*******el resto de tu codigo***************/
    do {
        printf("\n\n\n\tRETORNAR AL MENU: 1 = SI o 0 = NO , PARA FINALIZAR: ");
        fflush(stdin);//limpiar buffer
        scanf("%c", &M); //
        if (M == '1') //
        {
            printf("\n\n");
            return 1;
        } else if (M == '0') {
            return 0;
        }
    } while (M < '0' || M > '1');
}

int main() {

    while (menu() == 1);
    return 0;
}

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

leosansan

Cita de: hctr12 en  9 Julio 2014, 08:07 AM
sigue imprimiendome dos veces.
.........................................

El problema de imprimir dos veces es indicativo que hay que realizar una limpieza del bufffer, cosa que puedes conseguir con:

Código (cpp) [Seleccionar]
while (getchar() !='\n' );

Cita de: hctr12 en  9 Julio 2014, 08:07 AM
.......................................
PD2: QUÉ FUNCION PUEDE REEMPLAZAR A GOTO ?


Como te comentó engel lex es usar una función que bien podría ser menu(),. Te indico como podría ser y además como vas a tener 4 casos, si no más, sería aconsejable el uso de un switch para  no liarla con un porrón de if eslse:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

void menu();

int main(){
  menu ();
  system("pause");
  return 0;
}

void menu(){
  char OP;
  char M; // VARIABLES DE MENU
  .............................................

  // INICIO DE LA FUNCION MENU
....................................................
    do
  {
.....................................................
    scanf("%c",&OP);
    while (getchar() !='\n' ); /* <== !!!!!!!!!!!!!!!!!!!!!!!!*/
      printf("\n\n");

  }
  while (OP<'1' || OP>'4');
 
........................................................

  switch (OP){ //CONDICION PARA QUE DIRECCIONE A LA PRIMERA FUNCION

    case '1':
      printf("\tIngrese la cantidad N de numeros impares ,al cuadrado, a sumar: ");
      scanf("%d",&N); // scanf LEE EL ENTERO QUE SE INGRESARA EN LA VARIABLE N
      while (getchar() !='\n' );
.............................................................................
   
        do
        {
            printf("\n\n\n\tRETORNAR AL MENU: 1 = SI o 0 = NO , PARA FINALIZAR: ");
            scanf("%c",&M); //
            if(M == '1') //
            {
            printf("\n\n");
            while (getchar() !='\n' );  /* <== !!!!!!!!!!!!!!!!!!!!!!!!*/
            menu(); /* <== !!!!!!!!!!!!!!!!!!!!!!!!*/
            }
            else if(M == '0')
...............................................................
        }while (M<'0' || M>'1');
  }
}


¡¡¡¡ Saluditos! ..... !!!!