TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS PROGRAMAÇÃO ESTRUTURADA II

Por:   •  30/11/2015  •  Trabalho acadêmico  •  2.617 Palavras (11 Páginas)  •  361 Visualizações

Página 1 de 11

#include

#include

#include

//protótipo da função

void comentario(char contador[], int coment, int vazia);

//iniciando o programa main

int main(int argc, char *argv[]){

    //declarando as variaveis

    int coment = 0, vazia = 0;

    int i;

    //testando o argc

    if (argc == 2){

        coment =0;

        vazia=0;

    }

    else{

        //varrendo o for na posição 0 ate que seja menor que o numero de argumentos

        for(i=0; i

            if (strcmp ("-c",argv[i]) == 0){

                coment = 1;

            }

            if(strcmp("-s", argv[i]) == 0){

                vazia = 1;

            }

        }

    }

    //chamando a função

    comentario (argv[argc-1], coment, vazia);

    //saindo do programa

    printf("\n **** Programa contador de linhas *****\n");

    printf ("\n Bye Bye! \n\n");

    system ("pause");

    return 0;

}

//função

void comentario (char contador[], int coment, int vazia){

    //declarando um arquivo

    FILE *pArquivo;

    /*variaveis da função*/

    int c = 0, nCod = 0, cont = 0;

    int i;

    int blocoComent = 0, numeComent = 0, linhaComent;

    int linhaVazia = 0, contVazia = 0, numeVazia = 0;

    int opvazia =0 , opcaocoment;

    char texto[sizeof(pArquivo)*10000];

    char opcao[5] = {" "};

    /*abrindo o arquivo, só para leitura*/

    pArquivo = fopen("contador.c", "r");

    // testando se o arquivo abriu

    if (pArquivo != NULL){

        do{

            //lendo os caracteres do arquivo aberto

            int fgetc (FILE *pArquivo);

            /*passando para a variavel c os caracteres do arquivo*/

            c = fgetc (pArquivo);

            //testando se o caracter do arquivo for igual a um pulo de linha ele contabiliza 1 na variavel nCod

            if(c == '\n'){

                nCod++;

            }

            //gravando o caracter de c dentro do variavel texto na posição de cont

            texto[cont] = c;

            //acrescentando 1 na variavel cont

            cont++;

        }

        //quando c for diferente de EOF que significa  End Of File(fim do arquivo) ele fecha o arquivo

        while(c != EOF);

        fclose (pArquivo);

    }

    //se o arquivo nao abrir ele verifica se o contador e igual a -h e diz que é imposivel abrir o arquivo

    else

    if(strcmp("-h", contador)!= 0){

        printf ("\n Imposivel abrir o arquivo!\n");

        exit(1);

    }

    //varrendo o for de 0 ate a posição de cont-1 que é a ultima posição que ficou armazenada na variavel cont

    for (i=0; i

        //testando se o caracter da posição atual é igual a / e se a proxima posição é igual a um *

        if(texto[i] == '/' && texto[i+1] == '*'){

            //se for igual, bloco de comentario fica igual a 1 e numero de comentario acrescenta 1

            blocoComent = 1;

            numeComent++;

        }

        //testando se o bloco de comentario é igual a 1 e se a proxima posição atual é igual a um pulo de linha

        if (blocoComent == 1 && texto[i] == '\n'){

            //se for igual, o numero de comentario acrescenta 1

            numeComent++;

        }

        //testando se o caracter da posição atual é igual a um * e se a proxima posição é igual a uma /

        if (texto[i] == '*' && texto [i+1] == '/'){

            // se for igual, bloco de comentario é igual a 0

            blocoComent = 0;

        }

        //testando se o caracter da posição atual é igual a uma / e se a proxima posição é igual a outra /

        if (texto[i] == '/' && texto[i+1] == '/'){

            //se for igual nomero de comentario acrescenta 1

            numeComent++;

        }

        //se nao for igual linha comentario fica igual a 0

        else{

            linhaComent = 0;

        }

        //testando se o caracter da posição atual é igual a um pulo de linha

        if (texto [i] == '\n'){

            /*se for igual linha de comentario se iguala a 1*/

            linhaComent = 1;

        }

        /*testando se a linha vazia é igual a 1 e o contador de vazia é igual a 1 e o texto na posição atual é igual a um pulo de linha */

        if(linhaVazia == 1 && contVazia == 1 && texto[i] == '\n'){

            //se for igual, numero vazia acrescenta 1 e linha vazia se iguala a 0

            numeVazia++;

            linhaVazia = 0;

        }

        /*testando se a linha vazia é igual a 1 e o caracter na posição atual do texto é diferente de um espaço e diferente de um pulo de linha*/

        if (linhaVazia == 1 && texto[i] != ' ' && texto [i] != '\n' ){

            //contador de vazia se iguala a 0

            contVazia = 0;

        }

        /*tentando se o caracter na posição do texto é igual a um pulo de linha*/

        if (texto[i] == '\n'){

            //se for igual linha vazia e contador de linha se igualam a 1

...

Baixar como (para membros premium)  txt (8.1 Kb)   pdf (46.6 Kb)   docx (13.2 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no TrabalhosGratuitos.com