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

#831
He intentado compilar el código y tiene muchos errores. Podría resolverlos pero, la verdad, me ha dado pereza. Si pudieras corregir el código para que no haya mas errores que el lógico que intentas resolver sería de agradecer.
#832
Sí, pero de seguro ese no es el efecto que debes buscar. ¿Por qué repites 50 veces el bucle? Porqué no es por las 50 posiciones del array porqué eso debes tratarlo de otra forma.

Los menús se hacen de otra forma:
Algo así:
- BUCLE MENÚ
- Imprime Título
- Imprime primera opción
- Imprime segunda opción
- ...
- Imprime la opción de salida
-
- Pide la opción a elegir
- Si la opción no está en el menú repetir el menú
- Asociar a cada opción una función diferente, cada función iniciará el trabajo que se espera.
- Si la opción elegida es la de salir terminar el BUCLE MENÚ
- Repetir el BUCLE MENÚ
#833
Tienes unos cuantos errores, pero empecemos por el primero:
La lógica de la función main está mal planteada. Repites 50 veces en bucle la función y no puedes salir de él aunque uses la función 6 del menú. Eso no debería ser así sino que el bucle debería repetirse mientras no se elija la función 6.

Cuando soluciones eso podremos continuar.
#834
Programación C/C++ / Re: Arreglos a funciones
19 Abril 2017, 18:25 PM
Una imagen vale más que mil palabras. Va un ejemplo:
#include <stdio.h>

void f1(int array[], size_t count) {
    for(int i=0; i<count; ++i)
        printf("%d ", array[i]);
}

void f2(int *pointer, size_t count) {
    for(int i=0; i<count; ++i)
        printf("%d ", pointer[i]);
}

int main() {
    int my_array[] = {1, 2, 3, 4, 5};
    size_t my_array_count = sizeof(my_array) / sizeof(my_array[0]);
   
    f1(my_array, my_array_count);
    puts("");
    f2(my_array, my_array_count);
}
#835
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.
#836
¿Y  no tendría más sentido que sexo fuera un enum?
#837
Tu declaras:
define DIAS_PRODUCCION 7
#define NUM_PLANTAS 10

// ...
sum[DIAS_PRODUCCION]


Pero después dices:
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.
#838
Así es tu código corregido:

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

#define MAX 80

void copiaDeSeguridad( void );
void ingresarFrase( char frase[] );
void copiar( char frase[] );
void errorEscritura( void );
void mensaje( void );

int main( void ){
char frase[MAX];

copiaDeSeguridad( );
ingresarFrase( frase );
copiar( frase );

return EXIT_SUCCESS;
}


void copiaDeSeguridad( void ){
    FILE *ptrGuiaTel;
    FILE *ptrGtTemp;
char c, x;

if( !( ptrGuiaTel = fopen( "archGuiaTel.txt", "r" ))){
mensaje();
exit(1);
}
if( !( ptrGtTemp = fopen( "archGtTemp.txt", "w" ))){
mensaje();
exit(1);
}

c = fgetc( ptrGuiaTel );
while ( c != EOF ){
x = fputc( c, ptrGtTemp );
if (x != c){
mensaje();
exit(1);
}
c = fgetc( ptrGuiaTel );
}

if( ( fclose( ptrGuiaTel ) ) ){
mensaje();
exit(1);
}
if( ( fclose( ptrGtTemp ) ) ){
mensaje();
exit(1);
}
}

void ingresarFrase( char frase[] ){
int ok=0;

do{
printf( "\n Ingrese frase.....:" );
fgets( frase, MAX, stdin );
ok = strlen( frase );
}while( ok <= 1 );
}

void copiar( char frase[] ){
    FILE *ptrGuiaTel;
   
if( !(ptrGuiaTel = fopen( "archGuiaTel.txt", "a" ))){
mensaje();
exit(1);
}

fprintf( ptrGuiaTel, "%s", frase );

if( fflush( ptrGuiaTel ) != 0){
mensaje();
fclose( ptrGuiaTel );
errorEscritura( );
exit(1);
}

if( ( fclose( ptrGuiaTel ) ) ){
mensaje();
exit(1);
}
}

void errorEscritura( void ){

if( rename("archGtTemp.txt","archGuiaTel.txt") !=0 ){
mensaje();
exit(1);
}

if(remove( "archGuiaTel.txt") !=0 ){
mensaje();
exit(1);
}
}

void mensaje( void ){
int ch, a;

printf( "\n Ha ocurrido un error y el programa finaliza sin cambios en el archivo." );
printf( "\n Pulse una tecla para continuar..."); a = getchar();
if( a != '\n') while ((ch = getchar()) != EOF && ch != '\n');
}
#839
Programación C/C++ / Re: Ayuda ejercicio C
13 Abril 2017, 17:31 PM
Copia los errores y warnings que te da el compilador.
#840
Programación C/C++ / Re: Cuadrado [Nuevo]
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.