Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Sauw

#1
Ok gracias haré una función para ello 8D

#2
Eso lo hice precisamente por que mis amigos querían que se pudiera de golpe hacer sumas, restas, multiplicaciones y divisiones y que fuera simplemente escribiendo el signo...

Mi versión anterior era con funciones específicas  pero claro solo podías hacer un tipo de operación cada vez, si querías sumar solo podías sumar no podías mezclar operaciones diferentes.

Pero bueno, sí... yo quiero darles a todas las variables el valor de 0 cada vez que se inicia el menú

Quiero algo así como:


Todaslasvaribles=0;
#3
Quizás os acordaréis de mi de otro tema... bueno pues como tengo nuevas dudas y he cambiado por completo el sistema de mi calculadora (ahora será versión 2.0)  he decidido crear un nuevo tema.

Sí, estoy trabajando en una calculadora, a ver que os parece:


#include <stdlib.h>
#include <math.h>
#include <iostream>
using namespace std;

int operacion, opcion[2], i;
float resultado, operando[20];
char operador[20];

int main()
{ // Inicio
int menu[1];
menu[0]=0, menu[1]=1;
while (!menu[0])
     { // while menú principal
     system("cls");
     cout << " \n\bÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ CALCULADORA EUCLIDES ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n_______________________________[Version 2.0]____________________________________\n\n elige una opcion:\n\n  0: Operaciones basicas \n\n  1: Potencias y raices \n\n  2: Geometria \n\n  3: Ecuaciones\n\n  4: Salir \n\n ";
     cin>>opcion[0];
     switch(opcion[0])
          { // Switch menú
          case 0:
                i=1;    
                     while (menu[1]==1)
                     { // while operaciones basicas, para poder repetir con el valor obtenido
                     system("cls");
                     cout<<" \n Elija quantos numeros quiere operar\n\n   ";
                     cin >> opcion[1];
                     system("cls");
                     cout << "\n";       // Ésto es simplemente para la estética  
                     if(i==2) // para que si eliges continuar operando sobre el resultado te lo escriba directamente como operador "1"
                         {
                         cout << " " << resultado << "\n ";
                         cin >> operador[1];    
                         }    
                     for(i; i<=opcion[1]; i++)
                         {    
                         cout << " "; // Estética, un espacio
                         cin >> operando[i];  // Le das el primer número que quieres operar
                         if(i!=opcion[1]) // cuando i sea = a opcion no hará falta pedir signo
                              {                
                              cout << " ";       // estética                  
                              cin >> operador[i];        // pide signo i deberías escribir +,-,* o /
                              }                                                    
                         }
                     if(resultado==0)
                               { // ésto es para que solo se haga la primera vez que operas, si más tarde eliges la opcion "continuar operando sobre el resultado" éste se mantendrá
                               resultado=operando[1];  
                               }                      
                     for(i=1; i<=opcion[1]; i++)
                        { // hace los cálculos
                        switch (operador[i])  
                               {  // switch signo                    
                               case '+':
                               resultado+=operando[i+1];  
                               break;  
                               case '-':
                               resultado-=operando[i+1];
                               break;
                               case '*':
                               resultado*=operando[i+1];
                               break;
                               case '/':
                               resultado/=operando[i+1];
                               break;
                               }  // switch signo                            
                        }  // for calcular
                     system("cls");
                     cout <<"\n";  // estética otra vez
                     for(i=1; i<=opcion[1]; i++)
                        {
                        cout << "  " << operando[i]; // escribe las operaciones que ha hecho
                        if (i!=opcion[1]) // para que la última vez no escriba ningún sigo
                             {
                             cout << "  "<< operador[i];  
                             }
                        }
                     cout << "  =  " << resultado << "\n\n 0: Volver\n 1: Continuar calculando sobre este resultado\n\n  ";
                     cin >> opcion[1];
                     if(!opcion[1]) // vuelve al menú principal
                        {
                        menu[1]=2;
                        }  
                     else
                        {
                        i=2; // así cuando se haga el primer for no te pedirá el operador "1", pues será el resultado que has obtenido antes
                        }
                     } // while operaciones basicas
          break; // case 0, operaciones basicas                                        
          } // Switch menú
     } // while menú principal
} // inicio


Al menu principal no le hagais caso, solo funciona de momento las "operaciones básicas" (aunque todo lo demás lo hice en la versión anterior de la calculadora, solo que ahora estoy cambiando muchísimas cosas, ahora uso cout y cin en vez de printf i scanf etc. así que decidí reescribirlo)

Funciona así:

Te pide cuantos números quieres operar  y entonces escribes, por ejemplo si elegiste 3:

105 - 15 / 2 i así te funcionaría, aunque tienes que apretar intro cada vez que escribes algo obviamente (sino no tengo ni idea de como hacerlo, pero supongo que será dificilísimo para mi nivel jajajaja)

Pero si calculas varias veces sin cerrar la calculadora una vez vuelves a calcular hay errores y empiezan a salir cosas raras, no sé muy bien porque pero se sulocionaría seguramente si supiera como igualar todas las variables a 0 a ver, podría hacerlo una por una pero me parece que tiene que haber alguna forma más rápida de "resetearlas" todas y esa es mi primera y más importante pregunta.

También he decidido dejar de usar system("pause"); y lo reemplazaré por
getchar();

Pero no conozco por ahora ninguna alternativa a system("cls");
Existe alguna? Puedo seguir usándolo y no me causará problemas?

Y bueno aparte de eso echadle un vistazo a ver que tendría que cambiar o que no os convence...

Pero lo que más me interesa saber es lo de devolver a las variables el valor "0" sin hacerlo manualmente

De antemano, gracias.
#4
Programación C/C++ / Re: Empezando con C++...
6 Diciembre 2010, 21:15 PM
Gracias por la aclaración, apartir de ahora intentaré usar solo cout y cin.

Pero me queda la duda de antes, como devuelvo el valor de todas las variables a 0 sin tener que escribirlas una por una? Me gustaría algo así como...


While(x==1)
{
todaslasvariables=0
system("cls");
cout[y escribo el menu de mi calculadora y todo lo demás]
}

#5
Programación C/C++ / Re: Empezando con C++...
4 Diciembre 2010, 23:52 PM
Pues... viendo que cout y cin son algo más sencillos de usar creo que los usaré  partir de ahora, pero no voy a reformar mi calculadora de +300 lineas entera para eso xD Mientras funcione con print y scanf...

Bueno, tengo un gran problema ahora

Mi calculadora hace muchas cosas con no demasiadas variables, tiene un menu principal y varios submenus donde suma, resta, multiplica, divide, hace raices de cualquier indice y potencias de cualquier exponente, calcula ecuaciones de segundo grado con la formula, cosas de geometría como calcular areas o algunas operaciones de trigonometria... voy poniendo lo que vamos haciendo en el colegio.

Y bueno, con todo eso cada vez que se vuelve al menu las variables ya tienen asignados ciertos numeros a ellas y necesitaria que volvieran todas a cero cada vez que vuelve al menu (está con un while) no sé si me explico... podría hacerlo escribiendolas todas otra vez pero no hay una forma más rápida y fácil?

Gracias de nuevo
#6
Programación C/C++ / Re: Empezando con C++...
1 Diciembre 2010, 18:07 PM
Muchas gracias otra vez

Pues como dije uso "Dev-C++", y siempre he usado printf para mostrar cosas por pantalla y scanf para dar datos al programa, y mi pregunta es si debería usar cout en vez de printf o puedo ir tirando con printf y scanf.

