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

#21
Hola
Siendote sincero, no tenia idea de como hacerlo XD
Asi que trate de buscar como un método en java para luego buscar su "equivalente" al lenguaje que quieres.

Encontre una solucion (Para Java) que decia algo asi:

Listar los ficheros de un directorio, pero en lugar de imprimir los nombres de los ficheros,
analizas las extensiones de los tipo de ficheros que quieres contar.


Entonces si tu  quieres contar todos los ficheros, los listas(no imprimir) y le pones un contador.
En el foro hay varios hilos respecto a listar ficheros en C/C++. No quisiera revivir un hilo  :-X
Saludos y suerte.
#22
Hola, te cuento que yo tambien estoy llevando un curso llamado "Organización de archivos" ó mas bien "organizacion de datos en archivos".
Aunque un poco viejito y hay codigo solo en C y pascal, la teoria esta buena.
Estructuras de archivos: un conjunto de herramientas conceptuales. Michael Folk
En opinion personal con lo que poco que e aprendido hasta ahora diría que el tema de archivos más que la sintaxis de un lenguaje, lo más importante es el conocimiento de técnicas/algoritmos para el manejo de estos, asi que espero te sirva el libro  :P
Con las técnicas que enseñan en el libro,y la referencia de ivancea96 te irá de maravilla  ;-)
Joder, no me fije la fecha del hilo, perdonen.
Saludos.
#23
Programación C/C++ / Re: Ayuda algoritmo
5 Octubre 2014, 18:13 PM
Se parece mucho al metodo de fuerza bruta, busca sobre "string matching".
Se puede implementar en una sola función.
Saludos.
#24

#include <stdio.h>

int main()
{
   int continuar, chimichanga;
   continuar = 0;
   while (continuar == 0)
   {
   printf("\nMenu: \n 1.-Paque-te pongas feliz.  \n 2.-Paque-te llenes.  \n 3.-Paque-te enojes");
   printf("\nSelecciona tu paquete: ");
   scanf("%d",&chimichanga);
   int precio;
   int billetes, sobra, moneda;

   switch(chimichanga)
   {
           case 1:
               precio=100;
           printf("Elegiste el paquete %d, su precio es de %d este incluye: ",chimichanga, precio);
           printf("\n Chocolate caliente. \n 3 churros. \n 5 tacos.");
           break;
           case 2:
               precio=80;
               printf("Elegiste el paquete %d, su precio es de %d este incluye: ",chimichanga, precio);
               printf("\n Cafe \n Concha \n Torta");
               break;
           case 3:
               precio=40;
               printf("Elegiste el paquete %d, su precio es de %d este incluye: ",chimichanga, precio);
               printf("\n Agua. \n Bolillo. \n Chayote.");
               break;
           default:
               printf("Escoge un paquete valido.");
   };
   int pago, cambio;
   printf("\n indica con cuanto vas a pagar: ");
   scanf("%d", &pago);
   if (pago>=precio)
    {
          cambio=pago-precio;
          printf("\n su cambio es de: %d", cambio);

          billetes= (int) cambio/200;
          printf("\n %d billetes de 200", billetes);
          sobra=(int) cambio%200;


          billetes=(int) sobra/100;
          printf("\n %d billetes de 100", billetes);
          sobra=(int) sobra%100;

          billetes=(int) sobra/50;
          printf("\n %d billetes de 50", billetes);
          sobra=(int) sobra%50;

          billetes=(int) sobra/20;
          printf("\n %d billetes de 20", billetes);
          sobra=(int) sobra%20;

          moneda=(int) sobra/10;
          printf("\n %d monedas de 10", moneda);
          sobra=(int) sobra%10;

          moneda=(int) sobra/5;
          printf("\n %d monedas de 5", moneda);
          sobra=(int) sobra%5;

          moneda=(int) sobra/2;
          printf("\n %d monedas de 2", moneda);
          sobra=(int) sobra%2;

          printf("\n %d monedad de 1", sobra);
    }
       else
       {
           printf("\n pague lo que se indica.");
       };
       printf("\nQuieres escoger algun otro paquete? Presiona 0 si tu respuesta es si y 1 si es no: ");
   scanf("%d", &continuar);
   system("cls");
   };
getch();
}



En lugar de

billetes=(int) sobra/100;
printf("\n %d billetes de 100", billetes);
sobra=(int) cambio%100;

Debería ser

