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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C]: problema punteros y archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C]: problema punteros y archivos  (Leído 1,250 veces)
andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
[C]: problema punteros y archivos
« en: 26 Noviembre 2016, 23:01 pm »

Hola, me piden que indique el nombre de un archivo (será el nombre del mes) que contiene un formato así:
Mes
Ciudad
12 15 rojo (temperatura min, max y nivel de alerta).
El caso es que el programa debe determinar cuantos dias tiene el mes para saber si es correcto o no y trabajar haciendo la media, moda y tal a partir de ese dato, reservando memoria dinamica para tal. El caso es que no consigo hacerlo funcionar. Sé que tiene algun error suelto, pero no sé identificarlos, y me estoy estresando. Además, he oído que se debe de hacer teniendo en cuenta el argv y argc pero no sé implementarlos en el programa.
Muchas gracias por leer esto, se agradece.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. /*FUNCION PARA CONTABILIZAR OS DIAS DO MES*/
  6. int seleccionar(char *mes)  {
  7.    int i=0,c;
  8.  
  9.    char meses[12][10] = {"xaneiro","febreiro","marzo","abril","maio","xunho","xullo","agosto","setembro","outubro","novembro","decembro"};
  10.    int diasmes[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
  11.  
  12.    for (i=0; i<12; i++) {
  13.        c=strcmp(mes,diasmes[i]);
  14.        if (c==0) {
  15.            break;
  16.        }
  17.        else if (i==11 && c!=0) {
  18.            printf("O mes e incorrecto, recorde que debe usar minusculas.\n");
  19.            sleep(5);
  20.            exit(0);
  21.        }
  22.    }
  23.    return diasmes[i];
  24. }
  25.  
  26. /*FUNCION CALCULO DA MEDIA*/
  27. float media(int vector[]){
  28.    float resultado;
  29.    int media=0;
  30.    int i;
  31.    for(i=0;i<32;i++){
  32.        media=vector[i]+media;
  33.    }
  34.    resultado=media/i;
  35.    return(resultado);
  36. }
  37.  
  38. /*FUNCION CALCULO DA MODA*/
  39. char moda(int amar,int naran,int rojo){
  40.    int res;
  41.  
  42.    if(amar>naran&&amar>rojo){
  43.        res=1;
  44.    }
  45.    else if(naran>amar&&naran>rojo){
  46.        res=2;
  47.    }
  48.    else if(rojo>amar&&rojo>naran){
  49.        res=3;
  50.    }
  51.    else if(amar==naran&&amar!=rojo){
  52.        res=4;
  53.    }
  54.    else if(amar==rojo&&amar!=naran){
  55.        res=5;
  56.    }
  57.    else if(naran==rojo&&naran!=amar){
  58.        res=6;
  59.    }
  60.    else if(amar==naran&&amar==rojo&&naran==rojo){
  61.        res=7;
  62.    }
  63.    return(res);
  64. }
  65.  
  66. int main(int argc, char** argv[]) {
  67.    int i=0;
  68.    int x;
  69.    int amarillo,amarillo1=0,naranja,naranja1=0,rojo,rojo1=0;
  70.    float minimo,maximo;
  71.    int mod;    
  72.  
  73.    char mes[10];
  74.    char cidade[10];
  75.    float *minimadias;
  76.    float *maximadias;
  77.    char *riscodias;
  78.  
  79.    minimadias=(float*)malloc(sizeof(float));
  80.    maximadias=(float*)malloc(sizeof(float));
  81.    riscodias=(char*)malloc(sizeof(char));
  82.  
  83.    FILE *fp;
  84.    char nombreOrg[50];
  85.    printf("Indique o nome do arquivo que desea abrir (): ");
  86.    scanf("%s",nombreOrg);
  87.    if((fp=fopen(nombreOrg, "r"))==NULL){
  88.        printf("O archivo non pode ser aberto.\n");
  89.        exit(1);
  90.    }
  91.    x=nombreOrg(seleccionar);
  92.    printf("%d",x);
  93.    {
  94.        fscanf(fp,"%s",&mes);
  95.        fscanf(fp,"%s",&cidade);
  96.  
  97.        while(feof(fp)==0){
  98.        //printf("%d\n",argc);
  99.        fscanf(fp,"%d",(minimadias+i));
  100.        fscanf(fp,"%d",(maximadias+i));
  101.        fscanf(fp,"%s",(riscodias+i));
  102.        }
  103.    }
  104.    {
  105.            amarillo=strcmp(riscodias,"amarillo");
  106.            naranja=strcmp(riscodias,"naranja");
  107.            rojo=strcmp(riscodias,"rojo");
  108.            if(amarillo==0){
  109.                amarillo1++;
  110.            }
  111.            else if(naranja==0){
  112.                naranja1++;
  113.            }
  114.            else if (rojo==0){
  115.                rojo1++;
  116.            }
  117.            i++;
  118.        }
  119.  
  120.    FILE *fp1;
  121.    fp1=fopen("salida4.txt","w");  /*Abrimos o ficheiro salida9.txt*/
  122.        if(fp1==NULL){
  123.        printf("O archivo non pode ser aberto.\n");
  124.        exit(1);
  125.    }
  126.    {  
  127.        minimo=media(minimadias);
  128.        maximo=media(maximadias);
  129.        fprintf(fp1,"O mes e %s.\n",mes);
  130.        fprintf(fp1,"A cidade e %s.\n",cidade);
  131.        fprintf(fp1,"A media das temperaturas minimas e %.2f.\n",minimo);
  132.        fprintf(fp1,"A media das temperaturas maximas e %.2f.\n",maximo);
  133.        mod=moda(amarillo1,naranja1,rojo1);
  134.  
  135.        if(mod==1){
  136.            fprintf(fp1,"%s","O nivel de risco mais repetido foi amarillo.");
  137.        }
  138.        else if(mod==2){
  139.            fprintf(fp1,"%s","O nivel de risco mais repetido foi naranja.");
  140.        }
  141.        else if(mod==3){
  142.            fprintf(fp1,"%s","O nivel de risco mais repetido foi rojo.");
  143.        }
  144.        else if(mod=4){
  145.            fprintf(fp1,"%s","O nivel de risco mais repetido foi amarillo/naranja.");
  146.        }
  147.        else if(mod==5){
  148.            fprintf(fp1,"%s","O nivel de risco mais repetido foi amarillo/rojo.");
  149.        }
  150.        else if(mod==6){
  151.            fprintf(fp1,"%s","O nivel de risco mais repetido foi naranja/rojo.");
  152.        }
  153.        else if(mod==7){
  154.            fprintf(fp1,"%s","O nivel de risco mais repetido e indeterminado.");
  155.        }
  156.    }
  157.  
  158.    fclose(fp);
  159.    fclose(fp1);
  160.    free(maximodias);
  161.    free(minimadias);
  162.    free(riscodias);
  163. }


« Última modificación: 26 Noviembre 2016, 23:33 pm por andie13 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.513



Ver Perfil
Re: URGENTE [C]: problema punteros y archivos
« Respuesta #1 en: 26 Noviembre 2016, 23:20 pm »

primero, te recomiendo no poner "urgente" eso no va a hacer que más gente te ayude (por el contrario mucho ni lo abrirían pensando que estás pidiendo que te hagan la tarea)

segundo, tu codigo es largo para que lo lean (recuerda que entre más largo y complicado menos atención tendrá tu tema, ya que por lo general la gente echa un vistazo, no va a compilar ni seguir tu programa paso a paso), indica las lineas de las cosas que tienes  y las funciones donde debería funcionar y no lo hace...

muestra que entradas diste y que resultados recibiste...


te recomiendo en primera instancia aprender a usar el debugger de tu ide... eso te resolverá mil problemas...

y tampoco entendí mucho lo que querías, sobre argv y argc, en google conseguirás bastante info de como usarlo (basicamente argc, contiene la cantidad de elementos pasados por consola, donde siempre será por lo menos 1 y argv es una array de arrays char que contendrá cada cosa (el espacio es el elemento separador) el primer elemento será siempre la llamada al mismo programa)


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: URGENTE [C]: problema punteros y archivos
« Respuesta #2 en: 26 Noviembre 2016, 23:32 pm »

es que no compila directamente, entonces no puedo usar el debugger.
Muchas gracias por los consejos. Intentaré revisar todo hasta que me funcione para detectar los errores.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.513



Ver Perfil
Re: URGENTE [C]: problema punteros y archivos
« Respuesta #3 en: 26 Noviembre 2016, 23:35 pm »

es que no compila directamente, entonces no puedo usar el debugger.
Muchas gracias por los consejos. Intentaré revisar todo hasta que me funcione para detectar los errores.

si no compila entonces más aún!!! donde están los errores de compilación? -.-
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con Punteros en C
Programación C/C++
aaronas 8 2,733 Último mensaje 2 Abril 2012, 00:12 am
por david_BS
Problema con punteros.
Programación C/C++
vazquinhos 4 1,789 Último mensaje 20 Septiembre 2012, 18:35 pm
por do-while
Problema con punteros
Programación C/C++
NEGRO_PABLO 3 1,917 Último mensaje 30 Noviembre 2012, 18:41 pm
por twins
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 3,857 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Problema con punteros.
Programación C/C++
maxim_o 2 839 Último mensaje 24 Junio 2016, 23:29 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines