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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 [107] 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ... 132
1061  Programación / Programación C/C++ / Re: Como hacer que tome registros este programa desde un txt y aplique la funcion en: 11 Enero 2013, 22:56 pm

Hola Leo

gracias por tu dedicación a estos proyectos locos que hago :)  ya estoy viendo las diferencias en c y c++ y mezclado con foxpro salen una buena ensalada


Luis

Al final logré una horita y he podido empezar a leer sobre los ficheros en C++.
Te paso el código en C++ de lo que pedias ¡ ¡ ¡.
Compilalo y ejecutalo y luego abre el fichero de texto luis2.txt, ahí estarán todas las matrices resultantes de aplicar el incremento de uno a cada array, todo un gustazo ¡ ¡ ¡ y en luis.txt es donde están, o bien tú lo pones a mano, los arrays.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main () {
  8.    int i,j,v[6]={0},a[6][6];
  9. /***********  ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO  ************/
  10.    fstream myfile ("luis.txt");
  11.    if (myfile.is_open()){
  12.        myfile << "01 32 34 38 41 44\n";
  13.        myfile << "03 06 19 32 47 49\n";
  14.        myfile << "08 12 20 34 47 49\n";
  15.        myfile.close();
  16.    }
  17.    else cout << "\n Incapaz de crear o abrir el fichero \n";
  18. /**************************************************************************/
  19.    string line;
  20.    ifstream myfile1 ("luis.txt");
  21.    if (myfile1.is_open()){
  22.    ofstream myfile3 ("luis2.txt");
  23.    if (myfile3.is_open()){
  24.        myfile1 >>v[0] >>v[1]>>v[2] >>v[3]>>v[4] >>v[5];
  25.        while ( (!myfile1.eof())) {
  26.            for (i=0;i<6;i++)
  27.                cout << "v["<<i<<"] = "<<v[i] << "  ";
  28.            cout <<endl;
  29.            for (i=0;i<6;i++)
  30.                for (j=0;j<6;j++){
  31.                    if (i!=j)
  32.                        a[i][j]=v[j];
  33.                    else
  34.                        a[i][j]=v[i]+1;
  35.            }
  36.                myfile3 << "\n ";cout <<endl;
  37.                for (i=0;i<6;i++){
  38.                    for (j=0;j<6;j++){
  39.                        cout << a[i][j]<< " ";
  40.                        myfile3 <<  a[i][j] <<" ";
  41.                    }myfile3 << "\n ";cout <<endl;
  42.                }
  43.            myfile1 >>v[0] >>v[1]>>v[2] >>v[3]>>v[4] >>v[5];
  44.            }
  45.            myfile3.close();/**/
  46.        }
  47.        else cout << "\n Incapaz de crear o abrir el fichero \n";
  48.        myfile1.close();
  49.    }
  50.  else cout << "\n Incapaz de crear o abrir el fichero \n";
  51.  return 0;
  52. }
  53.  
  54.  
Saluditos!.
P.D: Es mi primer código con ficheros en C++. Supongo que la semana que viene, cuando me haya visto el tema con más calma, me parecerá horrible pero ........ hace lo que pedías. :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
1062  Programación / Programación C/C++ / Re: Como hacer que tome registros este programa desde un txt y aplique la funcion en: 11 Enero 2013, 16:10 pm
Vale veré este fin de empaparme con eso,es que solo los fines de semana es que puedo estudiar.

Mirare esos enlaces a ver si me entero

Gracias

Luis
Animo que son dos dias ¡ ¡ ¡.
Como te he comentado me defiendo más en C que en C++, no obstante haré lo que tú comentas y me iré mirando los ficheros en C++.
Pero para que veas que es relativamente sencillo, te dejo el código en C -guárdalo con la extensión .c -.
No hace falta manejar memoria dinámica ya que sólo haces uso de un array de seis elementos. La idea es leer una línea de esos seis elementos, formar la matriz con los incrementos correspondientes y guardarla en un nuevo fichero. Así de sencillo: un solo array y una sola matriz para todo, independientemente de cuantas líneas tenga el fichero.
Para que lo" veas" te dejo los printf -en C++ serían cout-:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define NOM_ARCHIVO  "luis_C.txt"
  4. #define NOM_ARCHIVO2  "luis2_C.txt"
  5. #define NUM_ELEM  6
  6.  
  7. int main(void){
  8.   FILE *fichero,*fichero2;
  9.   float v[NUM_ELEM],a[6][6];
  10.   int i,j;
  11. /***********  ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO  ************/
  12.   if ((fichero = fopen(NOM_ARCHIVO, "w")) == NULL){
  13.      perror(NOM_ARCHIVO);
  14.      return EXIT_FAILURE;
  15.   }
  16.   fprintf(fichero, "01 32 34 38 41 44\n");
  17.   fprintf(fichero, "03 06 19 32 47 49\n");
  18.   fprintf(fichero, "08 12 20 34 47 50");
  19.    /*fprintf(fichero, "01 32 34 38 41 44\n03 06 19 32 47 49\n08 12 20 34 47 50");<== o este solo fprintf*/
  20.  
  21.   fclose(fichero);
  22. /**************************************************************************/
  23.   if ((fichero = fopen(NOM_ARCHIVO, "r")) == NULL){
  24.      perror(NOM_ARCHIVO);
  25.      return EXIT_FAILURE;
  26.   }
  27.    if ((fichero2 = fopen(NOM_ARCHIVO2, "w")) == NULL){
  28.      perror(NOM_ARCHIVO);
  29.      return EXIT_FAILURE;
  30.   }
  31.   while (fscanf(fichero,"%g %g %g %g %g %g", &v[0], &v[1], &v[2], &v[3], &v[4], &v[5])==6){
  32.        for (i=0;i<6;i++)
  33.        printf ("v[%d]= %g ",i, v[i]);
  34.        puts("\n");puts("\n");
  35.        for (i=0;i<6;i++)
  36.            for (j=0;j<6;j++){
  37.                if (i!=j)
  38.                    a[i][j]=v[j];
  39.                else
  40.                    a[i][j]=v[i]+1;
  41.        }
  42.        fprintf (fichero2, "\n ");
  43.        for (i=0;i<6;i++){
  44.            for (j=0;j<6;j++){
  45.            printf ("%g ", a[i][j]);
  46.            fprintf (fichero2, "%g ", a[i][j]);
  47.            }fprintf (fichero2, "\n ");puts("\n");
  48.        }
  49.    }
  50.  
  51.   fclose(fichero);
  52.   fclose(fichero2);
  53.  
  54.   return EXIT_SUCCESS;
  55. }
  56.  
  57.  
Saluditos!.
P.D: Recuerda que los ficheros generados se encuentran en la misma carpeta donde está el código.
1063  Programación / Programación C/C++ / Re: Duda llamar funciones en: 10 Enero 2013, 18:54 pm
Uffff me habeis salvado!! Muchisimas gracias ya mas o menos veo que me anda todo!  Pero no me termina de andar esto, son errores de funcione y me suena a mi que esta en los return que estan mal colocados que pensais¿?

La función primo no estaba bien implementada y la que tenías de factorial inicialmente era mejor.
Te he incluido la librería "#include<locale.h>" con la instrucción en el main de "setlocale(LC_ALL, "Spanish");", lo que permite que se vean los acentos y no símbolos extraños.:

Código
  1. #include <stdio.h>
  2. #include<locale.h>
  3. void menu(void);
  4. int factorial(int n);
  5. int primo(int n);
  6. int main() {
  7.    int numero,opcion, resultado;
  8.    setlocale(LC_ALL, "Spanish");
  9.    while (1){
  10.        menu();
  11.        scanf("%d",&opcion);
  12.        switch (opcion){
  13.           case 0: return 2;
  14.           case 1:
  15.               printf("Introduzca el número: ");
  16.               scanf("%d", &numero);
  17.               resultado = factorial(numero);
  18.               printf("El factorial de %d es %d\n\n\n", numero, resultado);
  19.               break;
  20.           case 2:
  21.                printf("Introduzca el número: ");
  22.                scanf("%d", &numero);
  23.                resultado=primo(numero);
  24.                if(resultado==1)
  25.                    printf("EL número %d es primo\n\n\n",numero);
  26.                else
  27.                    printf("EL número %d no es primo \n\n\n",numero);
  28.                break;
  29.           }
  30.    }
  31. return 0;
  32. }
  33. /******************* MENU **********************/
  34. void menu(){
  35.  
  36.    printf( "Marque la opción que prefiera\n");
  37.    printf( "0 Salir del programa\n");
  38.    printf( "1 Calcular el factorial de una número\n");
  39.    printf( "2 Comprobar si un número es primo\n");
  40.    printf( "3 Calcular el mínimo común múltiplo\n");
  41.    printf( "4 Calcular el máximo común divisor\n");
  42.    printf( "5 Determinar si un año es bisiesto\n");
  43.    printf( "6 Mostrar los años bisiestos\n");
  44.    printf( "7 Mostrar número de dias de un mes y año\n");
  45.    printf( "8 Calcular números combinatorios\n");
  46.    printf( "9 Operar números racionales\n");
  47.    printf( "10 Jugar al doble o nada\n");
  48.  
  49. }
  50. /****************** FACTORIAL ******************/
  51. int factorial(int n)
  52. {
  53.    if(n > 1)
  54.        return n * factorial(n-1);
  55.    else
  56.        return 1;
  57. }
  58. /***************** PRIMO ***********************/
  59. int primo(int n){
  60.    int x=2;
  61.    while(x<n){
  62.        if (n%x==0)
  63.            return 0;
  64.          x=x++;
  65.    }
  66.    return 1;
  67. }
  68. /*********************************************/
  69.  
Saluditos!.
1064  Programación / Programación C/C++ / Re: Ayuda delimitar fin de archivo en: 9 Enero 2013, 21:23 pm
Espero te sirva:
http://www.cplusplus.com/doc/tutorial/files/
1065  Programación / Programación C/C++ / Re: AYUDA LENGUAJE C en: 8 Enero 2013, 22:16 pm
No grites, por favor.
Creo que se refiere a ti LeoJ24, por el hecho de que escribir en mayúsculas se entiende equivale a gritar.
¿O me equivoco?.
Saluditos!.
1066  Programación / Programación C/C++ / Re: AYUDA LENGUAJE C en: 8 Enero 2013, 20:57 pm

BUENASS..

Vamos, resumiendo y sin parafernalias:
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int main (){
  5. int num;
  6. printf ("ESCRIBI UN NUMERO\n");
  7. num = getche ();
  8. puts("\n");
  9. printf ("EL NUMERO ESCRITO ES: %c es decir %d o sea %d\n", num,num-48,num-'0') ;
  10. system ("PAUSE");
  11. return 0;
  12. }
  13.  
