Ir para conteúdo
Fórum Script Brasil

Paulo Jardim

Membros
  • Total de itens

    77
  • Registro em

  • Última visita

Posts postados por Paulo Jardim

  1. http://scriptbrasil.com.br/forum/index.php?showtopic=167549

    de uma oçhada, nesse exempl oele faz o que você quer.

    Agora precisa estudar bem algumas funções do C:

    é isso aqui que você vai precisar fazer

    while ( !feof(saida) && achou2 ==5) // mudar o status do arquivo saida
                  
                {
                  
                   fscanf(saida, "%s", &banco2.nome2);
                  
                   fscanf(saida, "%s", &banco2.status2);
                   fseek (saida, 0, SEEK_CUR);
                   tamfile2=ftell (saida);
                  
                   fscanf(saida, "%s", &banco2.cliente2);
                  
                   fscanf(saida, "%d", &banco2.horas2);
                    
                   fscanf(saida, "%f", &banco2.valorhora2);
                  
    
                   if (strcmpi (nomegarota, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
                   {    
                        fseek ( saida , tamfile2-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT
                                      if (op6 == 1)                          //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS
                                   fputs ( "A" , saida );                  //ASSIM POSSO SUBSTITUIR O STATUS.
                                      if (op6 == 2)
                                   fputs ( "D" , saida );
                                      if (op6 == 3)
                                   fputs ( "S" , saida );
                                   achou2=3;
                                  
                                   fclose(saida);
                   }

    precisa disso declarado tb.

    fpos_t position; // variavel necessária para uso de algumas funções stdio.h

  2. Não é pior ai.

    Se você só precisa saber qual é a última letrar é só você usar STRLEN que conta quantas letras tem e mandar dar um pint na ultima:

    OBS: um dos erros foi porque você usou = mo lugar de ==

    EX:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    
    {
    char nome[15];
    int x;
    char u_letra;
    int contLetras;
    int i =0;
    
    printf("Digite o seu nome: ");
    gets(nome);
    
    contLetras = strlen(nome);
    
    for(i = 0; i < contLetras; i++)
    {
         if (nome[i] != ' ' ) 
         u_letra = nome[i];
          
    }
    
    printf ("A ultima letra do seu nome e :  %c\n\n" , u_letra);
    
    
    system("pause");
    return(0);
    
    }

  3. Galera,

    achei isso para o linux. Mais alguém sabe como posso usar isso no devc++ ou como posso utilizar isso pro windows?

    /* @file   
     *         --> Servidor <--
     *
     *    
     * Este programa implementa Servidor de arquivos que faz um Upload de
     * arquivos usando algumas chamadas de sockets.
     *
     *
     * $Revision: 1.10 $  $Date: 2005/11/21 19:24:22 $
     *
     * (C) Copyright 2005 Vanderson Rodrigues
     *
     */
    
    #include <getopt.h>
    #include <time.h>
    #include <sys/utsname.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/stat.h>
    
    #include <sys/types.h>
    #include <sys/fcntl.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <arpa/inet.h>
    
    #define BUF_SIZE 4096
    #define QUEUE_SIZE 10
    #define FILE_MODE 0664
    
    void sistema(void)
    {
       struct utsname u;
       uname(&u);
    
       printf("Sistema Operacional :  %s - Release %s\n", u.sysname, u.release);
       printf("Servidor: Rodando em %s\n", u.nodename);
    }
    
    
    void limpar(void)
    {
       printf("{FONTE}33[2J"); /* limpa a tela */
       printf("{FONTE}33[1H"); /* poe o curso no topo */
    }
    
    
    void fatal(char *string)
    {
      printf("%s", string);
      exit(EXIT_FAILURE);
    }
    
    
    void uso (char *prognome)
    {
       printf("Uso: %s  [-p porta] [-h]\n", prognome);
       printf("\t porta - Porta TCP\n");
       printf("\t h - Mostra Essa ajuda\n");
       exit(EXIT_SUCCESS);
    }
    
    
    int main(int argc, char **argv)
    {
       int  s, b, l, fd, sa, bytes, on = 1;
       char buf[BUF_SIZE];         /* buffer para saida do arquivo */
       struct sockaddr_in local;      /* Pega Endereco IP */
       struct sockaddr_in remoto;      /* Pega Endereco IP */
       int sin_size, optch, porta;
       char *client_ip, stropts[] = "hp:";
       char arq_nome[256], arq_tamanho[256];
       time_t time1, time2;
              
       while ((optch = getopt(argc, argv, stropts)) != EOF) {
          switch (optch) {
             case 'h':
                uso(argv[0]);
                return 0;
             case 'p':
                porta = atoi(optarg);
                break;
             default:
                fprintf(stderr, "digite -h para ajuda\n");
                exit(EXIT_FAILURE);
          }
       }
    
       if ( argc != 3) {
          fprintf(stderr,"Erro: Faltando  Argumentos.\n");
          fputs("Use -h para  ajuda.\n",stderr);
          exit(EXIT_FAILURE);
       }
    
       /* Constroi a estrutura de endereco pra amarrar com Servidor. */
       memset(&local, 0, sizeof(local));   /* zera local */
       local.sin_family = AF_INET;
       local.sin_addr.s_addr = htonl(INADDR_ANY);
       local.sin_port = htons(porta);
    
       /* Cria socket */
       if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0 )
          fatal("Falha ao Cria Socket\n");
    
       /* diz pra aceitar mais de uma conexao */
       setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof(on));
    
       if ((b = bind(s, (struct sockaddr *) &local, sizeof(local))) < 0)
          fatal("Bind Falhou\n");
    
       /* Especifica o tamanho da fila */
       if ((l = listen(s, QUEUE_SIZE)) < 0)
          fatal("listen failed");
    
       limpar();
       sistema();
    
       /* Loop principal. Esperando por conexao */
       while (1) {
          printf("Servidor: Aguardando Conexao.\n");
          sin_size = sizeof(struct sockaddr_in);
    
          /* bloco para aceitar a requisicaoi */
          if ((sa = accept(s,( struct sockaddr *)&remoto, &sin_size)) < 0)
             fatal("Falha no accept\n");
    
          time(&time1);
    
          client_ip = inet_ntoa(remoto.sin_addr);
    
          printf(">>> Servidor: Conectado a  %s  Porta: %d\n", client_ip, remoto.sin_port);
    
          /* Recebe e imprime na tela o nome do Arquivo */
          if ((bytes = recv(sa, buf, 256, 0)) < 0)
             fprintf(stderr, "Falha no recebimento de dados\n");
          buf[bytes] = '{FONTE}';
          strcpy(arq_nome, buf);
          printf(">>> Recebendo Arquivo: ");
          printf("\"%s\"  -->  ", buf);
    
          /* zera buf */
          bzero(buf, BUF_SIZE);
    
          /* Recebe  e imprime o tamanho do Arquivo */
          if ((bytes = recv(sa, buf, 256, 0)) < 0)
             fprintf(stderr, "Falha no recebimento de dados\n");
          buf[bytes] = '{FONTE}';
          strcpy(arq_tamanho, buf);
          printf("%sK \n", buf);
    
          printf(">>> Aguarde...\n");
           
          /* Cria diretorio com IP do cliente para amarmazenar o arquivo
          * recebido do cliente
          */
          mkdir(client_ip, 0766);
          chdir(client_ip);
    
          /* cria o arquivo */
          if((fd = open(arq_nome, O_RDWR | O_CREAT, FILE_MODE)) < 0) {
             fatal("não foi possivel abrir arquivo\n");
             close(fd);
             close(sa);
             continue;
          }
    
          /* Recebe os dados do arquivo */
          while ((bytes = recv(sa, buf, BUF_SIZE, 0)) > 0) {
             write(fd, buf, bytes);
          }
    
          time(&time2);
          /* Informa Na saida padrão o onde o arquivo foi armazenado */
          printf(">>> Arquivo Recebido com Sucesso !\n");
          printf(">>> Aviso:\n");
          printf(">>>\tCheque o Arquivo \"%s\" no Diretorio .\"/%s\"\n>>>\n", arq_nome, client_ip);
    
          chdir(".."); /* Volta ao diretorio de origem */
    
          close(fd);             /* Fechar o arquivo */
          close(sa);             /* Encerra a conexao */
    
          printf(">>> Dados Transferidos  em : %d segundos\n", time2 - time1);
          printf(">>> Conexao Encerrada com %s\n\n", client_ip);
       }
    
       return 0;
    }

  4. Galera,

    Não sei por onde começar com isso, mas já andei pesquisando na internet e vi a possibilidade disso acontecer usando processos.

    Bom, vou explicar o que preciso fazer:

    Tenho de desenvolver um "file server" em c para armazenar arquivos que vão ser enviados por outros processos de outras linguagens, Java por exemplo, e também enviar os mesmos arquivos caso solciitado.

    Bom, esse serviço deve estar sempre ativo "escutando". Bom, o próximo passo é um pouco mais complexo:

    caso o servidor de arquaivos "caia" devo requisitar o arquivo solicitado pelo Outro processo aos processos ativos.

    Ou seja, caso o processo X solicite o arquivo Y e o servidor de arquivos esteja OFF, o processo X agora deve procurar procurar agora o arquivo Y nos processos ativos. claro que os mesmos devem ter cópia dos arquivos que estão nos processos.

    SImples não.

    Bom, para começar só preciso entender se isso será feito atravéz de Socket ou de alguma outra forma, e se existe exemplos disso na internet.

    Procurei galera, só achei voa socket.

  5. Essa questão de compilador é complicada mesmo,

    mas execute o código a seguir no seu Devc++ que não terá problema.

    #include<stdio.h>
    #include <stdlib.h>
    
    
    
    struct elemento {
         char dado;
         struct elemento *prox, *ant;
         };    
      
    void construir1(struct elemento **pinicio);  
      
    int main () {
        
        struct elemento *pinicio;
        construir1(&pinicio);      
    
    
    return 0;
    }  
      
    
    void construir1(struct elemento **pinicio) {
         FILE *arq;
         struct elemento *p1;
         char c;
                
         arq = fopen ("t1.txt", "r+");
         *pinicio = NULL;
         
         while ((c = getc (arq)) != EOF) {
               if (c != '\n'){
               p1 =(struct elemento *) malloc (sizeof (struct elemento));
               p1->dado = c;
               p1->prox = *pinicio;
               }
               if (*pinicio != NULL) {
               (*pinicio)->ant = p1;
               p1->ant = NULL;
               *pinicio = p1;
               }
         }
    fclose (arq);
    
    return;
    
    }

  6. Organize com funções fica melhor de ver e dar manutenção.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #include <conio.h>
    
    void menu();
    void gerarMatriz();
    void imprimirMatriz();
    
    int matriz[10][10];
    
    int main()
    {
        gerarMatriz();
        menu();
    }
    
    void menu()
    {
         int opcao;
         system("cls");
        
        
        printf("1 - Todos os numeros\n");
        printf("2 - Pares\n");
        printf("3 - Impares\n");
        printf("4 - Menores que 20\n");
        printf("5 - Maiores que 30\n");
        printf("6 - Gerar Novamente\n");
        printf("7 - Sair\n");
    
        scanf("%d", &opcao);
        
        switch(opcao) 
        {
        
        case 1: //aki vai a ultima matriz gerada
             imprimirMatriz();
             break;
        
        case 2:
             break;
             
        case 3:
             break;
             
        case 4:
             break;
             
        case 5:
             break;
             
        case 6:
             break;
             
        case 7:
             exit(0);
             break;
    
        }
        
        
        
        
        
        
        menu();
         
    }
    
    
    void  gerarMatriz()
    {
         
         
         
    int n,x=0, y=0, a, b, opcao;
        
        srand(time(NULL));
        
        for(x=0;x<10;x++)
           {
            for(y=0;y<10;y++)
              {
                a=rand()%40+5;
                matriz[x][y]=a*1;
              }
           }
          
        for(x=0;x<10;x++)
        {
           printf("\n%d", matriz[x][y]);
           
           for(y=0;y<10;y++)
           { 
               printf("\%d - ",matriz[x][y]);
           }
        }
               
               
    }
    
    void imprimirMatriz()
    {
         int x,y;
         
        for(x=0;x<10;x++)
        {
           printf("\n%d", matriz[x][y]);
           
           for(y=0;y<10;y++)
           { 
               printf("\%d - ",matriz[x][y]);
           }
        } 
        getch();
    }

  7. Olha uma das formas é essa que você fez, na hora que u usuário estiver digitando os números você compara para ver se é maior que o maior, se for você altera o maior:

    if(NumDigitado > maior)
               maior = NumDigitado;
    o mesmo você pode fazer para verificar o número menor: Segue o código abaixo como exemplo: Não aconselho utilizar o break; gostaria que pensasse e refizess eo código de forma mais organizada.
    #include <stdio.h>
    #include <stdlib.h>
    main()
    {
          int cont, soma, numDigitado, maior, menor, media;
           
          printf("Digite numeros:\n");
          soma=0;
          cont = 0;
          
          while(numDigitado!=0)
          {
            scanf("%d",&numDigitado);
            if (numDigitado == 0)
               break;
            if (cont ==  0) 
            {
                    maior = numDigitado;
                    menor = numDigitado;
                    
            }
            
            soma=soma+numDigitado;
            cont++;
            if(numDigitado > maior)
               maior = numDigitado;
               
               if( numDigitado < menor)
               menor=numDigitado;
               
             }
          
          
          
          printf("Soma = %d\n",soma);
          printf("Total Digitados = %d\n",cont);
          printf("Media = %d\n",media=soma/cont);
          printf("O maior numero digitado = %d\n", maior);
          printf("O menor numero digitado = %d\n", menor);
          
          system("pause");
    }

  8. Maneira bem didatica.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void Exercicio();
    int calculaVoltas(int medida);
    int calculaAngulo(int medida);
    
    
    int main()
    
    {
        
        Exercicio();
        
    }
    
    void Exercicio()
    {
      int medida=0;
      int voltas=0;
      int angulo=0;
      
      printf("Digite uma medida de um triangulo : ");
         scanf("%d",&medida);
      
      voltas = calculaVoltas(medida);
      angulo = calculaAngulo(medida);
      printf("%d ", voltas);
      printf("%d ", angulo);
      
      if(medida>0 && medida<=360)
      {
            if(medida>=0 && medida<=90)
            {
                printf("A medida \x82 do Primeiro quadrante");
            }
            else if(medida>90 && medida<=180)
            {
                printf("A medida \x82 do Segundo quadrante");
            }
            else if(medida>180 && medida<=270)
            {
                printf("A medida \x82 do Terceiro quadrante");
            }
            else
            {
                printf("A medida \x82 do Quarto quadrante");
            }
            
       }
       system("PAUSE");
    }
    
    int calculaVoltas(int medida)
    {
         int voltas;
         voltas = medida / 360;
         return voltas;        
    }
    
    int calculaAngulo(int medida)
    {
           int angulo;
           angulo = medida % 360;
           return angulo;     
    }

  9. bom,

    na verdade você pode usar a função SYSTEM() para enviar linhas de comando como se estivesse dentro do promt de comando ( CMD ).

    Ou seja.

    Supondo que seu programa se chame "algo.exe" e esteja no mesmo diretório do nosso exe basta digitar

    #include <stdlib.h>

    int main()

    {

    system("algo.exe");

    }

  10. Bom, a resposta para o seu exerciicio numero 1 esta errada.

    O exercicio pede que leia um número inteiro e não vários números.

    Eu fária da seguinte forma.

    Primeiro eu criaria um vetor de strings e faria a leitura através de string depois percorria o vetor transformando string em inteiro.

    já o segundo não sei se entendi bem mais pelo visto se você tiver 10 soldados então você terá 10 filas e o número de soldados será 10, no caso de 11 soldados serão 11 filas e 11 na última fila...etc... não tem muito segredo.

  11. è isso que precisa parceiro?

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Ponto {
        int x;
        int y;
    }Ponto;
    
    int main(void){
            Ponto** p2;
            Ponto* p1;
            
            p2 = (Ponto**) malloc(sizeof(Ponto*));
            p1 = (Ponto*) malloc(sizeof(Ponto));
            
    
            p1->x=18;
            p1->y=20;
    
            *p2 = p1;
    
            p1->y =82;
    
            printf("\nxx: %d",p1->x);
            printf("\nyy: %d",p1->y);
            printf("\nmemoria p1->x: %p",p1->x);
            printf("\nmemoria p1->y: %p",p1->y);
    
            getchar();
    
            free(p1);
            return 0;
    }

  12. Não tive tempo para comentar mais deixei o mais didático possivel.

    #include <stdio.h>
    #include <stdlib.h>
    
    int bubblesort(int *vetor, int tamanho);
    void trocaBolha( int v[], int i);
    
    int  *juntarVetor(int *vet01, int *vet02, int countVet01, int countVet02 );
    void imprimirVetor(int *vetorCompleto, int tamanho);
    
    int main(int argc, const char * argv[])
    {
        int vetum[10], vetdois[10], i, sair;
        int countVet01 =0, countVet02=0;
        int *vetorCompleto= NULL; 
        
        printf("\nFase 1 - Digite 10 numeros inteiros abaixo (OBS: Se pretende não informar o numero e pular o proximo passo, digite zero e depois ENTER):\n\n");
    
        for (i = 0; i < 10; i++) 
        {
                printf("Numero %d: ", i+1);
                   scanf("%d", &vetum[i]);
                   if (vetum[i]<0)
                       break;
               countVet01++;
           
        }
    
        printf("\nFase 2 - Digite 10 numeros inteiros abaixo novamente:\n\n");    
        
        for (i = 0; i < 10; i++) 
        {
              printf("Numero %d: ", i+1);
              scanf("%d", &vetdois[i]);
                if (vetdois[i]<0)
                       break;
                countVet02++;
        }
        int somaCountVet = (countVet01 + countVet02);
        vetorCompleto = (int *)  malloc  ( somaCountVet * sizeof(int));
        vetorCompleto = juntarVetor(vetum, vetdois, countVet01, countVet02);
        
        bubblesort( vetorCompleto, somaCountVet );
        
        int tamanhoVetor = countVet01 + countVet02;
        imprimirVetor(vetorCompleto, tamanhoVetor);
        
        
        
        
        system("PAUSE");
        return(0);
    }
    
      int  *juntarVetor(int *vet01, int *vet02, int countVet01, int countVet02 )
         {
            int *vetorCompleto = NULL;
            int tamanhoVetor = countVet01 + countVet02;
            int i =0, j =0;
            
            vetorCompleto = (int *)  malloc  ( tamanhoVetor * sizeof(int));
            
             for (i = 0; i < countVet01; i++) 
            {
                 vetorCompleto[i] = vet01[i];  
                 
            }
            
             for (j = 0; j < countVet02; j++) 
             {
                 vetorCompleto[i] = vet02[j];
                  i++; 
             }
                  
           return vetorCompleto;
                        
         }
        
        int bubblesort (int *vetorCompleto, int tamanho)
        {
          int i;
            int trocou;
    
            do
            {
                    tamanho--;
                    trocou = 0;
    
                    for(i = 0; i < tamanho; i++)
                    {
                            if(vetorCompleto[i] > vetorCompleto[i + 1])
                            {
                                    trocaBolha(vetorCompleto, i);
                                    trocou = 1;
                            }
                    }
            }while(trocou);
         
         
        }
    
    
             
             
        
        
        void imprimirVetor(int *vetorCompleto, int tamanho)
        {
             int i =0;
            
             for (i = 0; i < tamanho; i++)
                 printf("%d \n", vetorCompleto[i]);
                 
             
        }
        
        void trocaBolha( int v[], int i)
        {
    
        int aux=0; 
    
       aux=v[i];
       v[i] = v[i+1];
       v[i+1] = aux;
    
       }

  13. Prezados,

    Veja se podem me ajudar.

    no meio do meu código eu construi uma string e envio como parametro.

    //Enviar String de Envio como Parametro para o programa Java.
         system(stringEnvio);

    Entretato esse parametro chama um outro processe JAVA, só que logo me seguida precviso fazer uma modificação em um arquivo só que o java continua usando..

    Como faço pra aguardar o processo terminar para poder continuar executante?

  14. Galera,

    para fins didáticos estou disponibilizando esse programa para controle de bordel.

    A idéia é cadastrar as garotas no sistema informando suas carecterisiticas fisicas e o valor cobrado por hora.

    Essas informações serão armazenadas em arquivos de texto.

    O sistema também permite dar "saida" nas garotas mudando seu estatus para "S" de saida.

    Os relatórios também permitem escolher as garotas por nome, caracteristicas fisicas etc.

    Além de mostrar todas as garotas que estão na rua e por quantas horas.

    PS.: Código bem comentado ( até demais )

    /*
      Name: PEIXE XOTA V.1.0
      Copyright: Epic Solutions
      Desenvolvedor   : Paulo E.P. Jardim.
      E-mail : inf-paulo@bol.com.br
      Projeto Finalizado em  03/12/10 23:22    
      Description:
                  
                  
                          Controle e Gerenciamento de Garotas
                  
                   Trabalho em C,  1 Semestre Faculdade FTC, Professor: Lúcio
    */
    
    
    
    #include <stdio.h>
    #include <ctype.h>      //Para usar o toupper()
    #include <string.h>  
    #include <conio.h>      //Para usar o getch()
    #include <stdlib.h>  
    #include <windows.h>    //Para poder mover o cursor com a função gotoxy()
    
    void gotoxy(int x, int y) {    //Função para reposicionar o cursor
      COORD c;
      c.X = x - 1;
      c.Y = y - 1;
      SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
    }
    
    
    int main ()
    
    {
        typedef struct //Criado typedef Struct ao invez de Struct para facilitar o código
        {              
        char nome[26]; // Variavel para o nome da Garota
        char status;   // estatus da garota
        char corcabelo[15]; // cor do cabelo da garota
        char cor_olho[15];  // cor do olho da garota
        float valor_hora;  // valor por hora que a garota cobra
        }dados;            //nome dado a minha estrutura
        
        typedef struct
        {
        char nome2[26];
        char status2;
        char cliente2[13];
        int horas2;
        float valorhora2;
        }dados2;
        
        dados banco;  
        dados2 banco2;
        
        system("color 2F"); // mudança de cor do dos para verde
        FILE *garotas;      // aponta para o arquivo garotas
        FILE *saida;
        fpos_t position;   // variavel necessária para uso de algumas funções stdio.h
        //Variaveis
        int op=0, op2=0, op4=0, op5=0, op6=0;
        char op3, letra;
                  // Dado o nome de banco a minha estrutura dados
        int n_garotas =0;       // contador de garotas
        int i;                  // Usado como contador
        int qtd_letras;         //Contador de Letras
        char cabelo, olho;      
        char deletar;
        int tamfile, tamfile2;            //Usado para mostrar o tamanho do arquivo
        char del[30];  
        char status;
        char cliente[13];
        char nomegarota[26];
        int achou=0;
        int horas=0;          
        int total=0;
        float valorhora;
        int total_horas;
        float total_grana;
        int achou2;
        int horas2;
        
        
        do //Laço para teste condicional do MENU Principal
        {
        //Menu
        system("color 2F"); // Cor Verde do Menu Principal
        system("cls");
        printf("\n\t\t\t    PEIXE XOTA   v.1.0\n\n\n\n");
        printf("\n[1] Pesquisa e Relatorios");
        printf("\n[2] Cadastro de Garotas");
        printf("\n[3] Limpar Lista de Contatos");
        printf("\n[4] DELETAR Lista  de Contatos");
        printf("\n[5] Alterar Status ");
        printf("\n[6] Entrada de Garotas");
        printf("\n[7] Saida de Garotas");
        printf("\n[0] Sair\n");
        printf("\n\nDigite a opcao desejada -> "); //local para onde reposiciono o cursor
        printf("\n\n\n\n\n\t\t\t\t\t\t\t   By Paulo Jardim");
        fflush(stdin);
        gotoxy(28,17);  //Reposicionar o Cursor no local certo
        scanf("%d", &op);
        }while(op != 1 && op != 2 && op != 3 && op != 4 && op != 5 &&  op != 6 && op!=7 && op !=0);
        //FIM LAÇO MENU
        
                  
        switch (op) // Switch do MENU PRINCIPAL
        {
        case 1:
             do{
             system("cls");
             printf("\n\t\t\t   Pesquisa e Relatorios\n\n\n");
             printf("\n[1] Pesquisa Personalizada");
             printf("\n[2] Listar todas as Meninas");
             printf("\n[3] Listar Por Nome");
             printf("\n[4] Garotas na Rua  -> ");
             fflush(stdin);
             scanf("%d", &op4);
             }while (op4 != 1 && op4 !=2 && op4 !=3 && op4 !=4);
             switch (op4)
                    {
                    case 1 :    garotas = fopen("garotas.txt", "a+"); //a+ cria o arquivo caso ele não exista, e adiciona a partir do final do arquivo.
                    system("color 1F");                      //Muda a cor pra azul
                    system("cls");                           //Limpa a tela
            
                    fseek (garotas , 0 , SEEK_END);          //Le o arquivo do 0 até o final
                    tamfile = ftell (garotas);               //armazena em tamfile o tamanho em bytes do arquivo.
                    rewind (garotas);                        //volta pro começo do arquivo.
                    if (tamfile == 0)                       //se o arquivo estiver vazio, ou seja, com 0 bits..
                    {
                       printf ("\n\n\n\t\t\tVc não tem Garotas, favor cadastrar");
                       getche();
                       fclose(garotas);
                       main();
                    }
             else                                     //se tiver arquivos, ou seja, diferente de 0 bytes ele continua.
             {
              do{                                      //Teste condicional para cor de cabelo
              printf("Digite a cor do cabelo da mulher desejada\n\n");
              printf("[1] Morena \n");
              printf("[2] Loira \n");
              printf("[3] Ruiva    -> ");
              fflush(stdin);                           //Limpa o buffer para limpar a lixeira, uso para diminuir o risco de erros.
              scanf("%d", &op3);
                          }while (op3 != 1 && op3 != 2 && op3 != 3); //se ele digitar algo diferente de 1 2 ou 3 irá repetir a msg
            
             switch (op3){                          //Swtich para cabelo
                  case 1 :  cabelo = 'M';          
                         break;
                  case 2 : cabelo = 'L';            //caso ele digite opção 2 'loira' armazenará na variavel loira o caracter 'L'
                         break;      
                  case 3 : cabelo = 'R';
                         break;
                               }
             do {                                   //Teste condicional para COr Olho
                  printf("\nCordo Olho\n[1] CLaro [2] Escuro -> ");
                  scanf("%d", &op5);
                  }while (op5 != 1 && op5 != 2 && op5 != 3);
                  
                  switch (op5) {
                  case 1 :  olho = 'C';  
                            break;
                  case 2 :  olho = 'E';
                            break;
                               }
                 op6=0;                           //Zerando váriavel já que vou utiliza-la
                 do{                              //Teste condicional do Status do Cliente
                  printf("\n\nDigite o Status do Cliente");
                  printf("\n[1] Ativo");
                  printf("\n[2] Dasabilitado");
                  printf("\n[3] Saida     ->  ");
                  fflush(stdin);
                  scanf("%d", &op6);
                     }while (op6 != 1 && op6 !=2 && op6 != 3);
                  
                  switch (op6){
                  case 1 :  status = 'A';
                         break;
                  case 2 :  status = 'D';    //Armazenar em status o caracter 'D'
                         break;      
                  case 3 :  status = 'S';
                         break;
                               }      
          
             printf("\n\n\n");
              while(!feof(garotas))          //Enquanto não for final do arquivo garotas.
             {
                                    fscanf(garotas, "%s", &banco.nome);  //le o txt e armazena a primeira string em banco.nome
                                    for(i=0;banco.nome[i]!='\0'; i++)     //enquanto não terminar a string
                                        if(banco.nome[i]=='_')           //Verifica se a o caracter '_'
                                                banco.nome[i]=' ';       //e substitui por ' ', que é espaço.
                                    
                                     fscanf(garotas, "%s", &banco.status);
                                              
                                    fscanf(garotas, "%s", &banco.corcabelo);
                                    for(i=0; banco.corcabelo[i]!='\0';i++)
                                        if (banco.corcabelo[i]== '_')
                                                banco.corcabelo[i]=' ';
                                    
                                    fscanf(garotas, "%s", &banco.cor_olho);
                                    for(i=0; banco.cor_olho[i]!='\0';i++)
                                        if (banco.cor_olho[i]== '_')
                                                banco.cor_olho[i]=' ';
                                                
                                    fscanf(garotas, "%f", &banco.valor_hora);
                                    
                                           if (banco.corcabelo[0] == cabelo) //Lembrem-se que a variavel cabelo, olho e status
                                           if (banco.cor_olho[6] == olho)    //são caracteres e tem apenas uma letra cada
                                           if (banco.status == status)       //então comparo apenas a primeira letra de cada
                                        {                                    //e verifico se são iguais.
                                                                             //no caso do olho comparo a 6 string que pode ser 'C' = claro
                                                                             //ou pode ser 'E' = escuro
                                        printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                                        n_garotas++; //contador de registros
                                        }
          //Esse processo será repitido até o final do arquivo, graças ao laço  while(!feof(garotas))
                                        
             }
        
            
        printf("\n\n\nO numero de Garotas com essa caracteristica e de -> %d    ", n_garotas);
        getch();
        fclose(garotas); //Fechando arquivo. (Sempre que abrir feche) Não feche 2 vezes ou abra 2 vezes nunca.)
      
        main();         //Uma simples Recursividade, onde chamo a função main dentro da main.
        break;
        
         }  // FIM CASE 1 (Procura Perssonalizada).
        
          case 2: garotas = fopen("garotas.txt", "a+"); //Abre o arquivo      
                      
                      system("color 5F"); // Muda cor para roxo
                      n_garotas=0;        //zera contador de garotas
            
                      system("cls");
                      printf("\n\t\t\tGarotas Cadastradas\n\n\n");
                      fseek (garotas , 0 , SEEK_END);
                      tamfile = ftell (garotas);    
                      rewind (garotas);
                      if (tamfile == 0)     //Verifica se o arquivo esta vazio
                         printf ("\n\n\t\tVc não tem Garotas Cadastradas, favor cadastrar");
                      else                   //se Não estiver vazio...
                          while(!feof(garotas)) //Enquanto não for final de arquivo....
                                {
                                    
                                    fscanf(garotas, "%s", &banco.nome); //leio do texto e armazeno na struct
                                    for(i=0;banco.nome[i]!='\0';i++)
                                        if(banco.nome[i]=='_')
                                                banco.nome[i]=' ';
                                          
                                    fscanf(garotas, "%s", &banco.status);
                                    
                                    
                                    fscanf(garotas, "%s", &banco.corcabelo);
                                    for(i=0; banco.corcabelo[i]!='\0';i++)
                                        if (banco.corcabelo[i]== '_')
                                                banco.corcabelo[i]=' ';
                                    
                                  
                                    
                                    fscanf(garotas, "%s", &banco.cor_olho);
                                    for(i=0; banco.cor_olho[i]!='\0';i++)
                                        if (banco.cor_olho[i]== '_')
                                                banco.cor_olho[i]=' ';
                                    
                                    
                                                
                                    fscanf(garotas, "%f", &banco.valor_hora);
                                    
                                  
                                    
                                    
                                    printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                                    n_garotas++;    //Cada vez que acha um nome e imprime ele conta
                                }
                                
                                printf("\n\n\n\t\ttotal de: %d Garotas Cadastradas", n_garotas); // Imprime o total de garotas
                                fclose(garotas);        //fecha o arquivo
                                getch();                //espera ser digitado algo
                                main();                 //chama o main
                  break;                                //fim CASE 3 (listar todas as garotas)
                  
                  
                  
          case 3 : garotas = fopen("garotas.txt", "a+"); //SUBMENU //Listar Meninas por Nome.
            
                  system("color 6F");                       //muda cor
                  n_garotas=0;                              //zera variavel...
                  system("cls");
                  fseek (garotas , 0 , SEEK_END);
                  tamfile = ftell (garotas);
                  rewind (garotas);
            
                  if (tamfile == 0)                         //verifica se está vazio o arquivo.
                  printf ("\n\n\n\t\tVc não tem Garotas, favor cadastrar");
                  else                                    //caso não esteja vazio...
                  {
                   do{                                       //Laço para repetir se o usuário digitar enter
                   system("cls");
                   printf("\n\nDigite a letra inicial do nome e aperte <ENTER>  -> ");
                   fflush(stdin);
                   scanf("%c", &letra);
                   }
                  
                   while ( letra == '\n'); //caso seja apertado enter repete a instrução
                   printf("\n\n\n");
                  
                   while(!feof(garotas))
                   {
                
            
                                    fscanf(garotas, "%s", &banco.nome);
                                    for(i=0;banco.nome[i]!='\0';i++)
                                        if(banco.nome[i]=='_')
                                                banco.nome[i]=' ';
                                    
                                    
                                    fscanf(garotas, "%s", &banco.status);
                                              
                                    
                                    fscanf(garotas, "%s", &banco.corcabelo);
                                    for(i=0; banco.corcabelo[i]!='\0';i++)
                                        if (banco.corcabelo[i]== '_')
                                                banco.corcabelo[i]=' ';
                                    
                                    
                                    
                                    fscanf(garotas, "%s", &banco.cor_olho);
                                    for(i=0; banco.cor_olho[i]!='\0';i++)
                                        if (banco.cor_olho[i]== '_')
                                                banco.cor_olho[i]=' ';
                                                
                                    fscanf(garotas, "%f", &banco.valor_hora);
                                    
                                    
                                    
                                    if(banco.nome[0]=='\0')
                                        printf ("\n\n\tVc não tem Garotas Cadastradas.\n");
                                    else
                                        if(toupper(banco.nome[0]) == toupper(letra))
                                        {
                                        printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                                        n_garotas++;
                                        }
                            
             }
      
        printf("\n\n\nO numero de Garotas com a letra '%c' e %d", toupper(letra), n_garotas);
        }
        getch();
        fclose(garotas);
        main();
        
        break;
        
              
       case 4 :  saida = fopen("saida.txt", "a+"); //Pesquisa de Garotas na RUA
                      total_horas=0;
                      total_grana =0;
                      system("cls");
                      printf("\n\n\n\t\t\tPesquisa de Garotas na Rua\n\n\n\n");
                      
                      fseek (saida , 0 , SEEK_END);          //Le o arquivo do 0 até o final
                      tamfile = ftell (saida);               //armazena em tamfile o tamanho em bytes do arquivo.
                      rewind (saida);                        //volta pro começo do arquivo.
                      if (tamfile == 0)                       //se o arquivo estiver vazio, ou seja, com 0 bits..
                         {
                           printf ("\n\n\n\t\t\tVc não tem Garotas na Rua");
                           getche();
                           fclose(saida);
                           main();
                         }
              
               while(!feof(saida))
               {
                                    
                        fscanf(saida, "%s", &banco.nome);
                        for(i=0;banco.nome[i]!='\0';i++)     //enquanto não terminar a string
                                        if(banco.nome[i]=='_')           //Verifica se a o caracter '_'
                                                banco.nome[i]=' ';
    
                        fscanf(saida, "%s", &banco.status);                        
                                                
                        fscanf(saida, "%s", &cliente);
                        for(i=0;cliente[i]!='\0';i++)     //enquanto não terminar a string
                                        if(cliente[i]=='_')           //Verifica se a o caracter '_'
                                                cliente[i]=' ';
                            
                        fscanf(saida, "%d", &horas);
                        
                        
                        fscanf(saida, "%f", &valorhora);
                        
                                    
              
                            if (banco.status == 'S')
                            {
                                            
                            
                            printf("%s | %c | %s | %d | %.2f \n", banco.nome, banco.status, cliente, horas, valorhora);
                            n_garotas++;
                            total_grana += valorhora;
                            total_horas += horas;
                            }
                        
               }      
              
                 printf("\n\n\n você tem %d garotas na rua", n_garotas);
                
                 printf("\n\n\n\t Total de Horas da garotas e : %d", total_horas);
                 printf("\n\n\n\t\t\t Total de arrecadacao e de : %.2f", total_grana);
                      
                    
                  getch();
                  fclose(saida);
                  main();
                  break;
                  
        }// FIM SUBMENU RELATÒRIOS      
            
        
        case 2:   garotas = fopen("garotas.txt", "a+"); // Abrindo arquivo garotas novamente
                  system("color 3F");                   //Mudando cor para Roxa
                  system("cls");                                
                  
                  do //Laco usado para se o usuário quiser cadastrar mais de uma garota
                  {
                  qtd_letras = 0;                       //Zerando contador de letras
                  system("cls");        
                  printf("\n\t\t\tCadastro de Garotas\n");
                  printf("\n\nDigite o Nome da Garota ou Aperte <ENTER> pra voltar: -> ");
                  fflush(stdin);                       //sempre limpando o buffer antes de pegar algo da memória
                  gets(banco.nome);
                  if (banco.nome[0] == ' ' || banco.nome[0] =='\0' || banco.nome[0] == '\n') // Verifica s digitou alguma coisa
                     {
                     fclose(garotas);
                     main();
                     }        //caso deixe o nome em  branco,
                  else
                  qtd_letras = (strlen(banco.nome)); //conta quantas letras tem no nome digitado
                  
                  for(qtd_letras+1; qtd_letras < 25; qtd_letras++) // laço para adicionar '_',
                  banco.nome[qtd_letras] = ('_');                  //a partir do fim do nome até a 24 posição
                  banco.nome[25] ='\0';                           //Determinar que o fim do nome é na 25 posição
                      
                       for(i=0; banco.nome[i] !='\0'; i++)       //Enquanto for diferente de fim de string
                           if (banco.nome[i] == ' ')               //preencho com '_' o espaço vazio.
                               banco.nome[i] = '_';
                  
                  banco.status = 'A';                              //Toda garota cadastrada entrará como Ativa
                  
                  do {                                             //Teste condição do Cor cabelo
                  op3=0;                              
                  printf("\n\nDigite a Cor do cabelolo: \n");
                  printf("[1] Morena \n");
                  printf("[2] Loira \n");
                  printf("[3] Ruiva    -> ");
                  fflush(stdin);
                  scanf("%d", &op3);
                     }while (op3 != 1 && op3 !=2 && op3 != 3);
                  
                  // transformar o inteiro na String Respectiva.
                  switch (op3){
                  case 1 :  strcpy(banco.corcabelo, "Morena"); //
                         break;
                  case 2 : strcpy(banco.corcabelo,  "Loira_");
                         break;      
                  case 3 : strcpy(banco.corcabelo,  "Ruiva_");
                         break;
                               }
                              
                  op5 = 0;                        
                  do {                              //teste condição de cor de olho
                  printf("\n\nCor do Olho\n[1] Claro [2] Escuro -> ");
                  fflush(stdin);
                  scanf("%d", &op5);
                  switch (op5) {
                  case 1 :  strcpy(banco.cor_olho, "Olhos_Claros_");  
                            break;
                  case 2 :  strcpy(banco.cor_olho, "Olhos_Escuros");
                            break;
                               }
                  }while (op5 != 1 && op5 !=2);        
                  
                  printf("\n\nValor Cobrado por Hora (em reais) -> ");
                  fflush(stdin);
                  scanf("%f", &banco.valor_hora);
                  
                  //A LINHA SEGUINTE INSERE DADOS NO TXT
                  fprintf(garotas, "\n%s %c %s %s %.2f", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                  
                  printf("\nDeseja Cadastrar outra Garota? [1] Sim e [2] não\n");
                  fflush(stdin);
                  scanf("%d", &op2);
                  
                  }while (op2 == 1); // fim do laço para continuar cadastrando.
                    fclose(garotas); //Fechando arquivo
                    main();          //chama a função main
                    break;           // fim do case 2 (cadastro de garotas)
        
        
        
        
        case 3 : //Deletar Cadastros
               printf("\n\n\n\n\n\nTem certeza que deseja limpar sua lista de Garotas? (S/N) -> ");
               system("color 4F");
               fflush(stdin);
               scanf("%c", &deletar);
               if(toupper(deletar)=='S')   //Toupper transforma a variavel deletar em maiscula
                            {              //ou seja, caso digite 'S' ou 's' faça...
                                
                                garotas = fopen("garotas.txt", "w");  //abre o arquivo em modo gravação
                                banco.nome[0]='\0';                  //zera o conteudo
                                banco.corcabelo[0] ='\0';
                                banco.cor_olho[0] ='\0';
                                banco.valor_hora ='\0';
                                fclose(garotas);
                                
                                saida = fopen("saida.txt", "w");
                                banco.nome[0] ='\0';
                                cliente[0] ='\0';
                                horas         ='\0';
                                banco.valor_hora ='\0';
                                fclose(saida);
                                
                                puts("\n\nPronto, Sua garotas foram removidos!");
                                getch();
                                
                            }
                            main();     // Fim case 5 ( deletar cadastros )
                            break;
                            
               case 4 :     //Deletar o arquivo.
               system("color 4f");
               printf("\b\n\n\n\n\n\nTem Certeza que deseja deletar o arquivo Garotas.txt? (S/N) -> ");
               fflush(stdin);
               scanf("%c", &deletar);
               if(toupper(deletar)=='S')
                            {
                                
                                if( remove( "garotas.txt" ) != 0 ) //Caso seja possivel deleta o arquivo.
                                perror( "\n\n\nErro ao deletar Arquivo" );//caso não informa o motivo.
                                else
                                puts( "\n\nArquivo deletado com Sucesso" );
                                getch();
                                
                                 if( remove( "saida.txt" ) != 0 ) //Caso seja possivel deleta o arquivo.
                                perror( "\n\n\nErro ao deletar Arquivo" );//caso não informa o motivo.
                                else
                                puts( "\n\nArquivo deletado com Sucesso" );
                                getch();
                                
                                
                            }
                            
                            main();     //Fim menu 6 ( Deletar arquivo )
                            break;
                            
        case 5 : garotas = fopen("garotas.txt", "r+");   //r+ abre o arquivo em modo edição
             op6=0;                                      //permitindo o uso de funções para localização
             tamfile=0;  //Zerando variaveis
             system("color 0F");
             n_garotas=0;
             achou=0;
             system("cls");
             printf("\n\t\t\tAlterar Status  das Garotas\n\n\n");
             fseek (garotas , 0 , SEEK_END);
             tamfile = ftell (garotas);
             rewind (garotas);
                    if (tamfile == 0)
                         printf ("\n\n\t\tNão existem cadastros, favor cadastrar");
                    else
                    {
                        printf("\nDigite o nome da Garota que desja alterar o status -> ");
                        fflush(stdin);
                        gets(nomegarota);
                        qtd_letras = (strlen(nomegarota));    //conta quantos caracteres tem a palavra digitada
                        for(qtd_letras+1; qtd_letras < 25; qtd_letras++) //adiciona '_" ao final da palavra
                        nomegarota[qtd_letras] = ('_');                  //até a 24 posção
                        nomegarota[25] ='\0';                           //fecha a string na 25 posição
                                                                         //Nada bom caso deixe aberto
                          for(i=0; nomegarota[i] !='\0'; i++)
                           if (nomegarota[i] == ' ')
                               nomegarota[i] = '_';
                          
                          for(i=0; nomegarota[i] !='\0'; i++)
                            if (nomegarota[i] == '_')
                               nomegarota[i] = ' ';
                          
                          printf("\n\n\n");
                          achou=0;
                      
                          while( !feof(garotas) && achou ==0) //repete até achar o nome digitado ou o final do arquivo
                          {
                                    
                                fscanf(garotas, "%s", &banco.nome);
                                for(i=0;banco.nome[i]!='\0';i++)
                                   if(banco.nome[i]=='_')
                                      banco.nome[i]=' ';
                                
                                fscanf(garotas, "%s", &banco.status);
                                fseek (garotas, 0, SEEK_CUR);
                                
                                tamfile=ftell (garotas); //ESSE COMANDO LOCALIZA A POSIÇÃO EM BYTS DO TEXTO
                                                         //ASSIM É POSSÍVEL SABER ONDE ESTA LOCALIZADO O BANCO.STATUS
                                fscanf(garotas, "%s", &banco.corcabelo);
                                    for(i=0; banco.corcabelo[i]!='\0';i++)
                                        if (banco.corcabelo[i]== '_')
                                                banco.corcabelo[i]=' ';
    
                                fscanf(garotas, "%s", &banco.cor_olho);
                                    for(i=0; banco.cor_olho[i]!='\0';i++)
                                        if (banco.cor_olho[i]== '_')
                                                banco.cor_olho[i]=' ';
                                    
                                fscanf(garotas, "%f", &banco.valor_hora);
                                
                              
                                if (strcmpi (banco.nome, nomegarota) == 0 ) //compara o nome digtado com o nome no txt
                                {
                                   achou=1;    
                                   printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                                }
                        }// fim while  
                                        
                                   if (achou ==1)
                                   do
                                   {          
                                          printf("\n\nDigite o novo Status da Garota");
                                          printf("\n[1] Ativo");
                                          printf("\n[2] Dasabilitado");
                                          printf("\n[3] Saida     ->  ");
                                          fflush(stdin);
                                          scanf("%d", &op6);
                                   }while (op6 != 1 && op6 !=2 && op6 != 3);  //teste de condição 1 2 ou 3
                                  
                                  
                                   fseek ( garotas , tamfile-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT
                                      if (op6 == 1)                          //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS
                                   fputs ( "A" , garotas );                  //ASSIM POSSO SUBSTITUIR O STATUS.
                                      if (op6 == 2)
                                   fputs ( "D" , garotas );
                                      if (op6 == 3)
                                   fputs ( "S" , garotas );
                                    
                                }// FIM IF GAROTAS
                                fclose(garotas);
                                //INICIO PROCEDIMENTO PARA ALTERAR NO SAIDA
                          
                              
                  
                   for(i=0;banco.nome[i]!='\0';i++)
                                        if(banco.nome[i]==' ')
                                                banco.nome[i]='_';
                                                
                    for(i=0;nomegarota[i]!='\0';i++)
                                        if(nomegarota[i]==' ')
                                                nomegarota[i]='_';
                                                
                
                saida = fopen("saida.txt", "r+");
                achou2=5;                          
                while ( !feof(saida) && achou2 ==5) // mudar o status do arquivo saida
                  
                {
                  
                   fscanf(saida, "%s", &banco2.nome2);
                  
                   fscanf(saida, "%s", &banco2.status2);
                   fseek (saida, 0, SEEK_CUR);
                   tamfile2=ftell (saida);
                  
                   fscanf(saida, "%s", &banco2.cliente2);
                  
                   fscanf(saida, "%d", &banco2.horas2);
                    
                   fscanf(saida, "%f", &banco2.valorhora2);
                  
    
                   if (strcmpi (nomegarota, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
                   {    
                        fseek ( saida , tamfile2-1 , SEEK_SET ); // TAMFILE ARMAZENOU A POSIÇÃO DO STATUS NO TXT
                                      if (op6 == 1)                          //'TAMLIFE-1' É A POSIÇÃO EXATA ONDE FICA O STATUS
                                   fputs ( "A" , saida );                  //ASSIM POSSO SUBSTITUIR O STATUS.
                                      if (op6 == 2)
                                   fputs ( "D" , saida );
                                      if (op6 == 3)
                                   fputs ( "S" , saida );
                                   achou2=3;
                                  
                                   fclose(saida);
                   }
                  
               }// fim  while  
                                
                                
                                
                                    
                                    if (achou == 1 || achou2 ==3)
                                   printf("\n\n\nStatus Alterado com Sucesso");
                                
        
                            
                                
                                if (achou == 0 && achou2 ==5)
                                printf("Nennhuma garota encontrada com este nome");
                        
                                
                              
                                getch();
                                main();
             break;                     //Fim do MENU 7 ( ALteração de Status)
        
        
        case 6 : garotas = fopen("garotas.txt", "r+"); //abrindo arquivo em modo de adição      
                      op2=0;
                      tamfile=0;
                      system("color 3F");
                      n_garotas=0;
            
                      system("cls");
                      printf("\n\t\t\tEntrada De Garotas\n\n\n");
                      fseek (garotas , 0 , SEEK_END);
                      tamfile = ftell (garotas);
                      rewind (garotas);
                      if (tamfile == 0)
                         printf ("\n\n\t\tVc não tem Garotas na rua");
                      else
                          {
                          printf("\nDigite o nome da Garota para dar entrada -> ");
                          fflush(stdin);
                          gets(nomegarota);
                          
                          qtd_letras = (strlen(nomegarota));
                          for(qtd_letras+1; qtd_letras < 25; qtd_letras++)
                          nomegarota[qtd_letras] = ('_');
                          nomegarota[25] ='\0';
                      
                          for(i=0; nomegarota[i] !='\0'; i++)
                           if (nomegarota[i] == ' ')
                               nomegarota[i] = '_';
                              
                          for(i=0; nomegarota[i] !='\0'; i++)
                           if (nomegarota[i] == '_')
                               nomegarota[i] = ' ';
                          
                          printf("\n\n\n");
                          achou=0;
                                while(!feof(garotas) && achou ==0)
                                {
                                    
                                    fscanf(garotas, "%s", &banco.nome);
                                    for(i=0;banco.nome[i]!='\0';i++)
                                        if(banco.nome[i]=='_')
                                                banco.nome[i]=' ';
                                    
                                    
                                          
                                    fscanf(garotas, "%s", &banco.status);
                                    fseek (garotas, 0, SEEK_CUR);
                                    tamfile=ftell (garotas);
                                    
                                    fscanf(garotas, "%s", &banco.corcabelo);
                                    for(i=0; banco.corcabelo[i]!='\0';i++)
                                        if (banco.corcabelo[i]== '_')
                                                banco.corcabelo[i]=' ';
                                    
                                  
                                    
                                    fscanf(garotas, "%s", &banco.cor_olho);
                                    for(i=0; banco.cor_olho[i]!='\0';i++)
                                        if (banco.cor_olho[i]== '_')
                                                banco.cor_olho[i]=' ';
                                    
                                    fscanf(garotas, "%f", &banco.valor_hora);
                                    
                                  
                                     if (strcmpi(banco.nome, nomegarota) == 0 )
                                        {
                                        printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                                         if (banco.status == 'S')
                                            {
                                            achou=1;          
                                            
                                            
                                            do
                                               {
                                               printf("\n\n\nDeseja Confirmar a Entrada de %s", banco.nome);
                                               printf("\n[1] SIM");
                                               printf("\n[2] não   -> ");
                                               fflush(stdin);
                                               scanf("%d", &op2);
                                               }while (op2 !=1 && op2 !=2);
                                                      if (op2 == 1)
                                                      {
                                                              garotas = fopen ("garotas.txt" , "r+");
                                                              fseek ( garotas , tamfile-1 , SEEK_SET );
                                                              fputs ( "A" , garotas );
                                                              fclose(garotas);
                                                              
                                                              
                      //Fazer o mesmo com o arquivo txt saida
                                                              
                    
        
                  
                   achou=0;
                  
                   for(i=0;banco.nome[i]!='\0';i++)
                                        if(banco.nome[i]==' ')
                                                banco.nome[i]='_';
                
                saida = fopen("saida.txt", "r+");                            
                while (!feof(saida) && achou ==0) // mudar o status do arquivo saida
                  
                {
                  
                   fscanf(saida, "%s", &banco2.nome2);
                  
                   fscanf(saida, "%s", &banco2.status2);
                   fseek (saida, 0, SEEK_CUR);
                   tamfile2=ftell (saida);
                  
                   fscanf(saida, "%s", &banco2.cliente2);
                  
                   fscanf(saida, "%d", &banco2.horas2);
                    
                   fscanf(saida, "%f", &banco2.valorhora2);
                  
                   if (strcmpi (banco.nome, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
                   {    
                        fseek ( saida , tamfile2-1 , SEEK_SET );
                        fputs ( "A" , saida );
                        achou =1;
                        fclose(saida);
                   }
               }// fim  while  
                                                              
                                                              
                                                              
                                                              
                                                              
                  printf("\n\n Entrada efetuada com sucesso");
               }
                
                }else
                     {
                          printf("\n\n\nEsta garota já esta Aativa ou se encontra Desligada");
                          achou=2;
                                              
                     }
               }
      }
                                
                                if (achou == 0)
                                printf("\n\n\nNennhuma Garota Encontrada com este nome");
                          }    
                                
                                
                                getch();
                                main();
             break;
                
                
        
        case 7 : saida = fopen("saida.txt", "a+"); // apenas para criar o arquivo caso não exista
                 fclose(saida);
            
                 garotas = fopen("garotas.txt", "r+"); // Saida de Garotaas      
                
                  
        op2=0;
        tamfile=0;
        system("color 0F");
        n_garotas=0;
            
        system("cls");
        printf("\n\t\t\tSaida De Garotas\n\n\n");
        fseek (garotas , 0 , SEEK_END);
        tamfile = ftell (garotas);
        rewind (garotas);
        if (tamfile == 0)
           {
           printf ("\n\n\t\tVc não tem Garotas Cadastradas");
           getch();
           main();
           }      
                  
                  printf("\n\nDigite o Nome do Cliente -> ");
                  fflush(stdin);
                  gets(cliente);
                  if (cliente[0] == ' ' || cliente[0] == '\n' || cliente[0] =='\0')
                     {
                     fclose(garotas);
                     main();
                     }
                            
                         qtd_letras = strlen(cliente);
                         for(qtd_letras+1; qtd_letras < 13; qtd_letras++) // laço para adicionar '_',
                         cliente[qtd_letras] = ('_');                  //a partir do fim do nome até a 24 posição
                         cliente[13] ='\0';                           //Determinar que o fim do nome é na 25 posição
                      
                       for(i=0; cliente[i] !='\0'; i++)       //Enquanto for diferente de fim de string
                           if (cliente[i] == ' ')               //preencho com '_' o espaço vazio.
                               cliente[i] = '_';
                        
    
    
                      
                      
                        
                      printf("\nDigite o nome da Garota desejada -> ");
                      fflush(stdin);
                      gets(nomegarota);
                      qtd_letras = (strlen(nomegarota));
                      
                      for(qtd_letras+1; qtd_letras < 25; qtd_letras++)
                      nomegarota[qtd_letras] = ('_');
                      nomegarota[25] ='\0';
                      
                       for(i=0; nomegarota[i] !='\0'; i++)
                           if (nomegarota[i] == ' ')
                               nomegarota[i] = '_';    
                          
                          printf("\n\n\n");
                          achou=0;
                      while(!feof(garotas) && achou ==0)
                          
                      {
                                    
                          fscanf(garotas, "%s", &banco.nome);
                          for(i=0;banco.nome[i]!='\0';i++)
                              if(banco.nome[i]==' ')
                                   banco.nome[i]='_';
                                    
                          fscanf(garotas, "%s", &banco.status);
                          fseek (garotas, 0, SEEK_CUR);
                          tamfile=ftell (garotas);
                                    
                          fscanf(garotas, "%s", &banco.corcabelo);
                          for(i=0; banco.corcabelo[i]!='\0';i++)
                               if (banco.corcabelo[i]== '_')
                                   banco.corcabelo[i]=' ';
                                    
                          fscanf(garotas, "%s", &banco.cor_olho);
                              for(i=0; banco.cor_olho[i]!='\0';i++)
                                   if (banco.cor_olho[i]== '_')
                                        banco.cor_olho[i]=' ';
                                    
                          fscanf(garotas, "%f", &banco.valor_hora);
                          
                          
                          if (strcmpi(banco.nome, nomegarota) == 0 )
                          {
                             achou= 2;
                             if (banco.status == 'A')
                             {
                                achou=1;
                             }
                          }
                }// fim while do arquivo garotas
                
                if (achou == 0)
                {                
                                 printf("Nennhuma Garota Encontrada com este nome");
                                 getch();
                                 fclose(garotas);
                                 main();
                }
                
                if (achou == 2)
                                {
                                        
                                for(i=0; cliente[i] !='\0'; i++)      
                                         if (cliente[i] == '_')              
                                              cliente[i] = ' ';
                                    for(i=0; banco.nome[i] !='\0'; i++)      
                                             if (banco.nome[i] == '_')              
                                                 banco.nome[i] = ' ';
                                 printf("%s não se encontra disponivel  %s", banco.nome, cliente);
                                 fclose(garotas);
                                 getch();
                                 main();
                                }
                                
        if (achou ==1)      
        {        
                        
                for(i=0; banco.nome[i] !='\0'; i++)
                if (banco.nome[i] == '_')
                banco.nome[i] = ' ';
                
                printf("%s | %c | %s | %s | %.2f \n", banco.nome, banco.status, banco.corcabelo, banco.cor_olho, banco.valor_hora);
                                      
                printf("\n\nPor quantas Horas deseja alugar %s", banco.nome);
                fflush(stdin);
                scanf("%d", &horas);
    
                do
                {
                  printf("\n\n\nDeseja Confirmar o aluguel dessa garota  por %d horas no valor de %.2f",  horas, banco.valor_hora*horas);
                  printf("\n[1] SIM");
                  printf("\n[2] não   -> ");
                  fflush(stdin);
                  scanf("%d", &op2);
                }while (op2 != 1 && op2 != 2);
                      
                       if (op2 == 1)
                          {
                           fseek ( garotas , tamfile-1 , SEEK_SET );
                           fputs ( "S" , garotas );
                           fclose(garotas);
                                    
                  for(i=0;banco.nome[i]!='\0';i++)     //enquanto não terminar a string
                                        if(banco.nome[i]==' ')           //Verifica se a 0 caracter '_'
                                                banco.nome[i]='_';
                  
                   //Verificando se tem nome repetido no arquivo saida
                   saida = fopen("saida.txt", "r+");
                   valorhora= banco.valor_hora* horas;
                
                   achou2=0;
                if (achou== 1)
                while (!feof(saida) && achou2 ==0)
                  
                {
                  
                   fscanf(saida, "%s", &banco2.nome2);
                  
                   fscanf(saida, "%s", &banco2.status2);
                   fseek (saida, 0, SEEK_CUR);
                   tamfile2=ftell (saida);
                  
                   fscanf(saida, "%s", &banco2.cliente2);
                  
                   fscanf(saida, "%d", &banco2.horas2);
                    
                   fscanf(saida, "%f", &banco2.valorhora2);
                  
                  
                   if (strcmpi (banco.nome, banco2.nome2) == 0 ) // Caso já tenha no arquivo saida.txt o nome só mudar o status para A
                   {
                   fseek ( saida , tamfile2-1 , SEEK_SET );
                   fputs ( "S" , saida );
                   achou2 =1;
                   }
               }// fim  while  
              
                        if (achou2 ==0)
                       {
                          banco.status = 'S';
                          fprintf(saida, "\n%s %c %s %.2d %.2f", banco.nome, banco.status, cliente, horas, valorhora);
                        }
                        for(i=0; cliente[i] !='\0'; i++)       //Enquanto for diferente de fim de string
                           if (cliente[i] == '_')               //preencho com '_' o espaço vazio.
                               cliente[i] = ' ';
                        
                   printf("\n\n Muito Obrigado e Volte sempre %s", cliente);
                          
                          }// Fim Opção De confirmação de saida de garota              
    
         }// fim if achou =1
                              
                                getch();
                                fclose(garotas);
                                main();
             break;
            
            
            
             case 0 :  exit(0); //Fecha o Programa
            
            
          
            
        
        }// FIM DO MENU
        
        printf("\n\n");
        fclose(garotas);
        getchar();
        
        return 0;
    }                                   //FIM

×
×
  • Criar Novo...