• Sábado 20 de Abril de 2024, 17:50

Mostrar Mensajes

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


Mensajes - Aprendiz21Sam

Páginas: [1] 2
1
Visual Basic para principiantes / Re: cambiar imagen de picturebox
« en: Jueves 14 de Abril de 2011, 13:07 »
Eso que haces no se puede hacer, debes concatenar cadenas. Veamos, se supone que a ti te insertan un valor y dependiendo de este se cargará una foto u otra.

Yo prefiero hacerlo con Picture en vez de PictureBox, pero aun así, el fallo claro que veo es esto:

Código: Visual Basic
  1. "F:imagen[j].gif"
  2.  

Debes hacer esto:

Código: Visual Basic
  1. "F:imagen" & j & ".gif"
  2.  

2
C/C++ / Re: No me deja leer del fichero.
« en: Domingo 16 de Mayo de 2010, 16:48 »
Sí, lo del espacio ha sido un descuido que no me he dado cuenta porque no ppdía abrir el archivo. Por todo lo demás está bien. Sigo sin saber por qué no podía abrir el fichero. Supuestamente tu sí puedes abrirlo así que el código no debe tener un error. He reinstalado el programa y ahora si me funciona. No se que podía estar pasando, si alguien le encuentra una explicación...

3
C/C++ / Re: No me deja leer del fichero.
« en: Sábado 15 de Mayo de 2010, 10:08 »
Si, he probado todo eso y sigue sin abrirme el archivo. No entiendo por qué ocurre esto, nunca me había pasado y yo creía que controlaba bien la apertura de ficheros. No veo ningún fallo en el código y tampoco en la carpeta donde tengo todos los archivos.

4
C/C++ / Re: Sobre la función "fflush(stdin)"
« en: Viernes 14 de Mayo de 2010, 11:54 »
Pero "sscanf" es de C++ y yo estoy usando C.

5
C/C++ / Re: No me deja leer del fichero.
« en: Viernes 14 de Mayo de 2010, 09:15 »
"a" Abre un archivo existente para escritura en modo secuencial, añadiendo los
datos al final de los que haya. Si el archivo no existe, se crea.

"b" Abre en forma binaria.

Ese no es el fallo, además el fallo me lo da tanto al mostrar el array de caracteres como en mostrar el número de espacios.

No obstante, también puse "wb" (que no soluciona el código) y tampoco funciona la apertura.

6
C/C++ / No me deja leer del fichero.
« en: Jueves 13 de Mayo de 2010, 18:54 »
Buenas, tengo un problema para leer un archivo. El archivo está creado ("100%") seguro porque además lo he abierto con otro ejercicio, donde si puedo abrirlo en modo lectura.

Éste es el código...

Código: C
  1. /*Cabecera de las bibliotecas de C*/
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. /*Variables globales*/
  8.  
  9. /*Declaración de Macors (#define)*/
  10. #define Max 5
  11.  
  12. /*Cabecera de nuestras funciones*/
  13. void LeerFichero();
  14. void GuardarBina(char *fCadena2);
  15.  
  16. /*Programa principal*/
  17. int main()
  18. {
  19.   /*Declaración de mis variables principales*/
  20.   char Cadena[1000];
  21.   char Opc;
  22.  
  23.   /*Inicialización de mis variables*/
  24.  
  25.   /*Declaración de mis arrays*/
  26.  
  27.   /*Parámetros de entrada*/
  28.   do
  29.   {
  30.     system("cls");
  31.     printf("n1.Leer del fichero");
  32.     printf("n2.Salir");
  33.     Opc=getch();
  34.     switch(Opc)
  35.     {
  36.       case '1':
  37.         LeerFichero();
  38.         break;
  39.       case '2':
  40.         break;
  41.       default:
  42.         printf("nOpcion incorrecta");
  43.         getch();
  44.       }
  45.     }while(Opc!='2');
  46.  
  47.   /*Algoritmo principal*/
  48.  
  49.   /*Parámetros de salida*/
  50.  
  51.   /*Otros parámetros*/
  52.   getch();
  53.   return 0;
  54. }
  55.  
  56. /*Implementación de mis funciones*/
  57. void LeerFichero()
  58. {
  59.   FILE *Arc;
  60.   int i;
  61.   int Espacios=0;
  62.   char Cadena[Max];
  63.   char Opc, Opc2;
  64.   do
  65.   {
  66.     system("cls");
  67.     printf("n1.Mostrar contenido del fichero");
  68.     printf("n2.Mostrar numero de espacios del fichero");
  69.     printf("n3.Salir");
  70.     Opc=getch();
  71.     switch(Opc)
  72.     {
  73.       case '1':
  74.         if((Arc=fopen("Fichero.txt", "r"))==NULL)
  75.         { /*Control del error en la apertura*/
  76.           printf("nError en la apertura. Es posible que el fichero no exista");
  77.         }
  78.         else
  79.         {
  80.           while (!feof(Arc)) // Mientras no se llegue al final del archivo...
  81.           {
  82.             fgets(Cadena, 5, Arc);
  83.             printf("n%s", Cadena);
  84.             getch();
  85.             printf("nSi desea guardarlo en binario pulse 1");
  86.             Opc2=getch();
  87.             if(Opc=='1')
  88.             {
  89.               GuardarBina(Cadena);
  90.             }
  91.           }
  92.           fclose(Arc);
  93.         }
  94.         break;
  95.       case '2':
  96.         if((Arc=fopen("Fichero.txt", "r"))==NULL)
  97.         { /*Control del error en la apertura*/
  98.           printf("nError en la apertura. Es posible que el fichero no exista");
  99.         }
  100.         else
  101.         {
  102.           while (!feof(Arc)) // Mientras no se llegue al final del archivo...
  103.           {
  104.             for(i=0; i<Max; i++)
  105.             {
  106.               Cadena[i]=fgetc(Arc);
  107.               if(Cadena[i]=32)
  108.               {
  109.                 Espacios++;
  110.               }
  111.             }
  112.           }
  113.           fclose(Arc);
  114.         }
  115.           printf("nEl numero de espacios son: %d", Espacios);
  116.           break;
  117.       case '3':
  118.         break;
  119.         default:
  120.         printf("nOpcion incorrecta");
  121.         getch();
  122.     }
  123.   }while(Opc!='3');
  124. }
  125.    
  126. void GuardarBina(char *fCadena2)
  127. {
  128.   FILE *Arc;
  129.   if((Arc=fopen("EjercicioBin.txt", "ab"))==NULL)
  130.   { /*Control del error en la apertura*/
  131.     printf("nError en la apertura. Es posible que el fichero no exista");
  132.   }
  133.   else
  134.   {
  135.     fwrite(fCadena2, sizeof(char), 5, Arc);
  136.   }
  137.   fclose(Arc);
  138. }
  139.  
  140.  

Cuando pulso la opción de mostrar el contenido, o la de mostrar el número de espacios me da un error de apertura, indicándome que es posible que el fichero no exista, pero eso no es cierto ya que con otro programa si me abre el mismo fichero.

7
C/C++ / Re: Truncar teclas C Linux
« en: Jueves 13 de Mayo de 2010, 12:09 »
Código: C
  1. int i;
  2. char Cadena[20];
  3.  
  4. printf("Cadena: ");
  5. for(i=0; i<20; i++)
  6. {
  7.   Cadena[i]=getch();
  8. }
  9.  

8
C/C++ / Sobre la función "fflush(stdin)"
« en: Jueves 13 de Mayo de 2010, 11:13 »
Hola, tengo un problema de comprensión sobre la función "fflush(stdin)". Se supone que es para limpiar la salida y no la entrada, sin embargo (stdin) indica que se limpia el buffer de entrada.

Cuando utilizo un bucle donde hay un "scanf();" necesito utilizar la función "fflush(stdin)" para que funcione correctamente el "scanf". Ahora bien, esta función no es estándar. A parte, a veces funciona antes del "scanf" y otras funciona justo después del "scanf".

Necesito saber
1-Cuál es el comportamiento exacto de "fflush(stdin)".
2-Cuándo debo (si es que debo) utilizarla.
3-Si no fuera correcto usarla, qué utilizo para sustituir "scanf()" u otras funciones que ensucien el buffer.

Gracias de antemano.

9
C/C++ / Re: Problemas con estruturas
« en: Jueves 8 de Abril de 2010, 12:24 »
Siento ser tan acaparador con el espacio del foro pero, he vuelto a resolver el problema de la estructura.

1- Debo cambiar "j" por "k" en la ordenación.
2- Debo pasarle la estructura sólo una vez a la función, no 10.

Código resuelto:

Código: C
  1. //Descripción del ejercicio: Ordenar equipos con sus puntuaciones.
  2. //Realizado por: Samuel Rico Jiménez
  3. //Version 1.0
  4.  
  5. /*Cabecera de las bibliotecas de C*/
  6. #include <stdio.h>
  7. #include <conio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. /*Variables globales*/
  12. int i;
  13.  
  14. /*Estructuras*/
  15. struct Equipo
  16. {
  17.   char Nombre[30];
  18.   unsigned int Puntos;
  19. };
  20.  
  21. /*Declaración de Macors (#define)*/
  22.  
  23. /*Cabecera de nuestras funciones*/
  24. void LeerDatos(struct Equipo *Team);
  25. void MostrarDatos(struct Equipo Team);
  26. void OrdenarEquipos(struct Equipo *Team);
  27.  
  28. /*Programa principal*/
  29. int main()
  30. {
  31.   /*Bienvenida*/
  32.   /*Estructuras*/
  33.   struct Equipo Team[10];
  34.  
  35.   /*Declaración de mis variables principales*/
  36.   for(i=0; i<10; i++)
  37.   {
  38.     LeerDatos(&Team[i]);
  39.   }
  40.  
  41.   /*Inicialización de mis variables*/
  42.  
  43.   /*Declaración de mis arrays*/
  44.  
  45.   /*Parámetros de entrada*/
  46.  
  47.   /*Algoritmo principal*/
  48.  
  49.   OrdenarEquipos(Team);
  50.    
  51.   /*Parámetros de salida*/
  52.   for(i=0; i<10; i++)
  53.   {
  54.     MostrarDatos(Team[i]);
  55.   }
  56.  
  57.   /*Otros parámetros*/
  58.   getch();
  59.   return 0;
  60. }
  61.  
  62. /*Implementación de mis funciones*/
  63. /*Función 1*/
  64. void LeerDatos(struct Equipo *Team)
  65. {
  66.   printf("Nombre del equipo: ");
  67.   gets(Team->Nombre);
  68.   printf("nPuntos: ");
  69.   scanf("%d", &Team->Puntos);
  70.   fflush(stdin);
  71. }
  72.  
  73. /*Función 2*/
  74. void MostrarDatos(struct Equipo Team)
  75. {
  76.   printf("nNombre del equipo: %s", Team.Nombre);
  77.   printf("nPuntos obtenidos: %d", Team.Puntos);
  78. }
  79.  
  80. /*Función 3*/
  81. void OrdenarEquipos(struct Equipo Team[])
  82. {
  83.   int j, k, Temp;
  84.   char Nombre2[30];
  85.   for (j=0; j<10; j++)
  86.   {
  87.     for (k=10-1; k>j; k--)
  88.     {
  89.       if (Team[k-1].Puntos<Team[k].Puntos)
  90.       {
  91.         Temp=Team[k-1].Puntos;
  92.         Team[k-1].Puntos=Team[k].Puntos;
  93.         Team[k].Puntos=Temp;
  94.         strcpy(Nombre2, Team[k-1].Nombre);
  95.         strcpy(Team[k-1].Nombre, Team[k].Nombre);
  96.         strcpy(Team[k].Nombre, Nombre2);
  97.       }
  98.     }
  99.   }
  100. }
  101.  

10
C/C++ / Re: Problemas con estruturas
« en: Jueves 8 de Abril de 2010, 10:33 »
Tengo un problema con otro ejercicio.

Esta vez el problema es que al escribir los 10 equipos con sus puntuaciones, me da un error.

Este es el código:

Código: C
  1. //Descripción del ejercicio:
  2. //Realizado por:
  3. //Version 1.0
  4.  
  5. /*Cabecera de las bibliotecas de C*/
  6. #include <stdio.h>
  7. #include <conio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. /*Variables globales*/
  12. int i;
  13.  
  14. /*Estructuras*/
  15. struct Equipo
  16. {
  17.   char Nombre[30];
  18.   unsigned int Puntos;
  19. };
  20.  
  21. /*Declaración de Macors (#define)*/
  22.  
  23. /*Cabecera de nuestras funciones*/
  24. void LeerDatos(struct Equipo *Team);
  25. void MostrarDatos(struct Equipo Team);
  26. void OrdenarEquipos(struct Equipo *Team);
  27.  
  28. /*Programa principal*/
  29. int main()
  30. {
  31.   /*Bienvenida*/
  32.   /*Estructuras*/
  33.   struct Equipo Team[10];
  34.  
  35.   /*Declaración de mis variables principales*/
  36.   for(i=0; i<10; i++)
  37.   {
  38.     LeerDatos(&Team[i]);
  39.   }
  40.  
  41.   /*Inicialización de mis variables*/
  42.  
  43.   /*Declaración de mis arrays*/
  44.  
  45.   /*Parámetros de entrada*/
  46.  
  47.   /*Algoritmo principal*/
  48.   for(i=0; i<10; i++)
  49.   {
  50.     OrdenarEquipos(&Team[i]);
  51.   }
  52.  
  53.   /*Parámetros de salida*/
  54.   for(i=0; i<10; i++)
  55.   {
  56.     MostrarDatos(Team[i]);
  57.   }
  58.  
  59.   /*Otros parámetros*/
  60.   getch();
  61.   return 0;
  62. }
  63.  
  64. /*Implementación de mis funciones*/
  65. /*Función 1*/
  66. void LeerDatos(struct Equipo *Team)
  67. {
  68.   printf("Nombre del equipo: ");
  69.   gets(Team->Nombre);
  70.   printf("nPuntos: ");
  71.   scanf("%d", &Team->Puntos);
  72.   fflush(stdin);
  73. }
  74.  
  75. /*Función 2*/
  76. void MostrarDatos(struct Equipo Team)
  77. {
  78.   printf("nNombre del equipo: %s", Team.Nombre);
  79.   printf("nPuntos obtenidos: %d", Team.Puntos);
  80. }
  81.  
  82. /*Función 3*/
  83. void OrdenarEquipos(struct Equipo *Team)
  84. {
  85.   int j, k, Temp;
  86.   char Nombre2[30];
  87.   for (j=1; j<10; j++)
  88.   {
  89.     for (k=10-1; k>j; k--)
  90.     {
  91.       if (Team[j-1].Puntos>Team[j].Puntos)
  92.       {
  93.         Temp=Team[j-1].Puntos;
  94.         Team[j-1].Puntos=Team[j-1].Puntos;
  95.         Team[j-1].Puntos=Temp;
  96.         strcpy(Nombre2,Team[j-1].Nombre);
  97.         strcpy(Team[j-1].Nombre, Nombre2);
  98.         strcpy(Team[j].Nombre, Nombre2);
  99.       }
  100.     }
  101.   }
  102. }
  103.  

11
C/C++ / Problemas con estruturas
« en: Miércoles 7 de Abril de 2010, 09:51 »
Buenas, estoy empezando con estructuras y me aparecen muchos errores nuevos para mi que no comprendo. Me gustaría que alguien me los explicara.

Este es el código:

Código: C
  1. //Descripción del ejercicio:
  2. //Realizado por: Samuel Rico Jiménez
  3. //Version 1.0
  4.  
  5. /*Cabecera de las bibliotecas de C*/
  6. #include <stdio.h>
  7. #include <conio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. /*Variables globales*/
  12. int i;
  13.  
  14. /*Declaración de Macors (#define)*/
  15.  
  16. /*Cabecera de nuestras funciones*/
  17. void LeerDatos (struct Alumnado *Alumno[i]);
  18. void EscribirDatos (char* DNI, char* Nombre, int Edad int Nota1, int Nota2, int Nota3);
  19.  
  20. /*Programa principal*/
  21. int main()
  22. {
  23.   /*Bienvenida*/
  24.  
  25.   /*Estructuras implementadas*/
  26.   struct Alumnado
  27.   {
  28.     char DNI[9];
  29.     char Nombre[20];
  30.     unsigned int Edad;
  31.     float Nota1;
  32.     float Nota2;
  33.     float Nota3;
  34.   };
  35.  
  36.   /*Declaración de mis variables principales*/
  37.   struct Alumnado Alumno[2];
  38.  
  39.   /*Inicialización de mis variables*/
  40.   for (i=0; i<3; i++)
  41.   {
  42.     LeerDatos(&Alumno[i];
  43.   }
  44.  
  45.   for (i=0; i<3; i++)
  46.   {
  47.     EscribirDatos(Alumno[i].DNI, Alumno[i].Nombre, Alumno[i].Edad, Alumno[i].Nota1, Alumno[i].Nota2, Alumno[i].Nota3);
  48.   }
  49.  
  50.  
  51.   /*Declaración de mis arrays*/
  52.  
  53.   /*Parámetros de entrada*/
  54.  
  55.   /*Algoritmo principal*/
  56.  
  57.   /*Parámetros de salida*/
  58.  
  59.   /*Otros parámetros*/
  60.   getch();
  61.   return 0;
  62. }
  63.  
  64. /*Implementación de mis funciones*/
  65.  
  66. /*Leer datos*/
  67. void LeerDatos (struct Alumnado *Alumno[i])
  68. {
  69.   printf("Usted es el alumno numero %d", i);
  70.   printf("nIntroduzca su nombre");
  71.   gets(Alumno->Nombre);
  72.   printf("nIndique su edad");
  73.   scanf("%d", &Alumno->Edad);
  74.   fflush(stdin);
  75.   printf("nIntroduzca su DNI");
  76.   gets(Alumno->DNI);
  77.   printf("nPor favor, indique la nota de la primera evaluacion");
  78.   scanf("%f", &Alumno->Nota1);
  79.   fflush(stdin);
  80.   printf("nPor favor, indique la nota de la segunda evaluacion");
  81.   scanf("%f", &Alumno->Nota2);
  82.   fflush(stdin);
  83.   printf("nPor favor, indique la nota de la tercera evaluacion");
  84.   scanf("%f", &Alumno->Nota3);
  85.   fflush(stdin);
  86. }
  87.  
  88.  
  89. /*Escribir datos*/
  90. void EscribirDatos (char* DNI, char* Nombre, int Edad, int Nota1, int Nota2, int Nota3)
  91. {
  92.   printf("Nombre: %s n", Nombre);
  93.   printf("Edad: %d n", Edad);
  94.   printf("DNI: %s n", DNI);
  95.   printf("Nota media: %f", (Nota1+Nota2+Nota3/3));
  96. }
  97.  
  98.  

Estos son los errores y warnings que me da:

Estas ya las he corregido. Era porque la estructura debía ser declarada globalmente.
Citar
18 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c [Warning] "struct Alumnado" declared inside parameter list
18 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c [Warning] its scope is only this definition or declaration, which is probably not what you want
19 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c syntax error before "int"
 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c In function `main':

Arreglado esto, era por tipo float en vez de int.
Citar
28 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c syntax error before "int"
 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c In function `main':


Arreglados, el primero era problema de una coma en la funcion de esa linea, la segunda era problema en dichas líneas, donde debía cambiar "Alumnado" por "Alumno".
Citar
43 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c syntax error before ';' token
48 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c syntax error before "Alumno"
 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c In function `LeerDatos':
72 F:Dev-CppParaQueOsCopieisSiQuereisAlumno.c `Alumnado' undeclared (first use in this function)
  (Each undeclared identifier is reported only once   for each function it appears in.)

Fallos del programa despues de compilar:

Todo arreglado
Citar
1- No muestra el nombre de la primera y la tercera persona.
2- La media no funciona correctamente.[/quote

Ya está todo solucionado, se puede cerrar el hilo.

El código resuelto sería:


Código: C
  1.  
  2.  
  3. //Realizado por: Samuel Rico
  4.  
  5. //Version 1.0
  6.  
  7.  
  8.  
  9. /*Cabecera de las bibliotecas de C*/
  10.  
  11. #include <stdio.h>
  12.  
  13. #include <conio.h>
  14.  
  15. #include <stdlib.h>
  16.  
  17. #include <string.h>
  18.  
  19.  
  20.  
  21. /*Variables globales*/
  22.  
  23. int i;
  24.  
  25. struct Alumnado
  26.  
  27. {
  28.  
  29.   char DNI[9];
  30.  
  31.   char Nombre[20];
  32.  
  33.   unsigned int Edad;
  34.  
  35.   float Nota1;
  36.  
  37.   float Nota2;
  38.  
  39.   float Nota3;
  40.  
  41. };
  42.  
  43.  
  44.  
  45. /*Declaración de Macors (#define)*/
  46.  
  47.  
  48.  
  49. /*Cabecera de nuestras funciones*/
  50.  
  51. void LeerDatos (struct Alumnado *Alumno);
  52.  
  53. void EscribirDatos (char* DNI, char* Nombre, int Edad, float Nota1, float Nota2, float Nota3);
  54.  
  55.  
  56.  
  57. /*Programa principal*/
  58.  
  59. int main()
  60.  
  61. {
  62.  
  63.   /*Bienvenida*/
  64.  
  65.  
  66.  
  67.   /*Estructuras implementadas*/
  68.  
  69.  
  70.  
  71.   /*Declaración de mis variables principales*/
  72.  
  73.   struct Alumnado Alumno[3];
  74.  
  75.  
  76.  
  77.   /*Inicialización de mis variables*/
  78.  
  79.   for (i=0; i<3; i++)
  80.  
  81.   {
  82.  
  83.     LeerDatos(&Alumno[i]);
  84.  
  85.   }
  86.  
  87.  
  88.  
  89.   for (i=0; i<3; i++)
  90.  
  91.   {
  92.  
  93.     EscribirDatos(Alumno[i].DNI, Alumno[i].Nombre, Alumno[i].Edad, Alumno[i].Nota1, Alumno[i].Nota2, Alumno[i].Nota3);
  94.  
  95.   }
  96.  
  97.  
  98.  
  99.  
  100.  
  101.   /*Declaración de mis arrays*/
  102.  
  103.  
  104.  
  105.   /*Parámetros de entrada*/
  106.  
  107.  
  108.  
  109.   /*Algoritmo principal*/
  110.  
  111.  
  112.  
  113.   /*Parámetros de salida*/
  114.  
  115.  
  116.  
  117.   /*Otros parámetros*/
  118.  
  119.   getch();
  120.  
  121.   return 0;
  122.  
  123. }
  124.  
  125.  
  126.  
  127. /*Implementación de mis funciones*/
  128.  
  129.  
  130.  
  131. /*Leer datos*/
  132.  
  133. void LeerDatos (struct Alumnado *Alumno)
  134.  
  135. {
  136.  
  137.   printf("nnAlumno numero %d", i+1);
  138.  
  139.   printf("nIntroduzca su nombre: ");
  140.  
  141.   gets(Alumno->Nombre);
  142.  
  143.   printf("nIndique su edad: ");
  144.  
  145.   scanf("%d", &Alumno->Edad);
  146.  
  147.   fflush(stdin);
  148.  
  149.   printf("nIntroduzca su DNI: ");
  150.  
  151.   gets(Alumno->DNI);
  152.  
  153.   printf("nPor favor, indique la nota de la primera evaluacion: ");
  154.  
  155.   scanf("%f", &Alumno->Nota1);
  156.  
  157.   fflush(stdin);
  158.  
  159.   printf("nPor favor, indique la nota de la segunda evaluacion: ");
  160.  
  161.   scanf("%f", &Alumno->Nota2);
  162.  
  163.   fflush(stdin);
  164.  
  165.   printf("nPor favor, indique la nota de la tercera evaluacion: ");
  166.  
  167.   scanf("%f", &Alumno->Nota3);
  168.  
  169.   fflush(stdin);
  170.  
  171. }
  172.  
  173.  
  174.  
  175.  
  176.  
  177. /*Escribir datos*/
  178.  
  179. void EscribirDatos (char* DNI, char* Nombre, int Edad, float Nota1, float Nota2, float Nota3)
  180.  
  181. {
  182.  
  183.   printf("nNombre: %s n", Nombre);
  184.  
  185.   printf("Edad: %d n", Edad);
  186.  
  187.   printf("DNI: %s n", DNI);
  188.  
  189.   printf("nNota media: %f", (Nota1+Nota2+Nota3)/3);
  190.  
  191. }
  192.  

12
C/C++ / Re: contar letras repetidas en una cadena
« en: Jueves 4 de Febrero de 2010, 21:23 »
Pon al menos el código de la matriz unidimensional para ver si es verdad que sabes. Aquí hay normas que impiden que te hagamos los ejercicios, así que pon como lo harías en una matriz unidimensional y entonces te ayudaré con la bidimensional. "Ayudaré, no haré".

13
C/C++ / Re: Numeros perfectos
« en: Martes 26 de Enero de 2010, 14:07 »
Creo que eso no es posible hacer con "scanf" debido a que el tipo de dato "%d" no puede ser una letra, por lo que no puedes evitar que te cuelen un carácter cuando quieran usando la función "scanf". Si alguien con más conocimientos sabe como hacerlo agradecería que lo pusiera pero creo que no se puede.

14
C/C++ / Re: matriz cuadrada que sume los numeros impares dentro
« en: Lunes 25 de Enero de 2010, 21:04 »
Perdona pero si no vas a aportar nada no deberías decir nada. Si profesor opina que no se hacen las tareas aquí hace bien, porque exactamente aquí no se hacen tareas, y no creo que tú puedas decirle nada a él que lleva aquí mas tiempo. De todos modos, el que preguntaba esto sólo quería hacer un ejercicio para hoy y ya es hoy, así que no creo que vuelva a entrar para leer lo que pusimos. Si vuelve a entrar y se interesa de verdad por la programación yo le corregiré ese trozo de código que puso.

15
C/C++ / Re: Problema de novato
« en: Domingo 24 de Enero de 2010, 00:54 »
Cierto, leí mal. Gracias por la correción.

16
C/C++ / Re: Problema de novato
« en: Sábado 23 de Enero de 2010, 14:59 »
%i y %d es exactamente lo mismo y se puede usar indistintamente. La verdad no se por qué hay dos para enteros pero lo investigaré. De todas formas puedes usarlas indistintamente.

Otra cosa más, recuerda lo que te dijo skull. Para que veas el resultado te dijo que añadieras "getch();", pero esto es algo que se encuentra en la biblioteca ns "conio.h". Es decir que en la cabecera del programa, a parte de añadir la "stdio.h" debes añadir esa otra.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  

17
C/C++ / Re: Numeros perfectos
« en: Sábado 23 de Enero de 2010, 14:49 »
Muy bien, me encanta como has hecho el paso de parámetros además de que ahora si que le has puesto un nombre de variable distinto a la función. El código esta bastante bien estructurado. Yo lo único que le añadiría, pero no solo a éste sino a todos son los comentarios. Puedes hacerlos de dos tipos:

Comentarios de línea: Estos los pones para las líneas que no se entiendan mucho a simple vista. Explicas que hace.

Comentarios estructurados: Por ejemplo. /*Librerías de C*/ Y debajo pones las librerías que vayas a usar. Luego /*Cabecera de las funciones*/, etc. Esto es lo que se llama esqueleto de un programa. Para los ejercicios que tu haces el esqueleto te irá muy bien. De hecho puedes hacerte tu esqueleto y guardarlo en un documento, así cuando empieces un programa nuevo, pegas el esqueleto y empiezas el programa de una forma mas clara.

Buen trabajo.

EDITADO: Una cosa que si le añadiría además al programa es este bucle para evitar un bug.
   
Código: C
  1.  do
  2.     {
  3.       printf("nCuantos numeros primos desea calcular: ");
  4.       scanf("%d", &X);
  5.       if (X < 0);
  6.       printf ("nEl número debe ser mayor que cero, vuelva a introducir un número por favor");
  7.     }
  8.     while (X < 0);
  9.  

De esta forma, si alguien mete un número negativo no se te queda en un bucle infinito.

18
C/C++ / Re: Numeros perfectos
« en: Viernes 22 de Enero de 2010, 13:04 »
Con lo ultimo que dijiste, el 4º no lo calcula porque estas utilizando variables de tipo "int". Este tipo de variables no llega a números tan altos.

Con respecto a esa línea de código...

Código: C
  1. if(N%2==0 && es_perfecto(N))
  2.  

Esto quiere decir que, Si "N" es par, y perfecto, haremos lo que hay dentro. En C no existe el tipo "Booleano" pero utiliza para ello los de tipo "int". Si es "0" falso y en cualquier otro caso verdadero. Puedes consultarlo en algún manual pero creo recordar que era así. Bueno y esa línea de código es fundamental porque si no nunca veríamos los números perfectos que van saliendo.

19
C/C++ / Ficheros
« en: Jueves 21 de Enero de 2010, 12:00 »
Bueno ya estoy empezando mi segunda semana de programación y he llegado a ficheros.

He estado leyendo sobre ellos pero no entiendo mucho de ellos.

Verán estoy creando un programa de "Salario", donde se pide la información del trabajador y luego, si se desea, se guarda en un fichero. El problema es que no se como hacer esto.
Verán, este es el codigo que llevo hasta ahora.

Código: C
  1. /*BIBLIOTECAS DE C*/
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. /*Declaración de las funciones*/
  7.  
  8. /*Inicio del algoritmo principal*/
  9. int main()
  10. {
  11.     /*Declaración de las variables del algoritmo principal*/
  12.     int horas_trabajadas, horas_extra;
  13.     char opcion;
  14.     char name_pila[15];
  15.     char name_pat[15];
  16.     char name_mat[15];
  17.     float salario_por_hora, salario_hora_ext, salario;
  18.     FILE *archivo;
  19.    
  20.     /*Petición de datos*/
  21.     do
  22.     {
  23.                printf ("nA)Introduzca la informacion de un trabajador");
  24.                printf ("nB)Guardar la informacion en un archivo de texto");
  25.                printf ("nC)Mostrar el salario de un trabajador");
  26.                printf ("nD)Salir");
  27.                scanf ("%c", opcion);
  28.                if (opcion == A)
  29.                {
  30.                           clrscr ();
  31.                           printf ("nIngrese el nombre de pila del empleado: ");
  32.                           gets (name_pila);
  33.                           printf ("nIngrese el apellido paterno del empleado: ");
  34.                           gets (name_pat);
  35.                           printf ("nIngrese el apellido materno del empleado: ");
  36.                           gets (name_mat);
  37.                           printf ("nIngrese el salario en euros por hora del empleado: ");
  38.                           scanf ("%f", &salario_por_hora);
  39.                           printf ("nIngrese las horas trabajadas del empelado: ");
  40.                           scanf ("%d", &horas_trabajadas);
  41.                           printf ("nIngrese el salario en euros por hora extra del empleado: ");
  42.                           scanf ("%f", &salario_hora_ext);
  43.                           printf ("nIngrese las horas extras realizadas: ");
  44.                           scanf ("%d", &horas_extra);
  45.                           salario = (salario_por_hora * horas_trabajadas) + (salario_hora_ext * horas_extra);
  46.                }
  47.                if (opcion == B)
  48.                {
  49.                           archivo = fopen ("DatosGuardados.txt", "at");
  50.                           if (archivo == NULL)
  51.                           {
  52.                                       printf ("nError al abrir el archivo");
  53.                           }
  54.                           else
  55.                           {
  56.  

Como veis he llegado al apartado "B", donde quiero copiar los datos que he obtenido en el apartado "A" dentro de un fichero. ¿Cómo puedo hacer esto? He intentado usar el fwrite pero no me funciona.

Gracias de antemano.

20
C/C++ / Re: Numeros perfectos
« en: Jueves 21 de Enero de 2010, 10:48 »
Yo siempre pongo las llaves para verlo mejor. En este caso no las puse porque tenía un poco de prisa pero hay que ponerlas. El único momento donde no hace falta poner las llaves es cuando dentro de el "if" or de un bucle sólamente hay una instrucción.

Por ejemplo.

Código: C
  1. if (x > 3)
  2.   x = 2
  3.  

Código: C
  1. if (x > 3)
  2. {
  3.   x = 2
  4. }
  5.  

En este caso ambas están bien.





Código: C
  1. if (x > 3)
  2.   x = 2
  3.   suma = suma + x
  4.  

Código: C
  1. if (x > 3)
  2. {
  3.   x = 2
  4.   suma = suma + x
  5. }
  6.  

En este caso no significan lo mismo. Y si lo que quieres hacer es la segunda la primera estaría mal, porque dentro del if sólo entraría la primera instrucción "x = 2".


Lo de las variables digo que es peligroso por cuestiones de ámbito. Tú no estás haciendo un único algoritmo, sino que dentro de ese algoritmo estás utilizando funciones (que son subalgoritmos) y mezclar variables globales con variables locales, así como confundir los parámetros formales puede hacer que tu programa se vea afectado. Se pueden usar pero hay que tener cuidado.

Yo te recomiendo que crees tus propias variables dentro del subalgoritmo, y que las variables que pases a un subalgoritmos las nombres con "f_" delante del nombre.

Por ejemplo, si tienes una variable que se llama x (en el programa principal), y se la vas a pasar a una función, en la cabecera y en la implementación de la función pongas "f_x", osea (int subalgoritmo (f_x);) en vez de (int subalgoritmo (x);).

Espero que te sirva de ayuda.

21
C/C++ / Re: Simulacion de nieve
« en: Miércoles 20 de Enero de 2010, 21:53 »
Necesitas utilizar unas etiquetas para tu matriz. Debes etiquetar las "coordenadas" donde ya se ha rellenado con un "copo de nieve". Si no sabes como utilizar etiquetas para identificar puntos de una matriz avísame y así puedo intentar echarte una mano. Pero intenta primero buscar por ti mismo y pensar. De todos modos si no lo encuentras podría darte la solución pero no lo haré tan rápido como con el de antes porque si no al final no lo intentáis.

 Al menos escribe aquí tu código para que podamos ver que tal vas y que te falta.

22
C/C++ / Re: Numeros perfectos
« en: Miércoles 20 de Enero de 2010, 10:57 »
Vamos a analizar tu código.
Lo primero que veo es que tu procedimiento utiliza las variables "y", "x". Esto es muy peligroso a la hora de usarlas porque el mínimo descuido supone que el programa se ejecute de forma no deseada.

Código: C
  1. void perfecto(int x);
  2.  
(Esta es tu función, y le estás pasando "x").

Código: C#
  1. while(x >= 1){
  2.         for(y = 1; ;y++){
  3.             perfecto(y);
  4.             x--;
  5.         }
  6.     }
  7.  

Aquí estás pasando (y) y luego en el procedimiento la vuelves a definir. Aquí juegas con fuego porque te repites con las variables.


Esto son unas pistas, intenta solucionarlo y si no lo consigues escribe los nuevos problemas que tienes y te iré dando más pistas. Luego te pondré explícitamente en qué estás fallando pero ahora trata de ordenar tu programa para verlo todo mejor.

EI: juntando mensajes, usa el boton Modificar por favor.

Fíjate en este código. Como verás esta mas estructurado y tiene mayor facilidad de lectura. Este programa funciona perfectamente. Intenta averiguar cuáles son las diferencias y en qué te equivocaste. Si no lo encuentras vuelve a preguntar y te diré tus fallos, pero intenta pensarlo tú mismo.

Código: C
  1. /*Bibliotecas de C*/
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5. /*Declaración de mis funciones*/
  6. int es_perfecto (int N);
  7.  
  8. /*Programa principal*/
  9. int main()
  10. {
  11.     /*Declaración de las variables*/
  12.     int X;
  13.     int N;
  14.     int pares=0;
  15.    
  16.     /*Petición de datos*/
  17.     printf("Introduce el numero de numeros perfectos que quieres averiguar: ");
  18.     scanf ("%d", &X);
  19.    
  20.     /*Algoritmo principal*/
  21.     for(N=2; pares!=X; N++)
  22.     {
  23.       if(N%2==0 && es_perfecto(N))
  24.       {
  25.               printf("%d ", N);
  26.               pares++;
  27.        }
  28.     }
  29.     getch();
  30.     return 0;
  31. }
  32.  
  33. /*Realización de la función*/
  34. int es_perfecto (int N)
  35. {
  36.     int suma = 0;
  37.     int i;
  38.  
  39.     for(i=1; i<=(N/2); i++)
  40.        if(N%i==0)
  41.      suma += i;
  42.  
  43.     if(suma==N)
  44.       return 1;
  45.  
  46.     return 0; /* el "else" no hace falta */
  47. }
  48.  

23
C/C++ / Re: Problemas con mi menú.
« en: Martes 19 de Enero de 2010, 23:31 »
Lo del clrscr(); ya lo he resuelto, y es que resulta que eso está sólo en "Borlan C". Asique he usado el "system ("CLS); y arreglado. Ahora me falta por averiguar lo de pulsar la opción si que se escriba en la pantalla. Bueno siempre que no me respondas antes de que lo encuentre jejeje.

Gracias de antemano.

24
C/C++ / Re: Problemas con mi menú.
« en: Martes 19 de Enero de 2010, 22:24 »
Ok, menuda tonteria, estoy un poco tonto jaja.  Vale eso si me funciona. Ahora hay unas cosas que no me funcionan, como el clear screen.

Utilizo la función clrscr(); en algunos puntos para que se vea un menú nuevo sin lo anterior, pero me da el siguiente error.

Citar
C:Dev-CppEjerciciosProgramacionLetraNum.cpp In function `void UnidadesDeLongitud()':
97 C:Dev-CppEjerciciosProgramacionLetraNum.cpp `clrscr' undeclared (first use this function)
  (Each undeclared identifier is reported only once for each function it appears in.)

La otra pregunta era la que hice antes. ¿Cómo hago para que al pulsar una opción no se escriba la letra que escribo, sino que directamente entre a dicha opción cuando pulso tal letra?

Gracias por contestarme a todas mis locuras jejejeje.

25
C/C++ / Re: Problemas con mi menú.
« en: Martes 19 de Enero de 2010, 22:09 »
Ya modifiqué los "scanf". Pero sigo teniendo la duda de como moverme por el menú hacia atrás.

También he encontrado otros problemas pero me gustaría plantearlos una vez que resuelva lo del menú.

Gracias.

Páginas: [1] 2