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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con un cliclo while[C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un cliclo while[C]  (Leído 1,561 veces)
barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Ayuda con un cliclo while[C]
« en: 15 Noviembre 2012, 19:39 pm »

HOLA!! Miren tengo un problema en esta función que estoy haciendo, el man, si entra a la función, la primer opción del menú lo ejecuta con normalidad, el problema esta en la 2 y la 3, que si las ejecuta en primea instancia, pero si la vuelvo a ejecutar, no me hace el calculo, me da el mismo resultado que me dio en el calculo anterior... eso pasa con la 2 y la 3, en que esta mal...
 
Ha y otra duda que tengo, como regreso desde una funcion al main, yo le puse return main(), mi IDE me marca error, aunque si lo hace, cual es la forma correcta de hacerlo??

PD. Se que muchos dirán que es código muy grande, para algo tan simple, pero así me lo piden.
PD2: No se como ponerlo así en color-sito y todo, por eso lo pongo de esta manera

aquí esta el código:
Código:
void whiile(void)
{
    int x,ba,po,cont=1,x1,q,qw,suma=0,pro,z,sumaa=0,qwe,cont2=1;
b:
printf("\t\t QUE EJEMPLO DESEA USAR:\n\n");
printf("\t*************************************************\n");
printf("\t*\t EJEMPLOS EN WHILE\t\t\t*\n");
printf("\t*\t\t\t\t\t\t*\n");
printf("\t*\t [1] POTENCIA DE UN NUMERO\t\t*\n");
printf("\t*\t\t\t\t\t\t*\n");
printf("\t*\t [2] LA MEDIA DE UNA LISTA DE X NUM \t*\n");
printf("\t*\t\t\t\t\t\t*\n");
printf("\t*\t [3] LA SUMA DE X NUMEROS\t\t*\n");
printf("\t*\t\t\t\t\t\t*\n");
printf("\t*\t [4] REGRESAR AL MEMU PRINCIPAL\t\t*\n");
printf("\t*\t\t\t\t\t\t*\n");
printf("\t*\t [5] SALIR\t\t\t\t*\n");
printf("\t*************************************************\n\n");
scanf("%d",&x);

if(x>5 || x<1){
printf("Es una opcion inconrrecta (Precione ENTER para volver a seleccionar)\n");
getchar();
getchar();
goto b;
}

if(x==1){
    system("clear");
printf("Este ejemplo funciona de esta manera:\n");
printf("\n");
printf("Para sacar la potencia es de esta manera 2^3=2x2x2\n");
printf("Basandonos en esta forma, el ciclo while, nos ayuda a mantener un limite\n");
printf("por lo cual al usuario solo se le pide la base y la potencia\n");
printf("\n");
printf("El ciclo while queda de esta manera:\n");
printf("\n");
printf("Se pide la base y la potencia\n");
printf("Se inicializa x=base\n");
printf("while(contador<potencia)\n");
printf("x=x*base\n");
printf("Mientras el ciclo sea verdadero, se seguira ejecutando\n");
printf("\n");
printf("VAMOS AL CALCULO(precione ENTER)\n");
getchar();
getchar();
system("clear");

    printf("Dame la base y la potencia a calcular\n");
scanf("%d %d", &ba, &po);
system("clear");
x1=ba;
while (cont<po)
{
x1=x1*ba;
cont++;
}
printf("El resultado es: %d\n",x1);
printf("\n");
printf("Regresar al menu while (precione ENTER)\n");
getchar();
getchar();
goto b;
}

if (x==2){
    system("clear");
printf("Este ejemplo funciona de esta manera:\n");
printf("\n");
printf("Para sacar la media de x numeros primero se suman los numeros y se dividen entre el total de nuemeros\n");
printf("Basandonos en esta forma, el ciclo while, se repetira hasta que se llege al tope\n");
printf("El usuario solo tendra que incertar cuantos numeros a calcular y los numeros\n");
printf("\n");
printf("El ciclo while queda de esta manera:\n");
printf("\n");
printf("Se piden cuantos numeros seran y  lo numeros\n");
printf("Se inicializa: contador=1\n");
printf("while(contador<=total_de_numeros)\n");
printf("se piden los numeros y se suman, despues se dividen entre el total de numeros\n");
printf("El contador se va incrementado de esta manera: contador++\n");
printf("Mientras el ciclo sea verdadero, se seguira ejecutando\n");
printf("\n");
printf("VAMOS AL CALCULO(precione ENTER)\n");
getchar();
getchar();
system("clear");
while(getchar() != '\n');
printf("Cuantos numeros desea calcular?\n");
scanf("%d",&q);
system("clear");
while(cont<=q)
{
printf("Escriba el primer numero: \n");
scanf("%d",&qw);
suma+=qw;
pro=suma/q;
cont++;
}
system("clear");
printf("La media de los numeros es: %d\n",pro);
printf("\n");
printf("Regresar al menu while (precione ENTER)\n");
getchar();
getchar();
goto b;
}

    if(x==3){
    system("clear");
printf("Este ejemplo funciona de esta manera:\n");
printf("\n");
printf("Para hacer la suma de x numeros, se emplea un metodo como el anterior\n");
printf("Tomamos la cantidad de numeros y ejecutamos nuestro ciclo de control\n");
printf("El usuario solo tendra que incertar cuantos numeros a calcular y los numeros\n");
printf("\n");
printf("El ciclo while queda de esta manera:\n");
printf("\n");
printf("Se piden cuantos numeros se van a sumar\n");
printf("Se inicializa: contador=1\n");
printf("while(contador<=total_de_numeros)\n");
printf("se piden los numeros y se suman\n");
printf("El contador se va incrementado de esta manera: contador++\n");
printf("Mientras el ciclo sea verdadero, se seguira ejecutando\n");
printf("\n");
printf("VAMOS AL CALCULO(precione ENTER)\n");
getchar();
getchar();
system("clear");
    while(getchar() != '\n');
printf("Cuantos numeros desea sumar?\n");
scanf("%d",&z);
system("clear");
while(cont2<=z)
{
printf("Escriba el primer numero: \n");
scanf("%d",&qwe);
sumaa+=qwe;
cont2++;
}
system("clear");
printf("La suma de los numeros es: %d\n",sumaa);
printf("\n");
printf("Regresar al menu while (precione ENTER)\n");
getchar();
getchar();
goto b;
    }

    if(x==4)
    return main();  //con esta opccion quiero regresar al menu pero me marca error aunque si lo hace

    if(x==5)
    exit(0);
}

GRACIAS POR PASAR...!!


En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con un cliclo while[C]
« Respuesta #1 en: 16 Noviembre 2012, 04:16 am »

Ha y otra duda que tengo, como regreso desde una funcion al main
Mediante una sentencia "return;" si el tipo de retorno de la función es "void", en cualquier otro caso debe ser "return N;" donde "N" es un valor del tipo apropiado.

yo le puse return main(), mi IDE me marca error, aunque si lo hace, cual es la forma correcta de hacerlo??
No. Debes utilizar:
Código
  1. return;
Así la función finaliza y el control retorna a quien llamo a la función.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Ayuda con un cliclo while[C]
« Respuesta #2 en: 18 Noviembre 2012, 14:18 pm »

Hola rir3760 gracias por contestar, aunque la verdad aun no se que pasa con el while, por que a la hora de hacer otro calculo me da el resultado del calculo anterior.... gracias por contestar..!!!
En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
Perrito08

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con un cliclo while[C]
« Respuesta #3 en: 18 Noviembre 2012, 16:21 pm »

Ay ay... ¿Quién te pide que hagas ese código tan largo y enrevesado?
Código
  1. #include <stdio.h>
  2.  
  3. float potencia ()
  4. { float a, c; int b;
  5. printf ("Base: "); scanf ("%f", &a); printf ("Exponente: "); scanf ("%d", &b);
  6. if (b>0) { c=a; while (b>1) {c*=a; b--;} return c; }
  7. if (b<0) { b=-b; c=a; while (b>1) {c*=a; b--;} return 1/c; }
  8. if (b==0) return 1;
  9. }
  10.  
  11. float media ()
  12. { int num; printf ("Cuantos numeros? "); scanf ("%d", &num); float a=0, c; int b;
  13. for (b=0; b<num; b++) { printf ("Numero %d: ", b+1); scanf ("%f", &c); a+=c; }
  14. return a/num;
  15. }
  16.  
  17. float suma ()
  18. { int num; printf ("Cuantos numeros? "); scanf ("%d", &num); float a=0, c; int b;
  19. for (b=0; b<num; b++) { printf ("Numero %d: ", b+1); scanf ("%f", &c); a+=c; }
  20. return a;
  21. }
  22.  
  23. int main () { int opt; printf ("EJEMPLO CON WHILE\n 1. Potencia de un numero\n 2. Media de X numeros\n 3. Suma de X numeros\n 4. Salir\n Opcion: "); scanf ("%d", &opt);
  24. switch (opt)
  25. { case 1: printf ("Resultado: %f\n", potencia ()); break;
  26. case 2: printf ("Resultado: %f\n", media ()); break;
  27. case 3: printf ("Resultado: %f\n", suma ()); break;
  28. case 4: break;
  29. default: return -1;
  30. }
  31. return 0;
  32. }
  33.  
En línea

barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Ayuda con un cliclo while[C]
« Respuesta #4 en: 19 Noviembre 2012, 21:07 pm »

HOLA Perrito08

Gracias por responder...!! muy buen codigo
En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines