Ir al contenido principal

Un ejemplo con funciones en C

/*
Realizar un programa en C que mediante arrays guarde las notas de N alumnos,
el programa debe verificar que la nota sea real (de 0 a 10). 
también debe poder guardar los promedios. 
Debe poder imprimir todos los datos 
y tiene que permitir hacer busquedas especificas sobre un alumno
Por ejemplo debe poder consultar sus notas y promedio, mediante su codigo de alumno, 

 */

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

//se define el maximo numero de elementos que puede tener el array
#define MAX 100
#define TRUE 1
#define FALSE 0

/*
    el array alumno[MAX][4] es de tipo global
    lo que significa que
    nos ahorraremos de enviarselo como parametro a las funciones que lo necesitan,
    las funciones pueden acceder directamente 
*/
float alumno[MAX][4];

int verificar_Codigo(int codigo, int cant)//retorna TRUE si el codigo de alumno existe
{
    if(codigo>=0 && codigo<cant)
        return TRUE;
    else
        return FALSE;
}
void iniciar_Notas(int cant)//inicia en cero todas las notas y promedios
{
    int i;
    for(i=0;i<cant;i++)
    {
        alumno[i][0]=0.0;
        alumno[i][1]=0.0;
        alumno[i][2]=0.0;
        alumno[i][3]=0.0;
    }
}
int ingresar(int codigo, float nota1,float nota2, float nota3)
{//ingresa 3 notas en el codigo del alumno
    //primero verificar que las notas sean correctas
    if(nota1>=0 && nota1<=10 && nota2>=0 && nota2<=10 && nota3>=0 && nota3<=10)
    {
        alumno[codigo][0] = nota1;
        alumno[codigo][1] = nota2;
        alumno[codigo][2] = nota3;
        alumno[codigo][3] = (nota1+nota2+nota3) / 3.0;
        return TRUE;//los datos se insertaron con exito
    }
    else
        return FALSE;//entonces se pudieron insertar los datos
}

void ingresar_Todo(int cant)//
{//pide todas las notas de todos los alumnos uno a uno
    int i;
    for(i=0;i<cant;i++)
    {
        printf("CODIGO: %d\n",i);
        printf("Ingrese la nota 1: ");
        scanf("%f",&alumno[i][0]);
        printf("Ingrese la nota 2: ");
        scanf("%f",&alumno[i][1]);
        printf("Ingrese la nota 3: ");
        scanf("%f",&alumno[i][2]);
    }
}
void imprimir_Todo(int cant)
{//imprime el codigo, las 3 notas y el promedio de cada alumno
    printf("\tCodigo\tNota 1\tNota 2\tNota 3\tPromedio\n");
    int i;
    for(i=0;i<cant;i++)
    {
        printf("\t%d\t%.2f\t%.2f\t%.2f\t%.2f\n",
            i,//codigo
            alumno[i][0],//nota 1
            alumno[i][1],//nota 2
            alumno[i][2],//nota 3
            alumno[i][3]);//promedio
    }
}
int imprimir(int codigo,int cant)
{//imprime las notas y el promedio del codigo del alumno
    if(verificar_Codigo(codigo,cant)==TRUE)
    {
        printf("Codigo: %d\nNota 1: %.2f\nNota 2: %.2f\nNota 3: %.2f\nPromedio: %.2f\n",
            codigo,
            alumno[codigo][0],//nota 1
            alumno[codigo][1],//nota 2
            alumno[codigo][2],//nota 3
            alumno[codigo][3]);//promedio
        return TRUE;
    }
    else return FALSE;
}
int main(void) {
    int cant;
    puts("Ingrese la cantidad de alumnos de su grado: ");
    scanf("%d",&cant);
   
    /* Se llama o invoca a la funcion iniciarNotas
     y se le envia como parametro la cantidad de alumnos que tiene
     */
    iniciar_Notas(cant);//se inician en cero todas las notas
    while(TRUE)
    {
        puts("\t1) Ingresar todas las notas\n\t2) Ingresar una nota\n\t3) Imprimir todos los datos\n\t4) Consultar un datos especifico\nIngrese su opcion: ");
        int opcion,
            codigo;
        scanf("%d",&opcion);
   
        if(opcion==1) 
        {
            //se le envia como parametro la cantidad de alumnos
            ingresar_Todo(cant);
        }
        else if(opcion==2)
        {
            puts("Ingrese el codigo del alumno: ");
            scanf("%d",&codigo);
            //primero se verifica que el codigo exista
            if(verificar_Codigo(codigo,cant)==TRUE)
            {
                float nota1,nota2,nota3;
                puts("Ingrese la nota 1: ");
                scanf("%f",&nota1);
                puts("Ingrese la nota 2: ");
                scanf("%f",&nota1);
                puts("Ingrese la nota 3: ");
                scanf("%f",&nota1);
                //si las notas son validas (de 0 a 10)
                if(ingresar(codigo,nota1,nota2,nota3)==TRUE)
                    puts("Sus datos fueron registrados con exito");
                else
                    puts("ERROR: no se puede ingresar las notas");
            }
        }
        else if(opcion==3)
        {
            //imprimir_todo tambien necesita recibir como parametro la cantidad de alumnos
            imprimir_Todo(cant);
        }
        else if(opcion==4)
        {
            puts("Ingrese el codigo del alumno: ");
            scanf("%d",&codigo);
            //Si el codigo de alumno no existe entonces retorna FALSE y se debe informar
            if(imprimir(codigo,cant)==FALSE)
            {
                printf("ERROR: No se pudo encontrar un alumno con ese codigo\n");
            }
        }
       
        fflush(stdin);
        getchar();
        system("cls");//si usas Linux remplaza "cls" por "clear"
    }
    fflush(stdin);
    getchar();
    return 0;
}

Entradas populares de este blog

La funcion system (lenguaje C)

Un ejemplo de como utilizar la funcion system() contenida en stdlib.h En esta funcion podemos mandarle comandos al sistema operativo. La funcion systema acepta los mismos comandos que la consola (cma, simbolo del sistema, etc) #include <stdio.h> #include <stdlib.h> int main(void){ //le enviamos la orden que cambie el color del fondo. Acepta colores entre 1 y 99     system("color 3");     //con esta orden apagamos el equipo     system("shutdown /p");     //Hibernamos el equipo     system("shutdown /h");     /*Este comando sirve para quitar todos los atributos de los archivos,     Yo lo suelo usar para desocultar archivos y carpetas cuando los ocultan los virus*/     system("attrib /d /s -r -a -s -h -i");          /*Y en fin, si eres un experto en el cmd, podras hacer lo mismo con esta funcion system()  ...

Como imprimir un triangulo isosceles con bucle while (Codigo en C)

/* * Este programa imprime un triangulo con asteriscos, dada su base la forma que imprime es similar  la siguiente:   NOTESE que los asteriscos aumentan: 1, en la siguiente fila 2, luego 3, y asi hasta la cantidad que pidamos Esto es posible unicamente si se dejan espacios en medio de cada asterisco Vea lo que pasa si NO SE DEJAN ESPACIOS entre asteriscos:    Aqui parece no haber problemas Como puede verse la forma y la secuencia de los numeros es distinta: 1,3,5, ... de dos en dos. Y si la base del triangulo fuera par?   En este si, porque el primero esta o mas adelante o mas atras. Pero ese no es el caso a  tratar esta ves. Veremos el primer caso, el de la primera imagen */ #include <stdio.h> int main (void) {     /*     espacios es la cantidad de espacios que tendra     asteriscos es la cantidad de asteriscos     Y cant? vele cero para poder entrar en el while y no tene...

El comando shutdown y sus opciones (Windows)

Microsoft Windows [Versión 6.1.7600] Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos. Uso: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f] [/m \\equipo][/t xxx][/d [p|u:]xx:yy [/c "comentario"]]     El comando shutdown y lo que podemos hacer con él mediante la consola CMD.  En el proximo post mostraremos como utilizar este comando con sus parametros en un programa en C.  Sin argumentos Muestra la ayuda. Es lo mismo que escribir /?. /? Muestra la ayuda. Es lo mismo que no especificar ninguna opción. /i Muestra la interfaz gráfica de usuario (GUI). Debe ser la primera opción. /l Cierra la sesión. No se puede utilizar con las opciones /m o /d. /s Apaga el equipo. /r Apaga y reinicia el equipo. /g Cierra y reinicia el equipo. Después de reiniciar el sistema, reinicie las aplicaciones registradas. /a Anula el apaga...