Ya entendí lo de ejecutarlo por consola xD, pero tenerlo que hacer cada vez no me gusta, además que les mando los programas que hago a mis amigos y así y creo que no sabrían hacerlo (que, a ver, se lo puedo explicar pero para eso creo que lo dejo con el system("pause")

Y aquí se me plantea otra duda, me paso a "Codeblox" o sigo con Dev-C++? Me gusta la idea de no tener que usar pausas, pero quiero estar seguro antes de descarrgarlo (de que es mejor)

Por cierto he optimizado el codigo de la suma con "fors" ahora es simplemente esto:
Además, puedes decir que te sume cuantos numeros quieras! (antes solo podias sumar entre 2 y 5 numeros) Ahora estoy haciendo lo mismo con las funciones de resta, multiplicación y división

void suma(void)
{ // inicio suma
system("cls");
for(i=1;i<=opcion;i++)
{  // for suma
                    printf("\n Introduce el sumando numero  %d     " , i);
                    scanf("%f", &a[i]);
} // end for suma
system("cls");
printf("\n   %f", a[1]);
for(i=1;i<opcion;i++)
{ // for  mostrar suma
printf(" + %f", a[i+1]);
a[1]+=a[i+1];    
} // for  mostrar suma
printf(" = %f\n\n  ", a[1]);            
system("pause");
} // inicio suma
#7
Programación C/C++ / Re: Empezando con C++...
1 Diciembre 2010, 07:29 AM
Muchas gracias ya me miraré algun libro

Pero entonces si no uso system("pause"); tine que haber una alternativa para que no se cierre... lo uso o no?

Uso Dev-C++, pero por lo que habéis dicho los printf y scanf funcionan con C y los cout son exclusivos de C++, no?

Entonces cuál de los dos uso? Hasta ahora he usado printf pero he estado viendo muchos programas que usan cout con la librería esa <iostream> que siempre lleva el using namespace std; que tampoco sé para que sirve...

Y el return 0; tampoco me hace nada, igual también es para C

Saludos

#8
Programación C/C++ / Empezando con C++...
30 Noviembre 2010, 23:23 PM
Saludos! Este es mi primer mensaje

Pues bien, tengo 15 años y empecé a programar en un curso el verano pasado (nada serio, unicamente para aprender porque siempre me ha gustado el tema) y claro, ahora he estado haciendo algunos programas por mi cuenta... ya he encontrado buenas paginas para seguir adelante (la verdad es que es algo dificil aprender de internet para mí hahaha) entonces para mí estaría genial que me ayudarais con mis dudas ^^

He estado trabajando en una calculadora bastante completa...

Aquí la función de sumar, mi nivel es más o menos éste (no se hacer mucho más aparte de lo utilizado aquí xD) No pongo la calculadora completa obviamente porque es muy larga

Citarvoid suma(void)
{
system("cls");
for(i=2;i<=opcion;i++) // utilizo la variable "opcion" para que el usuario elige cuantos numeros quiere operar
{  // for
                    if(i==2)
                    {
                    printf("\n Introduce el primer sumando       ");
                    scanf("%f", &a[1]);
                    printf("\n Introduce el segundo sumando      ");
                    scanf("%f", &a[2]);
                    }
                    if(i==3)
                    {
                    printf("\n Introduce el tercer sumando       ");
                    scanf("%f", &a[3]);
                    }
                    if(i==4)
                    {
                    printf("\n Introduce el cuarto sumando       ");
                    scanf("%f", &a[4]);
                    }
                     if(i==5)
                    {
                    printf("\n Introduce el quinto sumando       ");
                    scanf("%f", &a[5]);
                    }            // end if i=5
} // end for
system("cls");
printf("\n %f", a[1]); // pongo éste aqui y no dentro del for para que no aparezca el signo de "+" detrás del primer número
for(i=1;i<opcion;i++)
{ // for para mostrar suma, para que aparezca así: num1 + num2 (+ los demás elegidos hasta 5)
printf(" + %f", a[i+1]);
a[1]=a[1]+a[i+1];    /* esto no estoy seguro de que esté bien, funciona pero no me acaba de gustar el "a[1]=a[1]" , en vez de poder decir que le sume a a[1] lo demás sin más... me gustaria algo que hiciera "a[1] + 2" y sumara al valor de a[1] 2 unidades no sé... */
}
printf(" = %f\n\n", a[1]);  // el resultado          
system("pause");
} // fin suma


He explicado con comentarios más o menos que hace cada cosa para haceros una idea... esa es una de mis dudas

Luego como os dije he estado intentando aprender por internet y he tenido problemas

#include <iostream>

using namespace std;

int main()
{
   cout << "Hello world!" << endl;
   return 0;
}


Así es... ¡el programa más sencillo! Curiosmaente es perfecto porque están ahí acumuladas muchas de las cosas que no entiendo... vayamos por partes

using namespace std; (que es esto?)

   cout << "Hello world!" << endl; (no es lo mismo usar un printf, que diferencia hay??)

return 0; (esto que hace, que vuelve a la linia 0? Lo he compilado y quitarlo/ponerlo no cambiaba nada!

y... ¿porque no hay un system("pause"); en muchos codigos que leo? En mi ordenador almenos un programa como el anterior si no hay un system("pause") no da tiempo para leerlo ni de lejos xD