billetes=(int) sobra/100;
printf("\n %d billetes de 100", billetes);
sobra=(int) sobra%100;

Y asi para los que siguen, en la primera si debes usar cambio, pero en las que siguen me parece que no.
Saludos  :)
#25
No sabia que tambien podia poner
#ifdef _WINDOWS_
#endif
más adentro del codigo  :o (al ver el simbolo # asumí que tenia que ir arriba xD).
Gracias a ambos, lo tendre en cuenta.
#26
Hola, yo lo hize asi
Código (cpp) [Seleccionar]

// LIBRERIAS
#include <iostream>
#include <stdio.h>
using namespace std;

// Variables Globales
const int  NR = 2;
int i,j;
char nombre[10][10];
char apellido[10][10];

// Funcion Madre
int main(void){


cout << "Ingrese 5 Nombres y apellidos" << endl;

for (i = 0; i < NR; i++ ){
cout << "Nombre [" << i << "]: ";
cin >> nombre[i];
fflush(stdin);
cout << "apellido [" << i << "]: ";
cin >> apellido[i];
fflush(stdin);
}

for (i = 0; i < NR; i++ ){
cout << "Nombre [" << i << "]: ";
cout << nombre[i] << endl;
cout << "Apellido [" << i << "]: ";
cout << apellido[i] << endl ;

}
return 0;
}


Salida:

Ingrese 2 Nombres y apellidos
Nombre [0]: Perico
apellido [0]: Palo
Nombre [1]: Brujo
apellido [1]: Brujito
Nombre [0]: Perico
Apellido [0]: Palo
Nombre [1]: Brujo
Apellido [1]: Brujito


Estas creando un arreglo bidimensional de 10 filas por 10 columnas.
Por lo que te da para:
                          Pos Colum.
                          0123456789
Apellido [cero] ="dasd56789X"
Apellido [2] =    "huu456789X"
  .. ...
Apellido [9] =    "gvvb56789X"
Entonces no creo que debas manejar el indice de las columnas.

Ahora el problema que tambien tenia era acerca del buffer(creo xD).
[youtube=540,360]https://www.youtube.com/watch?v=AFcvGLEMgFU[/youtube]

Saludos  :D
#27
Cita de: Caster en 28 Septiembre 2014, 00:20 AM
http://stackoverflow.com/questions/4605842/how-to-identify-platform-compiler-from-preprocessor-macros

Gracias man.
Bueno dejo el código, espero tambien le sirva a alguien.


#ifdef __linux__
#define LIMPIAR "CLEAR"
#endif // __linux__

#ifdef __MINGW32__
#define LIMPIAR "CLS"
#endif // __MINGW32__

#include <stdio.h>

int main(int argc, char *argv[]){
    printf("texto de prueba");
    system(LIMPIAR);
    printf("texto de prueba2");
    return 0;
}

Saludos  :)
#28
Hola a todos.
Sé que esta mal pedir codigo, o puedan pensar que quiero que me hagan la tarea, pero no es asi...

Verán, desde antes de entrar a la universidad yo usaba trisquel gnu/linux como S.O.
Pero cuando entre a la universidad me empezaron a asignar pequeños programitas de consola en C/C++ (hago menus con switch y requiero limpiar pantalla,etc) pero tengo que hacer mis programas usando system(cls) porque en la universidad solo hay pc's con windows xD!
Asi que desgraciadamente tuve que volver a windows, algunos dirán que es muy drástica esa decision  :-X
Lo que me gustaría es que me ayuden, si ustedes tienen algo para que mi programa reconozca que SO es y en base a eso, ejecute ciertas instrucciones
Ejemplo si el so es gnu/linux: que se ejecuten las ins. "clear" y si fuese windows "cls".
Otro ejemplo para hacer un programa que maneje archivos, el separador en la ruta en win es \ y en linux /.

Gracias de antemano.
#29
Hola Drewermerc, gracias por responderme.
Vaya que me hizo sufrir este problema  ;-)

Pero bueno, en lugar de ir directo al codigo, fuí a mi cama a pensarlo.
Y termine haciendolo asi.

#include <stdio.h>
#include <string.h>

FILE *fd;

void mostrarHotmails(void);

int main(int argc, char *argv[]){
   mostrarHotmails();
   return 0;
}


void mostrarHotmails(void){

   if( (fd=fopen("data_Prog_01.txt","rt")) == NULL ){
       printf("\nNo se pudo abrir el archivo.");
       exit(-1);
   }

   else{
       char find[13];      // email que voy a buscar
       char email[15];     // para almacenar dominio del usuario (luego comparo con find)
       char contacto[30];  // para almacenar todo el correo del contacto
       int contC = 0;      //este contador me indica si ya llegue al campo de email
       int i=0;
       int ie=0;
       char c;
       fseek(fd,0,0);
       printf("ingrese dominio: ");
       gets(find);

       while( !feof(fd)){  // Para recorrer todo el archivo

           //mover el puntero/cursor hasta el campo de email.
           while(contC<2 && (c != EOF)){
               c = fgetc(fd);
               if( c == ';'){
                   contC++;
               }
           }

           // para capturar parcialmente el correo (userX@)
           while(c!='@' && (c != EOF)){
               c = fgetc(fd);
               contacto[i++] = c;
           }

           contacto[i++] = '\0';

           if(c=='@' && (c != EOF)){//comienzo a capturar el dominio
               ie=0;
               c = fgetc(fd);
               while(c!='^' && (c != EOF)){
                   email[ie++] = c;
                   c = fgetc(fd);
               }
               email[ie] = '\0';
           }
           // reinicio mi indice y contC para usar los arreglos
           // para el siguiente registro.
           i=0;
           contC = 0;
           //Comparo e imprimo
           if(strcmp(email,find)==0){
               printf("%s%s\n",contacto,email);
           }
       }// Fin while
       fclose(fd);
   }
}


Nuevamente gracías, ya nos leeremos en otra oportunidad.
Saludos  :D
#30
Buenas a todos, espero que esten bien.
Tengo el siguiente problema, agradecería que le den una ojeada y me den algun consejo.

Tengo un archivo .txt con algunos registros con delimitadores
La estructura de mi archivo seria algo asi...

01;user01;user01@hotmail.com^02;user02;user02@gmail.com^03;user03;user03@yahoo.com^04;user04;user04@hotmail.com^05;user05;user05@facebook.com^

Donde:
Citar';' delimitador de campo
'^' delimitador de registro
Lo que tengo que hacer por ahora es mostrar todo el registro de aquellos que tengan cuentas de hotmail

Lo que e hecho hasta ahora es

#include <stdio.h>
#include <string.h>

FILE *fd;

void mostrarHotmails(void);

int main(int argc, char *argv[]){
   mostrarHotmails();
   return 0;
}

void mostrarHotmails(void){
   char c;

   if( (fd=fopen("data_Prog_01.txt","rt")) == NULL ){
       printf("\nNo se pudo abrir el archivo.");
       exit(1);
   }

   else{
       char find[13] = "@hotmail.com"; // email que voy a buscar
       char email[13];                 // para almacenar el dominio de emails de los usuarios (para luego comparar con find)
       char contacto[30];              // para almacenar todo el registro del contacto
       int contC = 0;                  //este contador me indica si ya llegue al campo de email
       fseek(fd,0,0);

       while( !feof(fd) ){ // mientras no sea fin de archivo, leer un caracter.

           c = fgetc(fd);
           if( c == ';'){
               contC++;

               if(contC==2){   // Ya llegue al inicio del campo email.
                   c = fgetc(fd);
                   while(c!='^'){
                       int i=0; // indice para el arreglo contacto.
                       contacto[i++] = c;
                       if(c=='@'){
                           int ie = 0; // indice de email

                           while(c!='^'){
                               email[ie++] = c;
                               contacto[i++] = c;
                               c = fgetc(fd);
                           }

                           email[ie] = '\0';
                           contacto[i] = '\0';
                           if(strcmp(email,find)==0){
                               printf("%s\n",contacto);
                           }
                       }
                       c = fgetc(fd);
                   }
               }
           }
           if( c == '^'){ // Fin de registro, reinicio el contador de campos.
               contC = 0;
           }

       } // Fin de while
       fclose(fd);
   }
}


El resultado al ejecutar el programa es este...
Citar@@hotmail.com
@@hotmail.com

Como veran, me muestra dos veces el '@' y creo que es debido a que despues de guardar el caracter leido(linea 38) en la linea 44 lo vuelve a guardar.
Aun asi no entiendo porque solo me muestra los dominios y no toda la dirección de correo.

Me parece haber leido algo como "strcmp solo compara cadenas (no arrays de cadenas)", no se si por eso no me funcione el programa.

Gracias por su tiempo chicos  :D