01 dic

Ejercicios y practicas resueltas de c ( 5 )

Por admin

No. 2 de 27 de articulos.

Articulos encontrados...

Nueva practica o ejercicio resuelto de programación en el lenguaje c, para que completes tu teleformacion con nuestros cursos online gratuitos.


Enunciado del ejercicio:

Realizar un programa en el lenguaje de programación c, que lea una matriz de un fichero, realiza la traspuesta de dicha matriz y la almacene en un fichero nuevo. Los nombres de los archivos se han de solicitar utilizando la línea de comandos como si de un comando ms-dos o Linux se tratara. Se ha de solicitar tanto el nombre del archivo origen como el nombre del archivo destino.

El ejercicio y practicas resuelta a continuación:

#include <stdio.h>
#include <stdlib.h>
// Predefinición de funciones

int Existe(char *);

// Función principal

int main(int argc,char *argv[])
{
    // Comprobación del numero de parámetros recibido
    if(argc!=3) {
        printf("\n¡Faltan parámetros");
        printf("\nFormato: comando fichero_origen fichero_destino");
        exit(1);
    }

    // Comprobación de ficheros
    if(Existe(argv[1])==1) {
        printf("\nEl fichero de origen no se ha encontrado o no existe...");
        exit(1);
    }

    // Declaración de variables necesarias
    FILE *fichero;
    int filas;
    int columnas;
    float **matriz1=NULL;
    int contador;
    int contador1;

    // Abrir archivo en modo lectura
    fichero=fopen(argv[1],"rt");
    // Leer filas y columnas
    fscanf(fichero,"%d %d",&filas,&columnas);
    printf("%d %d",filas,columnas);
    // Realizar la reserva de memoria para las matrices
     matriz1=(float **)malloc(sizeof(float *)*filas);
    for(contador=0;contador<filas;contador)
    {
        matriz1[contador]=(float *)malloc(sizeof(float)*columnas);
    }
    // Asignar datos de la matriz
    for(contador=0;contador<filas;contador++)
    {
        for(contador1=0;contador1<columnas;contador1++)
        {
            fscanf(fichero,"%f",&matriz1[contador][contador1]);
        }
    }
    fclose(fichero);
    printf("\n");
    for(contador=0;contador<filas;contador++)
    {
        for(contador1=0;contador1<columnas;contador1++)
        {
            printf("%.2f ",matriz1[contador][contador1]);
        }
        printf("\n");
    }

    // visualizar traspuesta
    printf("\n%d %d\n",columnas,filas);
    for(contador=0;contador<columnas;contador++)
    {
        for(contador1=0;contador1<filas;contador1++)
        {
            printf("%.2f ",matriz1[contador1][contador]);
        }
        printf("\n");
    }

    fichero=fopen(argv[2],"wt");
    if(!fichero)
    {
        printf("\nERROR No se ha podido crear el archivo destino...");
        exit(1);
    }
    // grabar traspuesta
    fprintf(fichero,"%d %d\n",columnas,filas);
    for(contador=0;contador<columnas;contador++)
    {
        for(contador1=0;contador1<filas;contador1++)
        {
            fprintf(fichero,"%.2f ",matriz1[contador1][contador]);
        }
        fprintf(fichero,"\n");
    }
    // cerrar archivo
    fclose(fichero);
    // liberar memoria
    for(contador=0;contador<filas;contador++)
    {
        free(matriz1[contador]);
    }
    free(matriz1);
    return 0;
}

// Funcion Existe

int Existe(char *nombre_fichero)
{
    FILE *fichero;
    int resultado=0;  // 0 = existe 1 = no existe

    fichero=fopen(nombre_fichero,"rt");
    if(fichero!=NULL)
    {
        fclose(fichero);
    }
    else
    {
        resultado=1;
    }
    return resultado;
}

Navegacion SeriesAnterior en la serie...Siguiente en la serie...


Deja un comentario




Will not be published



Navegacion

Te podria interesar...

anteriorpausasiguiente

Dame Animo… haz clic !!!

Buscar en Google

Interesa ver…

Referencias

Sitio seleccionado por
el Directorio Flesko


Blog Directory, Find A Blog, Submit A Blog, Search For The Best Blogs
Blog Directory