quarta-feira, 14 de outubro de 2015

Arquivo - lendo e calculando médias

O c nos dá amplas possibilidades em leitura e escrita  de arquivos,
na verdade podemos lê entradas formatadas através de arquivos com
fscanf();do mesmo modo em que lemos do teclado com scanf();
Assim como imprimimos um texto com printf(); podemos gravar num
arquivo com fprintf();

Neste programa mostro como lê uma matriz do tipo float com fscanf();
A sintaxe de fscanf é:
int fscanf(FILE *arq, char *string_formatada);
fscanf(); faz a leitura completa da matriz float no arquivo, más na hora
da impressão imprimimos uma coluna por vez, que representa as notas
de cada aluno, são quatro alunos e são quatro notas para cada disciplinas
escolares atuais.
Programa indicado a iniciantes em linguagem c.


Veja abaixo imagens do programa em execução:







Veja abaixo o código do programa:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void Moldura ( ) {
     int lin, col;
     for ( lin = 0; lin <= 25 ; lin++ ) {
         for ( col = 0; col <= 80 ; col++ ) {
              gotoxy ( col , lin );
              if ( lin == 2 ) {
                   textattr ( 200 );
                   printf ( " " );
              }
              if ( col == 1 ) {
                   textattr ( 200 );
                   printf ( " " );
              }
              if ( col == 80 ) {
                   textattr ( 200 );
                   printf ( " " );
              }
         }
     }
}
/*
 A matriz abaixo foi usada como teste,
 salve - a num arquivo de texto e coloque do
 lado do executável do programa.
 8.5 6.8 5.6 7.5
 9.5 5.3 5.8 8.9
 8.6 6.4 8.0 9.3
 9.7 6.5 5.1 7.2
 */
int main ( ) {
     system ( "title ARQUIVO - LENDO E CALCULANDO MÉDIAS" );
     Moldura ( );
     textbackground ( WHITE );
     int apr = 0, repr = 0, i, j, l;
     float media, res = 0;
     float matriz [ 4 ] [ 4 ];
     FILE *arq = fopen ( "matriz.txt" , "r" );
     if ( arq == NULL ) {
         textcolor ( YELLOW );
         gotoxy ( 26 , 12 );
         printf ( "Problemas na abertura do arquivo " );
         getche ( );
         return ( 0 );
     }
     for ( i = 0; i < 4 ; i++ ) {
         for ( j = 0; j < 4 ; j++ ) {
              fscanf ( arq , "%f" , &matriz [ i ] [ j ] );
         }
     }
     textcolor ( LIGHTRED );
     gotoxy ( 23 , 3 );
     printf ( "ARQUIVO - LENDO E CALCULANDO MÉDIAS" );
     l = 0;
     while ( l < 4 ) {
         for ( i = 0; i < 4 ; i++ ) {
              for ( i = 0; i < 4 ; i++ ) {
                   textcolor ( LIGHTRED );
                   gotoxy ( 50 , i + 7 );
                   printf ( " %0.1f " , matriz [ i ] [ l ] );
                   res = res += matriz [ i ] [ l ];
              }
              textcolor ( LIGHTBLUE );
              gotoxy ( 30 , 5 );
              printf ( "Notas do aluno " );
              textcolor ( LIGHTRED );
              printf ( "%d" , l + 1 );
              textcolor ( LIGHTBLUE );
              gotoxy ( 10 , 7 );
              printf ( "Ciências Humanas e Suas Tecnologias " );
              gotoxy ( 10 , 8 );
              printf ( "Ciências da Natureza e suas Tecnologias " );
              gotoxy ( 10 , 9 );
              printf ( "Linguagens e Códigos e suas Tecnologias " );
              gotoxy ( 10 , 10 );
              printf ( "Matemática e suas Tecnologias " );
              fclose ( arq );
         }
         l++;
         getche ( );
         media = res / 4;
         if ( media < 7 ) {
              repr++;
              textcolor ( LIGHTBLUE );
              gotoxy ( 10 , 12 );
              printf ( "Aluno " );
              textcolor ( LIGHTRED );
              printf ( "%d" , l );
              textcolor ( LIGHTBLUE );
              printf ( " reprovado" );
              getche ( );
              gotoxy ( 10 , 12 );
              clreol ( );
         }
         if ( media >= 7 ) {
              apr++;
              textcolor ( LIGHTBLUE );
              gotoxy ( 10 , 12 );
              printf ( "Aluno " );
              textcolor ( LIGHTRED );
              printf ( "%d" , l );
              textcolor ( LIGHTBLUE );
              printf ( " aprovado" );
              getche ( );
              gotoxy ( 10 , 12 );
              clreol ( );
         }
         media = res = j = 0;
     }
     clrscr ( );
     Moldura ( );
     textbackground ( WHITE );
     textcolor ( LIGHTRED );
     gotoxy ( 23 , 3 );
     printf ( "ARQUIVO - LENDO E CALCULANDO MÉDIAS" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 33 , 5 );
     printf ( "Resultado final" );
     textcolor ( LIGHTRED );
     gotoxy ( 23 , 7 );
     printf ( "%d" , repr );
     textcolor ( LIGHTBLUE );
     printf ( " alunos foram reprovados" );
     textcolor ( LIGHTRED );
     gotoxy ( 23 , 9 );
     printf ( "%d" , apr );
     textcolor ( LIGHTBLUE );
     printf ( " alunos foram aprovados" );
     if ( repr > apr ) {
         gotoxy ( 23 , 11 );
         printf ( "Número de reprovados acima dos aprovados" );
     }
     if ( repr == apr ) {
         gotoxy ( 23 , 11 );
         printf ( "Número de aprovados" );
         gotoxy ( 23 , 12 );
         printf ( "iguais de reprovados" );
     }
     if ( repr < apr ) {
         gotoxy ( 23 , 11 );
         printf ( "Número de aprovados acima dos repovados" );
     }
     Sleep ( 1800 );
     textcolor ( LIGHTBLUE );
     gotoxy ( 28 , 17 );
     printf ( "Criado por:" );
     textcolor ( BLACK );
     printf ( " Samuel Lima " );
     textcolor ( LIGHTRED );
     gotoxy ( 36 , 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     return 0;
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.