Blog Archives

01 dic

Ejercicios y practicas resueltas de C ( 4 )

By admin

No. 1 de 27 de articulos.

Otro nuevo ejercicio de c para seguir el curso de teleformacion y así poder practicas con ejemplos uno de tus lenguajes de programación favorito.


Enunciado del ejercicio:

Realizar un programa que invierta un fichero de texto creando uno nuevo ( es decir el fichero de destino o final ha de tener el contenido del primero u origen pero al revés ), en vez de solicitar los nombres de archivos en el programa se utiliza la línea de parámetros como si de una orden de linux o ms-dos se tratara. Se utiliza para leer y grabar las funciones fread y fwrite, realizando una reserva de memoria dinámica con la función malloc, y la función free para liberar la memoria utilizada. El ejercicio se ha realizado utilizando el editor Code Blocks bajo Windows 7 y probado en la consola de comandos de Windows 7.






El ejercicio resuelto es el siguiente:

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

// Predefinición de funciones

int Existe(char *);
long int Tamanyo(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;
    long int cuantos;
    char *reserva=NULL;
    int contador;

    // Abrir archivo en modo lectura
    fichero=fopen(argv[1],"rt");
    // Averiguar el tamaño del archivo
    cuantos=Tamanyo(argv[1]);
    // Realizar la reserva de memoria correspondiente al tamanyo del fichero
    reserva=(char *)malloc(sizeof(char)*cuantos);
    // leer el archivo completo y almacenarlo en la variable reserva
    fread(reserva,sizeof(char),cuantos,fichero);
    // Cerrar fichero de origen
    fclose(fichero);
    // abrir archivo destino
    fichero=fopen(argv[2],"wt");
    // en caso de error devolver error y salir
    if(!fichero) {
        printf("\nNo se ha podido crear el archivo destino...");
        exit(1);
    }
    // si no existe error recorrer el vector creado en orden inverso
    // y almacenarlo en el archivo destino
    printf("\nInvertir archivo");
    for(contador=cuantos;contador>=0;contador--)
    {
        fwrite(&reserva[contador],sizeof(char),1,fichero);
        printf(".");
    }
    // cerrar el archivo destino
    fclose(fichero);
    // finalizar programa
    printf("Ok\n");
    // Liberar memoria
    free(reserva);
    return 0;
}

// Función 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;
}

// Función contador

long int Tamanyo(char *nombre_fichero)
{
    FILE *fichero;
    long int contador=0;
    char caracter=0;

    fichero=fopen(nombre_fichero,"rt");
    fread(&caracter,1,sizeof(caracter),fichero);
    while(!feof(fichero))
    {
        contador++;
        fread(&caracter,1,sizeof(caracter),fichero);
    }
    fclose(fichero);
    return contador;
}





01 dic

Ejercicios y practicas resueltas de c ( 5 )

By admin

No. 2 de 27 de articulos.

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;
}

12 ene

Ejercicios y practicas resueltas de c ( 6 )

By admin | 33 comments

33
No. 3 de 27 de articulos.

Otro ejercicio de programación en c, para ir completando los ejercicios y practicas a resolver.

Enunciado del ejercicio:








Realizar un programa que solicite un numero entero por teclado y a continuación visualice por pantalla todos los números primos entre 1 y el numero introducido.

El ejercicio y practica resuelta a continuación:

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

int EsPrimo(int);
// Función principal

int main(int argc,char *argv[])
{
   int numero;
   int valores;
   // Solicitar por pantalla el numero
   printf(“Teclear No.: “);
   scanf(“ %d”,&numero);
   // Visualizar todos los números primos entre 1 y el numero
   // se utilizara una función para saber si un numero es primo o no
   for(valores=1;valores<=numero;valores++)
   {
       if(EsPrimo(valores)==0)
         printf(“El valor %d es primo\n”);
   }
   return 0;
}
// Funciones desarrolladas
// la funcion devuelve 0 si el numero es primo en caso contrario 1
int EsPrimo(int Valor)
{
  int primo=0;
  int divisores=0;
  // Calcular divisores del numero
  for(divisores=2;divisores<Valor-1 && primo==0;divisores++)
  {
    // Comprobar si existe un divisor
    if(Valor%divisores==0) primo=1;
  }
  return primo;
}








Ejercicios y practicas: Aclaraciones

Esperamos que os sean de ayuda estos ejercicios y practicas de programacion en lenguaje c en vuestros estudios, bien sean en modalidad de teleformacion o presenciales en vuestros institutos. Los cursos, practicas o ejercicios que se solucionan no pretenden ser la unica solucion posible, asi que si vuestro profesor os dice que hay un error, o es mejor realizar el ejercicio de otra forma, hacerle caso y ayudarnos a nosotros presentando diferentes soluciones utilizando para ello los comentarios.

17 may

Ejercicios y practicas de programación en c ( 7 )

By admin

No. 4 de 27 de articulos.





Un ejercicio nuevo de c sobre ficheros, para complementar tu formación en nuestro portal de cursos online y de teleformacion.

El ejercicio consiste en realizar un programa el cual ha de leer de un archivo 10 valores numéricos y a continuación crear un vector en memoria de forma dinámica. Se ha de solicitar un valor numérico por consola y multiplicar cada uno de los elementos del vector por dicho valor numérico, una vez realizado todos los procesos cerrar el archivo y liberar la memoria utilizada por el vector.

 

Solución al ejercicio planteado:

#include <stdio.h>
#include <stdlib.h>
int main()

{

    // Variables a utilizar

    int cuantos;
    int *Vector;
    FILE *fichero;
    int numero;
    int contador;

    // Crear array dinamico de memoria
    cuantos=10;
    Vector=(int *)malloc(sizeof(int)*cuantos);

    // leer archivo de datos y asignar los valores al array dinamico
    fichero=fopen("archivo.dat","rt");
    if(!fichero) {
        printf("\nError en la apertura del archivo archivo.dat. Compruebe que exista.");
        exit(1);
    }

    // prelectura
    fscanf(fichero,"%d\n",&numero);
    contador=0;
    while(!feof(fichero) && contador<10)
    {
        Vector[contador]=numero;
        contador++;
        fscanf(fichero,"%d\n",&numero);
    }

    // Cerrar archivo
    fclose(fichero);

    // pedir valor numerico

    printf("\nTeclee valor numerico ...: ");
    scanf(" %d",&numero);

    for(contador=0;contador<10;contador++) {
        Vector[contador]*=numero;
        printf("\n-> %d ",Vector[contador]);
    }

    // liberar memoria y salir del programa
    free(Vector);

    return 0;

}





25 may

Ejercicios y practicas de programación en ( 8 )

By admin

No. 5 de 27 de articulos.



Nuevo ejercicio de programación en c, para que puedas practicar este lenguaje base en el aprendizaje de programación. Los ejercicios resueltos no tienen un orden especifico en su complejidad, por lo tanto te puedes encontrar con ejercicios que para personas noveles en la programación resulten dificiles de comprender, busca las practicas que mas se ajusten a tus necesidades en base a tu nivel. Gracias por visitar el sitio web, un saludo y aprende desde tu casa.

Planteamiento de la practica de programación

El ejercicio planteado hoy es que el programa realice una serie de peticiones de notas de alumnos, hasta que se teclee un valor –1 para finalizar la introducción de notas. Una vez finalizada la introducción de notas se han de visualizar cuantos alumnos han aprobado y suspendido, asi como cuantos han sacado notas englobadas de la siguiente forma:

de 5 a 6 – suficiente

de 6 a 7 – bien

de 7 a 8 – notable

de 9 o superior – sobresaliente

Vuelvo a recordaros, que no pretendo dar lecciones de como se ha de programar un ejercicio, ya que puede haber muchas formas de resolverlo, esto no significa que la practica resuelta que aqui planteamos sea la mas correcta, de hecho siempre estoy dispuesto a añadir correcciones o nuevos planteamientos a la misma, si me los dejais en un comentario…

Practica resuelta de programacion en c

#include <stdio.h>
#include <stdlib.h>
int main()
{
    // Declaracion de variables
    int nota=0;
    int positivos=0;
    int negativos=0;
    int aprobados=0;
    int suspendidos=0;
    int bien=0;
    int notable=0;
    int sobresaliente=0;
    int suficiente=0;

    // Solicitar notas hasta teclear -1
    printf("\nNotas de los alumnos. (Para finalizar -1 )\n");
    do
    {
        printf("Nota...: ");
        scanf(" %d",&nota);
        // controlar si se quiere finalizar o no
        if(nota!=-1)
        {
            // controlar valores positivos y negativos
            if(nota>0)
                positivos++;
            else if(nota<0)
                negativos++;
            // controlar aprobados suspendidos
            if(nota<5)
                suspendidos++;
            else
                aprobados++;
            // controlar calificaciones
           if(nota>=5 && nota<6)
                suficiente++;
            else if(nota>=6 && nota<=7)
                bien++;
            else if(nota>=7 && nota<9)
                notable++;
            else if(nota>=9)
                sobresaliente++;
        }
    } while(nota!=-1);

    // Visualizar resultados
    printf("\nNOTAS DE LOS ALUMNOS");
    printf("\nAlumnos aprobados ...............: %d",aprobados);
    printf("\nAlumnos suspendidos .............: %d",suspendidos);
    printf("\nAlumnos con nota suficiente .....: %d",suficiente);
    printf("\nAlumnos con nota bien ...........: %d",bien);
    printf("\nAlumnos con nota notable ........: %d",notable);
    printf("\nAlumnos con nota sobresaliente ..: %d",sobresaliente);
    // Realizar calculos correspondientes

    return 0;
}





01 jun

Ejercicios y practicas de programación en c ( 9 )

By admin

No. 6 de 27 de articulos.

 

Nuevo articulo para que sigas tus estudios online con nosotros, solucionando problemas, practicas y ejercicios realizados con el lenguaje de programación c.

 

Saber si un numero es primo o no

Planteamiento del ejercicio:

Se ha de solicitar por teclado un numero entero positivo, para finalizar el programa se ha de teclear el valor –1, en caso de ser el numero valido se ha de indicar si el numero es primo o no.

Solución al ejercicio propuesto:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    // Variables a utilizar en el programa
    int numero=0;
    int divisores=0;
    int primo=0; // primo = 0 no primo = 1

    // Solicitar numero entero hasta valor -1
    do
    {
        printf("\nNumero.....: ");
        scanf(" %d",&numero);
        if(numero!=-1 && numero>0)
        {
            // el numero es valido comprobar si es primo
            primo=0;
            divisores=2;
            while(divisores<numero  && primo!=1)
            {
                if(numero%divisores==0) primo=1;
                divisores++;
            }
            // Si primo vale 0 es que el numero es primo
            if (primo==0)
            {
                printf("\nEl numero %d es primo",numero);
            }
            else
            {
                printf("\nEl numero %d no es primo",numero);
            }
        }
    } while(numero!=-1);
    return 0;
}






Navegacion

anteriorpausasiguiente

Dame Animo… haz clic !!!

Buscar en Google

Te podria interesar...

Interesa ver…

Referencias

Sitio seleccionado por
el Directorio Flesko


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