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 - leosansan

#811
Cita de: superkorlas en 17 Mayo 2013, 09:09 AM
muchas gracias ya funciona perfectamente!!!!!  ;-)

Lo reedite buscando la mejora visual. Espero hayas pillado "la última edición" y me alegra que te haya servido.

Saluditos!. ....
#812
Cita de: superkorlas en 17 Mayo 2013, 00:42 AM
Bueno y para evitar el goto Bucle (que incluso en el manual que estoy leyendo me dice que lo evite) como lo sustituiria  :huh: . Y en cuanto a lo de tantos endl es por que quiero que se limpie la pantalla, me podrias explicar como usaria lo que has puesto del cls ???
Muchas gracias por la ayuda :)

Mejor lo ves:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
#include <cstdlib>
#define N      4

using namespace std;
struct Fulanito {
      char Nombre[40];
      int Telefono;
      } Fulanito[N];
int main()
{

   int i,z,buscaTel=0,indice;
   char buscaNombre[40]={0};
   for (i = 0; i < N; i++)
       {
           cout << " Introduce el nombre de la persona " << i+1 <<" de "<< N <<" :";
           cin >> Fulanito[i].Nombre; cout << endl;
           cout << " Introduce el numero telefonico de " << Fulanito[i].Nombre<< ": ";
           cin >> Fulanito[i].Telefono;
           cout << endl << endl;
       }

   system("cls");

   while(1) {
       indice=0;
       cout << "   ******************** MENU *********************      " << endl << endl << endl << endl << endl;
       cout << "           1) Buscar por nombre                 " << endl << endl;
       cout << "           2) Buscar por numero                 " << endl << endl;
       cout << "           3) Salir                             " << endl << endl;

       cout << " Que desea realizar: "; cin >> z;
       system("cls");
       if (z == 3) return 1;

       else if (z == 1)
     {
           cout << " Introduce el nombre de la persona que desea buscar: ";
           cin >> buscaNombre; cout << endl << endl;

           for (i = 0; i < N ;i++)
           {
               if (strcmp(Fulanito[i].Nombre, buscaNombre)==0){
                   cout <<"    Telefono de "<< Fulanito[i].Nombre <<": " << Fulanito[i].Telefono;
                   cout << endl << endl << endl;
                   indice++;
               }
           }
           if (indice==0)
               cout << "No existe en la base esa persona"<< endl<< endl<< endl;
     }
     else if (z == 2)
     {
           cout << " Introduce el numero de la persona que desea buscar: ";
           cin >> buscaTel; cout << endl << endl;
           for (i = 0; i<N ;i++)
           {
               if ((buscaTel==Fulanito[i].Telefono)){
                   cout << " Nombre: " << Fulanito[i].Nombre;
                   cout << endl << endl << endl;
                   indice++;
               }
           }
           if (indice==0)
               cout << "No existe en la base ese numero"<< endl<< endl<< endl;
     }
     else
       cout<<"Opcion equivocada"<<endl<<endl<< endl;
   }
 return 0;
}


Saluditos!. ....
#813
sorry equivoqué el post
#814
Cita de: Cönnectome en 16 Mayo 2013, 22:01 PM
................................................
Luego, para evitarte muchos cout << endl;, puedes hacer una funcion simple como la siguiente:


void MuchosCout(int numerodecouts)
{
   for(int i=0;i<numerodecouts;++i)
      cout << endl;
}



Muy acertada la función. Aunque creo que lo que pretende es "pasar" líneas hasta que no se vea lo anterior y para eso yo le aconsejaría usar system("cls") para limpiar la pantalla, suponiendo esté en Windows y, eso sí, incluir la librería <cstdlib> para su uso.



Cita de: Cönnectome en 16 Mayo 2013, 22:01 PM
Te compila?, veo que tienes varios errores, como:
Código:
cout << " Introduce el nombre de la persona: ";cin >> Fulanito.Nombre; cout << endl;

Cuando intentas acceder a un array, tienes que decirle a QUE POSICION QUIERES ACCEDER., es decir, Fulanito.Nombre[posicion].

Totalmente de acuerdo, pero es Fulanito[posicion].Nombre y aún en ese supuesto sí los tiene puestos. El problema radica en que al pegar el código sin usar las etiquetas GeSHi de C++, por favor usarlas y pegar el código en medio de esas etiquetas, pues a lo que iba, al no usar las susodichas etiquetas el código le sale en cursiva y se "come" los índices. Si editas su mensaje veras que si están puestos.

Saluditos!. .....  
#815
Cita de: Caster en 16 Mayo 2013, 22:19 PM
Buff...arrays, aun no he tocado ese tema en el libro que estoy leyendo, de hecho, terminé con las funciones y ese es el que me toca ahora, así que lo leeré y después continuo con el problema, muchas gracias, cuando lo retome miraré otra vez tus consejos.

Pues ánimos y a por el tema de arrays, es fundamental porque te abrirá las puertas a muchos ejercicios.

Y casi seguro que después tendras el tema de punteros. Desde ya te aconsejo tomarlo con calma y ganas ya que es "la otra gran puerta".

Saluditos .....,nuevamente".......
#816
Antes que nada un fuerte saludo otra vez y gracias por la alegría que me das al verte  por aquí.

Para que te hagas una idea de lo que te proponen, ya que no vas a usar ficheros pues aún no has llegado -tranqui!, todo es cuestión de tiempo- puedes imaginarte un capítulo como un array compuesto de diversas palabras. Por ejemplo suponiendo que ninguna palabra exceda de 20 caracteres:


Código (cpp) [Seleccionar]

char capitulo1[15][20]={"pincel","pipa","Cine","Teatro", ....-y así hasta quince....}
char capi1[15][20]={0};


Y lo que podrías hacer es recorrer el array capitulo1 y guardar en capi1 las palabras abreviadas. Ahí veo una pequeña laguna en cuanto al número de letras a tomar como abreviaturas de las originales. Por hacerlo de forma esquemática yo te propondría que tomaras la longitud de la palabra, que la obtienes con strlen, menos tres de forma que pincel sería pin, como ejemplo.

Se trataría en esencia de ir recorriendo con un for el array
Código (cpp) [Seleccionar]
capitulo1[i]
y en otro for interno al anterior de 0 a strlen-3 guardas
los caracteres. Vamos algo así:

Código (cpp) [Seleccionar]

for (i=0;i<15;i++)
   for (j=0;j<strlen(capitulo1[i])-3;j++)
       {
             capi1[i] [j]=capitulo1[i] [j];
       }


Se podría hacer con más capítulos pero en el formato array en lugar de fichero originaría arrays tridimensionales.

Se me ocurre que para dos capítulos fuera:


Código (cpp) [Seleccionar]

char capituloi[2][15][20]={{"pincel","pipa","Cine","Teatro", ....-y así hasta quince....},{"papel","tijera", ....-y así hasta quince....}}
char capi[2][15][20]={0};


Demasiado fuerte para empezar. Te aconsejaría el primero con un sólo capítulo.

Espero haberme explicado meridianamente bien y te sirva de orientación.......  y que yo no haya metido la gamba.

Saluditos!. ......  

P.D:Procura elegir mejor los ejercicios, éste es muy de fichero.
#817
Cita de: rir3760 en 14 Mayo 2013, 16:50 PM
Tienes razón, no era un problema sino dos (el uso del VLA y las dos variables sin inicializar).

¿O son tres? Lo menciono porque:

1) Debido a que la definición de la función main omite el tipo de retorno no se puede compilar como C99 (no seria valido).

2) La declaración del array "data" requiere compilar como C99.

...


Ya sé que main debería ser declarado como int y que el uso de VLAs da problemas al no estar implementado en algunos compiladores, sin embargo en ese caso lo mejor es cambiar de compilador a uno más "funcional". En mi caso con Code::Blocks no he tenido problema alguno ni con main ni con los VLAs, que utilizo frecuentemente sin problemas.

Vamos que si el compilador "no tira" por falta de implementación de ciertas funcionalidades del C99 sencillamente cambiaría de compilador.

Saluditos!. .....
#818
Cita de: Luisa Ringo en 13 Mayo 2013, 17:48 PM
Hola

¿ Podrían ayudarme por favor? :)



Pues andaba aburrido y me dije ¡vamos a echarle un cabo a Luisa Ringo!.

Y me salio esta salida que es "casi" la esperada para lo que se pedía:


Código (cpp) [Seleccionar]


Ingrese Nombre de Cines:
>sorancio

Ingrese Nombre de Cines:
>leosan

Ingrese Nombre de Cines:
>masakre

Ingrese Nombre de Cines:
>rir3760

Ingrese Nombre de Cines:
>pantalaimon

Cines ordenados alfabeticamente:

       leosan
       masakre
       pantalaimon
       rir3760
       sorancio
Ingrese Nombre de Teatros:
>amchacon

Ingrese Nombre de Teatros:
>leosansan

Ingrese Nombre de Teatros:
>caster

Ingrese Nombre de Teatros:
>puntoinfinito

Ingrese Nombre de Teatros:
>do-while

Teatros ordenados alfabeticamente:>
       amchacon
       caster
       do-while
       leosansan
       puntoinfinito
Teatros y Cines ordenados alfabeticamente:>
       amchacon
       caster
       do-while
       leosan
       leosansan
       masakre
       pantalaimon
       puntoinfinito
       rir3760
       sorancio


Con este código, a mejorar poniendo más funciones para los trozos que se cuasi-repiten, pero algo tendrás que aportar tú:

Código (cpp) [Seleccionar]
#include<stdio.h>
#include<string.h>
#define TAM 5
#define TAM2 2*TAM
#define TAM_NOMBRE  20
void bubblesort(char cines[][TAM_NOMBRE], int tam );
int main()
{
   int i;
   char cines[TAM][TAM_NOMBRE],teatros[TAM][TAM_NOMBRE],entretenimientos[TAM2][TAM_NOMBRE];
   for(i=0;i<TAM;i++)
       {
           printf("\nIngrese Nombre de Cines:\n>");
           scanf("%s",&cines[i]);
       }
   printf("\nCines ordenados alfabeticamente:\n");
   bubblesort(cines,TAM);
   for(i=0;i<TAM;i++)
       printf("\n\t%s",cines[i]);
   for(i=0;i<TAM;i++)
       {
           printf("\nIngrese Nombre de Teatros:\n>");
           scanf("%s",&teatros[i]);
       }
   bubblesort(teatros,TAM);
   printf("\nTeatros ordenados alfabeticamente:\n>");
   for(i=0;i<TAM;i++)
       printf("\n\t%s",teatros[i]);
   for(i=0;i<TAM;i++)
       strcpy(entretenimientos[i],teatros[i]);
   for(i=TAM;i<TAM2;i++)
       strcpy(entretenimientos[i],cines[i-TAM]);
   bubblesort(entretenimientos,TAM2);
   printf("\nTeatros y Cines ordenados alfabeticamente:\n>");
   for(i=0;i<TAM2;i++)
       printf("\n\t%s",entretenimientos[i]);
   return 0;
}
void bubblesort(char nombre[][TAM_NOMBRE], int n )
{
   int i,j,temp;
   char temp_[TAM_NOMBRE];
   float comp;
   for(i=1;i<n;i++)
       {
           for(j=0;j<n-i;j++)
               {
                   comp = strcmp( nombre[j], nombre[j+1] );
                   if(comp > 0)
                       {
                           strcpy(temp_,nombre[j]);
                           strcpy(nombre[j],nombre[j+1]);
                           strcpy(nombre[j+1],temp_);
                       }
               }
       }
}


¡Huy!, que me olvidé que era en C++


¡Lo que me habría ahorrado con string!. En fin, eso te lo dejo a tí, como lo de ordenar de manera descendente el segundo array, el de teatros.

Saluditos!. .....  


P.D:Hay algo a mejorar, que la letra inicial sea mayúscula, pero no te lo voy a dar todo hecho.
#819
Cita de: Schrödinger en 13 Mayo 2013, 19:24 PM
Quiero hacer un programa que genere N floats uniformemente distribuidos en un intervalo dado y que calcule la media y la dispersión mediante una función
...............................................................

Compila sin problemas pero los valores para la media y la varianza son incorrectos. El caso es que en una versión anterior del programa en la cual N no estaba pillado de la consola al menos la media funcionaba.

¿Alguna pista?

El problema radica, con permiso de rir, en que no inicializas las  variables *media=0 y *varianza=0 antes de los correspondientes for. A mí, con esta pequeñísima corrección, me ha funcionado bien, creo.

Saluditos!. ......  
#820

Para empezar no es C++ sino más bien C.


Además de lo comentado por amchacon, tienes dos switch y no tiene por qué continuar los case del uno con el otro, ambos pueden empezar de 1, eso sí con dos opciones diferentes para no liarla.

Las opciones con entero pueden dar bucles si el usuario entra una letra en lugar de un número, de ahí que yo los use como char y en los case, al ser char van entre las comillas simples.

Sería conveniente darle al usuario la opción de regresar al menú principal una vez que ha usado el menú secundario o segundo switch, así al menos es como funcionan los cajeros y limpiar o refrescar la pantalla según se vayan seleccionando opciones. Con estas opciones te propongo este código para seguir mejorándolo:


Código (cpp) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#define GRACIAS     puts("GRACIAS POR SU PREFERENCIA")
int main(){
      int a;
      char opcion,opcion1;
      puts("\nESTE PROGRAMA MUESTRA COMO ES EL SISTEMA DE UN CAJERO AUTOMATICO");
       while(1){
           puts ("\nDame tu clave");
           scanf(" %d",&a);
           if(a==123456){
               system ("cls");
               puts("\nEs correcto");
               break;
           }
           else{
               printf("\n Contraseña invalida");
               printf("\nTeclea otra ves tu clave");
           }
      }
       while (1){
       system("\npause");
       system ("cls");
       puts("\nEste es el menu de opciones\n ");
       puts("1.-Traspaso\n");
       puts("2.-Recargas\n");
       puts("3.-Retiro en efectivo\n");
       puts("4.-Salir\n");
       puts("\nTeclea la opcion que quieras\n");
       scanf(" %c",&opcion);

           switch(opcion)
             {
                 case '1':
                       {
                           puts("Traspaso");
                           GRACIAS;
                        break;
                       }
                 case '2':
                       {
                        puts("Recargas");
                        GRACIAS;
                        break;
                       }
                 case '4':
                         {
                              puts("Elejiste la opcion de salir");
                              GRACIAS;
                              system("\npause");
                              return 1;
                         }
                       default:
                         puts("opcion erronea");
                 case '3':
                       {
                        system ("cls");
                        puts("\nRetiro en efectivo");
                        puts("\nCuanto deseas retirar:");
                        puts("\nElige la opcion que quieras para retirar");
                        puts("\nPuedes elegir:");
                        puts("1.- $20");
                        puts("2.- $50");
                        puts("3.- $100");
                        puts("4.- $200");
                        puts("5.- $500");
                        puts("6.- $1000");
                        puts("7.- Volver al menu principal");

                               puts("\nElige la opcion que quieras");
                               scanf("\n%c",&opcion1);
                               switch(opcion1)
                                {
                                   case '1':
                               {
                                    puts("Elegiste la opcion de $20");
                                    GRACIAS;
                                    break;
                               }
                               case '2':
                               {
                                    puts("Elegiste la opcion de $50");
                                    GRACIAS;
                                    break;
                               }

                               case '3':
                               {
                                    puts("Elegiste la opcion de $100");
                                    GRACIAS;
                                    break;
                               }
                               case '4':
                               {
                                    puts("Elegiste la opcion de $200");
                                   GRACIAS;
                                    break;
                               }
                               case '5':
                               {
                                    puts("Elegiste la opcion de $500");
                                    GRACIAS;
                                    break;
                               }
                               case '6':
                               {
                                    puts("Elegiste la opcion de $1000");
                                    GRACIAS;
                                    break;
                               }
                               case '7':
                               {
                                    puts("Elegiste la opcion de volver al menu principal");
                                    GRACIAS;
                                    break;
                               }
                               default:
                                 puts("opcion erronea");
                                 break;
                           }

                       }

             }
       }
       return 0;

     }


Saluditos!. .....