Saluditos!.
1067  Programación / Programación C/C++ / Re: ejercicio en: 8 Enero 2013, 16:12 pm
lo peor es que es un error logico, porque compila y todo  :(

.........................................sorry, ya ví que declaras diferencia como variable global pero no le "llega"  a las funciones "horas();   calcularCargo();"
Por cierto, te falta  "#include <cstdlib>" para usar "system("PAUSE");".
REEDITO: Ahora sí llega:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int diferencia;
  5.  
  6. int hora_segundo(int h, int m,int s){
  7. return (h*3600)+(m*60)+s;
  8. }
  9.  
  10. int diferencia_hora()
  11. {
  12. int h_e,h_s,m_e,m_s,s_e,s_s;
  13. int hora_ingreso, hora_egreso, diferencia;
  14. cout<<"ingrese la hora de entrada en formato 24hs."<<endl;
  15. cout<<"ejemplo 15:30:25 un dato a la vez"<<endl;
  16. cout<<"ingrese la hora de entrada"<<endl;
  17. cin>>h_e;
  18. cout<<"ingrese los minutos"<<endl;
  19. cin>>m_e;
  20. cout<<"ingrese los segundos"<<endl;
  21. cin>>s_e;
  22.  
  23. hora_ingreso=hora_segundo(h_e, m_e, s_e);
  24. cout<<"hora_ingreso "<<hora_ingreso<<endl;
  25. cout<<"ingrese la hora de salida en formato 24hs."<<endl;
  26. cout<<"ejemplo 20:35:42 un dato a la vez"<<endl;
  27. cout<<"ingrese la hora de salida"<<endl;
  28. cin>>h_s;
  29. cout<<"ingrese los minutos"<<endl;
  30. cin>>m_s;
  31. cout<<"ingrese los segundos"<<endl;
  32. cin>>s_s;
  33. hora_egreso=hora_segundo(h_s, m_s,s_s);
  34. cout<<"hora_egreso "<<hora_egreso<<endl;
  35. diferencia=hora_egreso-hora_ingreso;
  36. cout<<"diferencia "<<diferencia<<endl;
  37. return diferencia;
  38.  
  39. }
  40.  
  41. void horas(int dif)
  42. {
  43. /*cout<<"diferencia "<<dif<<endl;
  44. cout<<"diferencia "<<diferencia<<endl;*/
  45. int sec, hr, min;
  46. sec=diferencia;
  47.    hr = sec / (60*60);
  48.    sec %= 60*60;
  49.    min = sec / 60;
  50.    sec %= 60;
  51.    cout << hr << " hora";
  52.    if(hr != 1) cout << "s";
  53.    cout << ":" << min << " minuto";
  54.    if(min != 1) cout << "s";
  55.    cout << ":" << sec << " segundo";
  56.    if(sec != 1) cout << "s";
  57. }
  58.  
  59. int calcularCargo(int dif)
  60. {
  61. int  rdo, rdo1;
  62.  
  63. if (dif<=10800)
  64. {
  65. rdo=2;
  66. }
  67. else
  68. {
  69. if ((dif<10800)&&(dif>=86400))
  70. {
  71. rdo=(dif-10800)/3600;
  72. rdo1 %= 60*60;
  73. if (rdo1>=1)
  74. {
  75. rdo=rdo+1;
  76. }
  77. rdo=2+(rdo*0.5);
  78. }
  79.  
  80. }
  81. return rdo;
  82.  
  83. }
  84.  
  85. int main()
  86. {
  87. diferencia=diferencia_hora();
  88. /*cout<<"diferencia2 "<<diferencia<<endl;
  89. system("PAUSE");*/
  90. horas(diferencia);
  91. calcularCargo(diferencia);
  92. system("PAUSE");
  93. cin.get();
  94. return 0;
  95. }
  96.  
Saluditos!.
1068  Programación / Programación C/C++ / Re: Problema cadenas en: 8 Enero 2013, 15:48 pm
Pero el error está ahi, no sé que falla D:
Pues a mí si me funciona:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.   char dc[25],dr[25],dp[25],dt[25];
  8.   printf("Introduce nombre de archivo sin extension: ");
  9.   scanf ("%s", dc);
  10.   fflush(stdin);
  11.   strcpy(dp,dc);
  12.   strcpy(dr,dc);
  13.   strcpy(dt,dc);
  14.   strcat(dc,".train");
  15.   strcat(dp,".test");
  16.   strcat(dr,".real");
  17.   strcat(dt,".out");
  18.   printf("dc=%s  dp=%s  dr=%s  dt=%s  \n",dc,dp,dr,dt);
  19.   FILE* fichero;
  20.   fichero = fopen("dc", "wt");
  21.   fputs("1", fichero);
  22.   fclose(fichero);
  23.   fichero = fopen("dp", "wt");
  24.   fputs("5", fichero);
  25.   fclose(fichero);
  26.   fichero = fopen("dr", "wt");
  27.   fputs("10", fichero);
  28.   fclose(fichero);
  29.   char linea[81];
  30.   fichero = fopen("dc", "rt");
  31.    if (fichero == NULL){
  32.            printf("No existe el fichero!\n");
  33.            return 1;
  34.        }
  35.    while ((fgets(linea, 80, fichero) != NULL)){
  36.        puts(linea);
  37.        }
  38.    fclose(fichero);
  39.    fichero = fopen("dp", "rt");
  40.    if (fichero == NULL){
  41.            printf("No existe el fichero!\n");
  42.            return 1;
  43.        }
  44.    while ((fgets(linea, 80, fichero) != NULL)){
  45.        puts(linea);
  46.        }
  47.    fclose(fichero);
  48.    fichero = fopen("dr", "rt");
  49.    if (fichero == NULL){
  50.            printf("No existe el fichero!\n");
  51.            return 1;
  52.        }
  53.    while ((fgets(linea, 80, fichero) != NULL)){
  54.        puts(linea);
  55.        }
  56. fclose(fichero);
  57.   return 0;
  58. }
  59.  
  60.  
Especifica mejor el error o pon más código.
Saluditos!.
1069  Programación / Programación C/C++ / Re: Necesito ayuda con un problemita en: 7 Enero 2013, 16:37 pm
Capooo! Muchisimas gracias! Eso era lo que buscaba, no me sabia lo del while
Mirándolo mejor, creo que no es necesario sumar cada vez 50 cuadrados, ya que bastaría sumarlos la primera vez solamente y luego restar por la izquierda al más pequeño y sumar por la derecha al siguiente, osea:
Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int i = 0,j=0;
  6.    int suma = 0;
  7.    for(i=1; i <= 50; i++)
  8.         suma += i*i;
  9.   while (1){
  10.  
  11.        if (suma==26110725){
  12.             break;
  13.        }
  14.        j++;suma+=-j*j+(50+j)*(50+j);
  15.    }printf("La suma  es %d desde %d hasta %d\n",suma,j+1,j+50);
  16.    /*****************Para comprobar******************/
  17.   suma=0;
  18.            for(i=j+1 ; i <= j+50; i++){
  19.                printf("%d x %d = %d\n ", i,i,i*i);
  20.                suma += i*i;
  21.            }
  22.         printf("La suma es: %d\n", suma);
  23.    return 0;
  24. }
  25.  
Saluditos!.
1070  Programación / Programación C/C++ / Re: Saber numeros primeros en una cadena desordenada pero a voluntad del usuario ? en: 7 Enero 2013, 15:19 pm
Sera que uso Dev ya que el programa no se detiene a mostrarme los numeros compila bien y todo,pero no me muestra nada de lo rapido que se sale

Además surge una duda, al introducir 2,3,7,0 da como primos 3,7 .... ¿y el 2?.
Para que tengas otro enfoque en el siguiente código:
* se pide al usuario que introduzca previamente el total de números a ingresar.
* Como ordenación he usado el método burbuja.
* Guardo los números primos en un arrray, de tamaño el número de primos que hay, por si tuviera que usarlos posteriormente para otra cosa.

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. void burbuja(int a[], int n){
  6.     int indiceintercambio, j,i;
  7.     i=n-1;
  8.     while(i>0)
  9.     {
  10.        indiceintercambio=0;
  11.        for(j=0; j<i; j++)
  12.            if(a[j]>a[j+1])
  13.            {
  14.                 int aux = a[j];
  15.                 a[j]=a[j+1];
  16.                 a[j+1]=aux;
  17.                 indiceintercambio=j;
  18.            }
  19.        i = indiceintercambio;
  20.     }
  21.  
  22. }
  23.  
  24. int primo(int n){
  25.    int res;
  26.    if(n==1) return false;
  27.    for(int i=2; i < n; i++){
  28.        res = n % i;
  29.        if(res==0) return false;
  30.    }
  31.    return true;
  32. }
  33.  
  34. int main(){
  35.   bool primos = false;
  36.    int cont = 0,n;
  37.    cout << "Indique el total  de numeros: ";
  38.    cin >>n;
  39.    int numero[n],temp[n];
  40.   for(int j=0;j<n;j++){
  41.        cout << "Introduzca  numero " << j+1 <<": ";
  42.        cin >> numero[j];
  43.    }
  44.   cout << "Desordenados: ";
  45.    for(int k=0;k<n;k++){
  46.        primos = primo(numero[k]);
  47.        if(primos==true) {
  48.            temp[cont]= numero[k];
  49.            cout << temp[cont] <<"  ";
  50.            cont++;
  51.        }
  52.    }
  53.  cout << endl << "Hay " << cont << " numeros primos"<<endl;
  54.  cout << endl<< endl;
  55.  
  56.   int num_primo[cont];
  57.   for(int k=0;k<cont;k++){
  58.      num_primo[k]=temp[k];
  59.   }
  60.   cout << endl<< "Ordenados: ";
  61.   burbuja(num_primo,cont);
  62.    for(int k=0;k<cont;k++){
  63.      cout << num_primo[k] <<"  ";
  64.   }
  65. cout << endl;
  66.    system ("pause");
  67.    return 0;
  68. }
  69.  
Saluditos!.
P.D: Cámbiate de Dev a Code::Blocks, además de otras cosas el uso de pestañas y múltiples ventanitas en la misma ventana le hace más versátil . ... y pausa automáticamente el programa .... y es libre.
Páginas: 1 ... 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 [107] 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines