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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 ... 161
901  Programación / Programación C/C++ / Re: Arreglos a funciones en: 19 Abril 2017, 18:25 pm
Una imagen vale más que mil palabras. Va un ejemplo:
Código
  1. #include <stdio.h>
  2.  
  3. void f1(int array[], size_t count) {
  4.    for(int i=0; i<count; ++i)
  5.        printf("%d ", array[i]);
  6. }
  7.  
  8. void f2(int *pointer, size_t count) {
  9.    for(int i=0; i<count; ++i)
  10.        printf("%d ", pointer[i]);
  11. }
  12.  
  13. int main() {
  14.    int my_array[] = {1, 2, 3, 4, 5};
  15.    size_t my_array_count = sizeof(my_array) / sizeof(my_array[0]);
  16.  
  17.    f1(my_array, my_array_count);
  18.    puts("");
  19.    f2(my_array, my_array_count);
  20. }
902  Programación / Programación C/C++ / Re: AYUDA!!! con un programa en C en: 18 Abril 2017, 18:20 pm
Tienes unos cuántos fallos pero el más grave es que usas strcat para llenar array. Esta función concatena cadenas, es decir, busca el valor de fin de cadena de la primera y copia la segunda a partir de ese valor, incluido.

Debes usar strcpy, que lo que hace es copiar la cadena desde el principio.

Ahora tienes unos cuantos errores más que, con el tiempo, aprenderás a solucionar.
903  Programación / Programación C/C++ / Re: Puntero a objetos c++ en: 17 Abril 2017, 17:14 pm
¿Y  no tendría más sentido que sexo fuera un enum?
904  Programación / Programación C/C++ / Re: Aiuuuda con matrices en C en: 16 Abril 2017, 00:44 am
Tu declaras:
Código:
define DIAS_PRODUCCION 7
#define NUM_PLANTAS 10

// ...
sum[DIAS_PRODUCCION]

Pero después dices:
Código:
for(num_planta=0;num_planta<NUM_PLANTAS;num_planta++){
// ...
    sum[num_planta]=suma;

Si sum está vinculada a días de producción no deberías usarla como array de número de planta. Este error, por una parte lógico, se acrecenta cuándo el número de plantas es mayor al número de días.
905  Programación / Programación C/C++ / Re: Plantilla para trabajar con archivos en lenguaje C. en: 15 Abril 2017, 23:57 pm
Así es tu código corregido:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX 80
  6.  
  7. void copiaDeSeguridad( void );
  8. void ingresarFrase( char frase[] );
  9. void copiar( char frase[] );
  10. void errorEscritura( void );
  11. void mensaje( void );
  12.  
  13. int main( void ){
  14. char frase[MAX];
  15.  
  16. copiaDeSeguridad( );
  17. ingresarFrase( frase );
  18. copiar( frase );
  19.  
  20. return EXIT_SUCCESS;
  21. }
  22.  
  23.  
  24. void copiaDeSeguridad( void ){
  25.    FILE *ptrGuiaTel;
  26.    FILE *ptrGtTemp;
  27. char c, x;
  28.  
  29. if( !( ptrGuiaTel = fopen( "archGuiaTel.txt", "r" ))){
  30. mensaje();
  31. exit(1);
  32. }
  33. if( !( ptrGtTemp = fopen( "archGtTemp.txt", "w" ))){
  34. mensaje();
  35. exit(1);
  36. }
  37.  
  38. c = fgetc( ptrGuiaTel );
  39. while ( c != EOF ){
  40. x = fputc( c, ptrGtTemp );
  41. if (x != c){
  42. mensaje();
  43. exit(1);
  44. }
  45. c = fgetc( ptrGuiaTel );
  46. }
  47.  
  48. if( ( fclose( ptrGuiaTel ) ) ){
  49. mensaje();
  50. exit(1);
  51. }
  52. if( ( fclose( ptrGtTemp ) ) ){
  53. mensaje();
  54. exit(1);
  55. }
  56. }
  57.  
  58. void ingresarFrase( char frase[] ){
  59. int ok=0;
  60.  
  61. do{
  62. printf( "\n Ingrese frase.....:" );
  63. fgets( frase, MAX, stdin );
  64. ok = strlen( frase );
  65. }while( ok <= 1 );
  66. }
  67.  
  68. void copiar( char frase[] ){
  69.    FILE *ptrGuiaTel;
  70.  
  71. if( !(ptrGuiaTel = fopen( "archGuiaTel.txt", "a" ))){
  72. mensaje();
  73. exit(1);
  74. }
  75.  
  76. fprintf( ptrGuiaTel, "%s", frase );
  77.  
  78. if( fflush( ptrGuiaTel ) != 0){
  79. mensaje();
  80. fclose( ptrGuiaTel );
  81. errorEscritura( );
  82. exit(1);
  83. }
  84.  
  85. if( ( fclose( ptrGuiaTel ) ) ){
  86. mensaje();
  87. exit(1);
  88. }
  89. }
  90.  
  91. void errorEscritura( void ){
  92.  
  93. if( rename("archGtTemp.txt","archGuiaTel.txt") !=0 ){
  94. mensaje();
  95. exit(1);
  96. }
  97.  
  98. if(remove( "archGuiaTel.txt") !=0 ){
  99. mensaje();
  100. exit(1);
  101. }
  102. }
  103.  
  104. void mensaje( void ){
  105. int ch, a;
  106.  
  107. printf( "\n Ha ocurrido un error y el programa finaliza sin cambios en el archivo." );
  108. printf( "\n Pulse una tecla para continuar..."); a = getchar();
  109. if( a != '\n') while ((ch = getchar()) != EOF && ch != '\n');
  110. }
906  Programación / Programación C/C++ / Re: Ayuda ejercicio C en: 13 Abril 2017, 17:31 pm
Copia los errores y warnings que te da el compilador.
907  Programación / Programación C/C++ / Re: Cuadrado [Nuevo] en: 12 Abril 2017, 18:13 pm
A simple vista veo que el for de la línea 14 está mal construido. Asignas en la inicialización y en la decisión.
908  Programación / Programación C/C++ / Re: Ayuda ejercicio C en: 12 Abril 2017, 18:01 pm
El otro problema que podrías tener es el uso del include conio.h. Muy pocos compiladores lo soportan, además no usas ninguna función de esta librería.
909  Programación / Programación C/C++ / Re: Plantilla para trabajar con archivos en lenguaje C. en: 11 Abril 2017, 19:58 pm
No lo he probado pero estilísticamente está mal.

Usas los argumentos de las funciones como una forma de declarar variables locales. Los argumentos solo deberían usarse para que las funciones se comunicasen datos entre llamadas.

Cuando usas argumentos el compilador genera espacio en la pila para alojar dicho dato y después copia el dato que se va a pasar en esa nueva localidad.

He visto que llevas usando esta técnica desde hace tiempo, pero deberías cambiarla lo más pronto posible: declarar variables locales dentro del cuerpo de las funciones y usar los argumentos únicamente para pasar datos.
910  Programación / Programación C/C++ / Re: cual es el error en este codigo fuente?? en: 11 Abril 2017, 18:33 pm
Vale, confundes dos cosas: La definición de tipos con typedef y la definición de un array de structs en la misma declaración.

Tu has escrito:
typedef struct { ... }

Esto después de la última llave espera un identificador para un tipo de dato. Sin embargo dices:
} prefijos[N]=...

Con eso lo que quieres es definir una variable array de structs. Esta construcción no puede ir junta.

En tu caso lo que debes hacer es quitar la palabra clave typedef y dejar

struct { ... } prefijos[N]=...

Con esto tendrás un array de N estructuras anónimas (no podrás usar ese tipo en ningún otro sitio del programa para crear más datos).

Pero aún así tienes otro problema:
Cuando inicializas el array haces: prefijos[N]={ ... }.

Esto está bien para un array de elementos simples, pero estás inicializando estructuras de dos elementos, así que deberías hacerlo así:

prefijos[N]={ {elem1, elem2}, {elem1, elem2}, ... , {elem1, elem2} };

En conjunto la nueva definición es esta:
Código
  1. struct {
  2.    char* prefijo;
  3.    int exponente;
  4. } prefijos[N] = {{"femto",  -15},
  5.                 {"pico",   -12},
  6.                 {"nano",   -9},
  7.                 {"micro",  -6},
  8.                 {"mili",   -3},
  9.                 {"kilo",   3},
  10.                 {"mega",   6},
  11.                 {"giga",   9},
  12.                 {"tera",   12}};
Páginas: 1 ... 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines