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)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: [C] Problema con nombres de ficheros en: 23 Diciembre 2010, 22:30 pm
Gracias por tus consejos dooque. Este es el código de mi programa (en realidad hay más funciones, pero no tienen nada que ver con lo que pregunto):

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAXCAR 50
  5. #define TAM 300
  6.  
  7. int cargarFichero1(char [MAXCAR], char [TAM]);
  8. int cargarFichero2(char [MAXCAR], char [TAM]);
  9. void guardarMatrizDePuntos(char [MAXCAR], char [TAM], int, char [TAM], int);
  10. void main()
  11. {
  12.    char nomFich1[MAXCAR],nomFich2[MAXCAR],fichSal[MAXCAR];
  13.    char s1[TAM],s2[TAM];
  14.    int n1,n2,i,j;
  15.  
  16.    do
  17.    {
  18.        n1=cargarFichero1(nomFich1,s1);
  19.    }
  20.    while (n1==-1);
  21.  
  22.    do
  23.    {
  24.        n2=cargarFichero2(nomFich2,s2);
  25.    }
  26.    while(n2==-1);
  27.  
  28.  
  29.    for (i=0;nomFich1[i]!='.';i++)
  30.    {
  31.        fichSal[i]=nomFich1[i];
  32.    }
  33.    fichSal[i]='-';
  34.    i++;
  35.    for(j=0;nomFich2[j]!='.';j++)
  36.    {
  37.        fichSal[i]=nomFich2[j];
  38.        i++;
  39.     }
  40.     strcat(fichSal,".out");
  41.     guardarMatrizDePuntos(fichSal,s1,n1,s2,n2,puntos);
  42. }
  43.  
  44.  
  45. int cargarFichero1(char nomFich [MAXCAR], char s[TAM])
  46. {
  47.    FILE *f;
  48.    int i,cont;
  49.    printf("Introduce el nombre del fichero con la primera secuencia (sin extension): ");
  50.    gets(nomFich);
  51.    strcat(nomFich,".sec");
  52.    f=fopen(nomFich,"r");
  53.    if (f==NULL)
  54.    {
  55.        printf("ERROR: El fichero %s no se pudo abrir\n",nomFich);
  56.        return -1;
  57.    }
  58.    else
  59.    {
  60.        i=0;
  61.        cont=-2;
  62.        s[i]=fgetc(f);
  63.        while (!feof(f))
  64.        {
  65.            i++;
  66.            s[i]=fgetc(f);
  67.            cont++;
  68.        }
  69.        fclose(f);
  70.        return cont;
  71.    }
  72. }
  73.  
  74.  
  75. int cargarFichero2(char nomFich [MAXCAR], char s[TAM])
  76. {
  77.    FILE *f;
  78.    int i,cont;
  79.    printf("Introduce el nombre del fichero con la segunda secuencia (sin extension): ");
  80.    gets(nomFich);
  81.    strcat(nomFich,".sec");
  82.    f=fopen(nomFich,"r");
  83.    if (f==NULL)
  84.    {
  85.        printf("ERROR: El fichero %s no se pudo abrir\n",nomFich);
  86.        return -1;
  87.    }
  88.    else
  89.    {
  90.        i=0;
  91.        cont=-2;
  92.        s[i]=fgetc(f);
  93.        while (!feof(f))
  94.        {
  95.            i++;
  96.            s[i]=fgetc(f);
  97.            cont++;
  98.        }
  99.        fclose(f);
  100.        return cont;
  101.    }
  102. }
  103.  
  104.  
  105. void guardarMatrizDePuntos(char nomFich[MAXCAR], char s1[TAM], int n1, char s2[TAM], int n2)
  106. {
  107.    FILE *f;
  108.    f=fopen(nomFich,"w");
  109.    if (f==NULL)
  110.        printf("Error al crear el fichero");
  111.    else
  112.    {
  113.        fprintf(f,"# MATRIZ DE PUNTOS #\n");
  114.        fprintf(f,"\n");
  115.        fprintf(f," ");
  116.        fprintf(f,"%s\n",s2);
  117.    }
  118.    fclose(f);
  119. }

Ese es el código en el cual intervienen las variables de mi problema. Cuando llamo a la última función (guardarMatrizDePuntos), siempre me muestra por pantalla "Error al crear el fichero"
2  Programación / Programación C/C++ / [C] Problema con nombres de ficheros en: 23 Diciembre 2010, 15:59 pm
Hola a todos. Estoy realizando un programa en C, en el cual inicialmente abro dos archivos, cuyos nombres de quedan almacenados en 2 cadenas de caracteres y son los siguientes:

caso1.sec
caso2.sec

Pues bien, mi problema viene es que ahora necesito crear un fichero de salida que contenga los nombres de cada uno (sin la extensión) separados por un -, y la extensión .out. Quedaría de esta manera:

caso1-caso2.out

Y por más que lo intento, no consigo sacarlo. No puedo escribir directamente "caso1-caso2.out" ya que los nombres de los ficheros pueden ser diferentes, tengo que hacerlo de modo general. Lo he intentado con el siguiente código, pero me da error (me devuelve NULL) a la hora de crear el fichero .out:

Código
  1. for (i=0;nomFich1[i]!='.';i++)
  2.            {
  3.                fichSal[i]=nomFich1[i];
  4.            }
  5.            fichSal[i]='-';
  6.            i++;
  7.            for(j=0;nomFich2[j]!='.';j++){
  8.                fichSal[i]=nomFich2[j];
  9.                i++;
  10.            }
  11.            strcat(fichSal,".out");

Donde nomFich1 es la cadena donde está almacenado "caso1.sec", nomFich2 donde se encuentra "caso2.sec" y fichSal nombre del fichero que debo crear.

¿Dónde está el fallo? ¿Hay alguna manera más fácil de realizar lo que pido?

Gracias!
3  Programación / Programación C/C++ / Re: Duda búsqueda en C en: 18 Noviembre 2010, 23:44 pm
Muchas gracias a todos, por fin he conseguido que me indique la hora a la que se produce el máximo valor =)

Sagrini, gracias por el "refinamiento" del código. Llevo programando en C desde hace sólo 1 mes y medio (una asignatura de mi carrera, Biotecnología) y aún me cuesta ponerlo "bonito" del todo, aunque todo se andará

Akai, uso un vector de 25 posiciones ya que debo poner también la temperatura a las 24 horas de ese día (a la primera hora del día siguiente) y empezando desde la posición 0, necesitos 25 sitios para llegar a las 24 horas (es decir, pongo la temperatura a cada hora justa, no a lo largo de cada hora)
4  Programación / Programación C/C++ / Duda búsqueda en C en: 18 Noviembre 2010, 11:51 am
Hola a todos. Estoy realizando un programa en C el cual pide la temperatura a lo largo de 24 horas (almacenadas en una tabla unidimensional con 24 valores), para luego realizar:

a) La media
b) Mostrar la temperatura máxima y la hora a la que se produjo

A la hora de realizar la media y mostrar la máxima lo hago bien, pero tengo problemas para que me muestre la hora a la que se produjo. Para mostrar la temperatura máxima ordeno los valores de la tabla de manera creciente, pero si hago esto, el valor más grande (el último) no corresponde con la hora del día en que fue, ya que ha sido cambiado de posición.

Este es el cógido que llevo hasta ahora:

Código
  1. #include <stdio.h>
  2. #define N 25
  3.  
  4. void main(){
  5.    float temp[N],suma,aux;
  6.    int i,j,k,menor;
  7.    printf("Introduzca las temperaturas por cada hora (de 0 a 24 h):\n");
  8.    for(i=0;i<N;i++)
  9.    scanf("%f",&temp[i]);
  10.    suma=0;
  11.    for(i=0;i<N;i++)
  12.    suma=suma+temp[i];
  13.    printf("La temperatura media a lo largo del dia es de %f C",suma/25);
  14.    for(i=0;i<N;i++){
  15.        for(j=i+1,menor=i;j<N;j++){
  16.            if(temp[j]<temp[menor])
  17.            menor=j;
  18.            }
  19.        aux=temp[i];
  20.        temp[i]=temp[menor];
  21.        temp[menor]=aux;
  22.        }

Así consigo que se me ordeno, pero como digo, no sé de qué manera almacenar el valor de i (que coincide con las horas) donde se encuentra la mayor temperatura en otra variable para que me la muestre luego.

Muchas gracias!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines