Ir ao conteúdo
  • Cadastre-se

catherineprokhorov

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

posts postados por catherineprokhorov

  1. @arfneto

    o que eu quero é fazer isso

     

    A leitura do ficheiro deverá ser realizada até detectar o fim do ficheiro.

    Caso não seja possível abrir o ficheiro, o programa deverá imprimir a mensagem Error opening file e deverá voltar a esperar novo comando do utilizador.

    Para cada bomba, deverá existir o estado, uma coordenada X e uma Y. Caso isso não se verifique, significa que o ficheiro está mal formatado. Nesse caso o programa deverá mostrar a mensagem File is corrupted e deverá voltar a esperar novo comando do utilizador. O caracter que separa o estado, a coordenada X e a coordenada Y poderá ser um espaço ou um tab, e todo o texto que apareça após a coodenada Y da bomba deverá ser simplesmente ignorado.

    A mesma mensagem deverá ser mostrada caso alguma coordenada presente no ficheiro não seja válida (fora dos limites). Se isso acontecer, a leitura do ficheiro deverá terminar e o programa deverá voltar a esperar novo comando do utilizador.

    Caso seja detectado algum erro no ficheiro, o mapa deverá ser limpo, eliminando todas as bombas que tiverem sido lidas até ao momento. ** Não é necessário guardar uma cópia do mapa existente. Se ocorrer um erro na leitura do ficheiro, o mapa deverá ficar limpo (sem bombas), independentemente de existirem bombas no mapa antes da leitura do ficheiro.

    '.' significa bomba armada

    '*' bomba desarmada

    a variavel texto é uma das opções do programa 

    2 horas atrás, catherineprokhorov disse:

    @arfneto eu ja fiz isso, eu vou mostrar o meu código

    o que eu quero é fazer um campo minado e ler essas coordenadas pelo ficheiro criado ja esta feito ele imprime um tabuleiro com as coordenadas passadas ao ficheiro mas só que ele só escreve as coordenadas se elas forem de 0 a 9 se for de >10 não conta.

    e a outra coisa que não estou a conseguir verificar é caso se dentro do ficheiro tiver algo escrito eu quero detetar isso e escrever uma mensagem de erro no ecra

    
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define TAMANHO 6000
    int main ()
    {
      char texto[TAMANHO];
        char nome_do_ficheiro[TAMANHO], str[TAMANHO];
        FILE *arq2;
        char novo_ficheiro[TAMANHO];
        char campominado[25][25];
        int linha, coluna;
        int count=0;
        int count1linhas = 0;
        int count2colunas = 0;
        char temp [TAMANHO]; /*variavel temporaria*/
        char tempcoluna[TAMANHO];
        FILE *arq1;
        int x, y;
    
        printf("+-----------------------------------------------------\n");
        printf("read <filename>     - read input file\n"
        "show                - show the mine map\n"
        "trigger <x> <y>     - trigger mine at <x> <y>\n"
        "plant <x> <y>       - place armed mine at <x> <y>\n"
        "export <filename>   - save file with current map\n"
        "quit                - exit program\n" 
        "sos                 - show menu\n");
        printf("+-----------------------------------------------------\n");
    if(strcmp(texto, "read") == 0){ 
    	scanf("%s", nome_do_ficheiro);
       	arq1 = fopen (nome_do_ficheiro, "r");
        if(arq1 == NULL)
      	{
           printf("Error opening file\n");
      	}
      	while(!feof(arq1))
        {
          strcpy(str, "\0");
          fgets(str, TAMANHO, arq1);
          if(!feof(arq1))
          {
            if(str[0] == '.' || str[0] == '*' )
            {                    
              count1linhas = 2;
              count2colunas=0;
              while(str[count1linhas] != ' ')
              {
                temp[count1linhas-2] = str[count1linhas];
                count1linhas++;
              }
              linha = atoi(temp);
              count1linhas++;
    
              while(str[count1linhas] != '\n')
              {
                tempcoluna[count2colunas] = str[count1linhas];
                count1linhas++;
                count2colunas++; 
              }
              coluna = atoi(tempcoluna);
    
              if(str[0] == '*')
              {
              	campominado[linha][coluna] = '*';
    
              }else if(str[0] == '.')
              {
              	campominado[linha][coluna] = '.';
              }          
           }
               count++;
         }
    
        }
                        
        fclose(arq1);
      
    }

     

    meu ficheiro de in

    Spoiler

     

    put

    25  25
    . 0 1
    . 0 2
    * 0 3
    * 5 9
    * 6 4
    * 6 5
    eojah (aqui eu quero poder mostrar uma mensagem de erro)
    . 1 4
    . 2 3
    . 2 6
    . 2 9
    . 3 4
    . 7 6
    . 8 3
    . 18 6
    . 12 2
    . 22 10
     

     

  2. @arfneto eu ja fiz isso, eu vou mostrar o meu código

    o que eu quero é fazer um campo minado e ler essas coordenadas pelo ficheiro criado ja esta feito ele imprime um tabuleiro com as coordenadas passadas ao ficheiro mas só que ele só escreve as coordenadas se elas forem de 0 a 9 se for de >10 não conta.

    e a outra coisa que não estou a conseguir verificar é caso se dentro do ficheiro tiver algo escrito eu quero detetar isso e escrever uma mensagem de erro no ecra

    #include <stdio.h>
    int main ()
    {
    if(strcmp(texto, "read") == 0){ 
    	scanf("%s", nome_do_ficheiro);
       	arq1 = fopen (nome_do_ficheiro, "r");
        if(arq1 == NULL)
      	{
           printf("Error opening file\n");
      	}
      	while(!feof(arq1))
        {
          strcpy(str, "\0");
          fgets(str, TAMANHO, arq1);
          if(!feof(arq1))
          {
            if(str[0] == '.' || str[0] == '*' )
            {                    
              count1linhas = 2;
              count2colunas=0;
              while(str[count1linhas] != ' ')
              {
                temp[count1linhas-2] = str[count1linhas];
                count1linhas++;
              }
              linha = atoi(temp);
              count1linhas++;
    
              while(str[count1linhas] != '\n')
              {
                tempcoluna[count2colunas] = str[count1linhas];
                count1linhas++;
                count2colunas++; 
              }
              coluna = atoi(tempcoluna);
    
              if(str[0] == '*')
              {
              	campominado[linha][coluna] = '*';
    
              }else if(str[0] == '.')
              {
              	campominado[linha][coluna] = '.';
              }          
           }
               count++;
         }
    
        }
                        
        fclose(arq1);
      
    }

     

    meu ficheiro de input

    25  25
    . 0 1
    . 0 2
    * 0 3
    * 5 9
    * 6 4
    * 6 5
    eojah (aqui eu quero poder mostrar uma mensagem de erro)
    . 1 4
    . 2 3
    . 2 6
    . 2 9
    . 3 4
    . 7 6
    . 8 3
    . 18 6
    . 12 2
    . 22 10
     

    • Curtir 1
  3. oii, gostaria que alguem ajudasse-me ,eu quero ler numeros grandes em ficheiros mas no codigo que eu tenho só me considera uma casa decimal, por exemplo tenho um ficheiro que lê um tabuleiro desta forma:

    25 25 ->coordenada do vetor do tabuleiro

    . 0 1 (o '.' representa a bomba e os numeros as coordenas x e y)

    mas quando tenho essas coordenadas não me lê esses números porque não os considera

    . 12 0

    . 10 11

    . 0 13

     

    e outra coisa que eu quero fazer é se no ficheiro se tiver uma palavra escrita alem de coordenadas eu quero que dê uma mensagem de erro assim:

    25 25

    . 0 1

    . 12 0

    . 10 11

    . 0 13

    ola ->tem que dar mensagem de erro se tiver algum do genero

  4. @kginsim é mexer com vetores

    o que eu estou tentando fazer é uma coisa parecida com isto, mas não me dá o output que eu quero.

    estou tentando fazer isso:

    r 2 ola tudo bem?

    output: 

    r2 m?ola tudo be

     

    mas o codigo que eu fiz não faz isso, mas sim isso:

    r 2 ola tudo bem?

    output:

    r 2 ola tudo bem?ola tudo bem?

    mas n quero isso.

     

    #include <stdio.h>
    #include <string.h>
    #define LETRAS 166
    int main ()
    {
        char caracter;
        int nCarater;
        char texto[LETRAS];
        char texto_copiado[LETRAS];
        char direita;
        printf(" Insira um carater (r,h,q), depois um numero, depois o texto:\n");
        scanf("%c %d %[^\n]s", &caracter, &nCarater, texto);
    
        
            if(nCarater>0)
            {
                texto_copiado[LETRAS] = texto[LETRAS] >> nCarater;
                strcpy(texto_copiado, texto);
                printf("%c %d %s %s", caracter, nCarater, texto_copiado,texto);
                    
            }else if(nCarater<0)
            {
                texto_copiado[LETRAS] = texto[LETRAS] << nCarater;
                strcpy(texto_copiado, texto);
                printf("%c %d %s %s.", caracter, nCarater, texto_copiado,texto);
            }
        
        return 0;
    }

     

    @Midori sim é isso mesmo que  eu quero fazer, poderia dar uma olhada no meu codigo??

  5. @devair1010 

    zodiac

    Pretende-se fazer um programa que com base na data de nascimento e data actual determina a idade e o signo do zodiaco. Além disso, o programa deverá também determinar se a pessoa está apta para trabalhar (idade >= 16) ou se é elegível para a reforma (idade >= 66 anos e 5 meses)

     

    Descrição do problema

    O programa recebe um caracter e 6 inteiros. O caracter serve para escolher qual o output a apresentar:

    'a' - idadade

    'z' - signo do zodiaco

    'r' - informação sobre se está apto para trabalhar ou elegível para a reforma

    't' - toda a informação

    Os 6 inteiros correspondem a dia, mês e ano de nascimento e dia, mês e ano atual

    Exemplo:

    a 05 08 2015 01 01 2020

    Opção 'a'

    O programa deverá devolver a idade do utilizador Exemplo:

    a 11 1 1970 2 6 2020 50 anos

     

     

     

     

     

    o exercício pede para fazer um ZODIACO, eu depois posso partilhar o código inteiro, mas só me falta validar o mes de fevereiro, ver quando ele tem 28 e quando terá 29 dias.

    por exemplo se ele tiver 28 dias em 2020 e o utilizador colocou 29 dias aquilo tem que apresentar a mensagem: data atual invalida, e caso seja verdade teria que aparecer no output:

    a 15 09 2000 20 03 2020

    20 anos

    e o que aparece é :

    a 15 09 2000 20 03 2020

    e neste exercício não é permitido ciclos infelizmente

  6. olá, eu tenho esse código, e o objetivo é verificar o mês de fevereiro, mas infelizmente quando a data ta certa ele não faz a condição que eu quero e simplesmente o programa termina. Ou seja, ele tinha que ver o if do carater e imprimir a idade, a data 29 02 2020  o programa aceita esta data só que termina imediatamente o programa. podem ajudar-me , por favor.

     

     

     

    #include <stdio.h>

    int main (void)

    {

        char carater ;

        int dia_do_nascimento, mes_do_nascimento, ano_do_nascimento;

        int dia, mes, ano, calcula_idade;

        int dia1,ano1,mes1;

        int junto, idade;

         

        scanf("%c %d %d %d %d %d %d", &carater, &dia_do_nascimento, &mes_do_nascimento, &ano_do_nascimento, &dia, &mes, &ano);

     

        if(dia >31){

            if(mes == 1 || mes ==3 || mes ==5 || mes ==7 || mes ==8 || mes ==10 || mes == 12){

                printf("Data actual invalida \n");

            }

        }else if(dia>30){

            if (mes == 4 || mes == 6 || mes == 9 || mes == 11){

                printf("Data actual invalida \n");

            }

            

    }else if(mes == 2 && dia >28){

                if(!(ano%4 == 0 && ano %100 != 0) || ano % 400 == 0){

                    printf("Data actual invalida \n");

                }

    }else if(mes == 2 && dia >29){

                if(!(ano%4 == 0 && ano %100 != 0) || ano % 400 == 0){

                    printf("Data actual invalida \n");

                }

        }else{

     

            if(dia_do_nascimento>31){

                if(mes_do_nascimento == 1 || mes_do_nascimento ==3 || mes_do_nascimento ==5 || mes_do_nascimento ==7

                || mes_do_nascimento ==8 || mes_do_nascimento ==10 || mes_do_nascimento == 12){

                    printf("Data de nascimento invalida \n");

                }

            }else if(dia_do_nascimento>30){

                if (mes_do_nascimento == 4 || mes_do_nascimento == 6 || mes_do_nascimento == 9 || mes_do_nascimento == 11){

                printf("Data de nascimento invalida \n");

                }

     

            }else{

     

                if((dia_do_nascimento<1 || dia_do_nascimento>31) || (dia<1 || dia >31)){

                    printf("Data de nascimento invalida \n");   

     

                }else{

     

                    if((mes_do_nascimento <1 || mes_do_nascimento >12) || (ano_do_nascimento<=1900 || ano_do_nascimento>2020) || (mes<mes_do_nascimento && ano == ano_do_nascimento)){

                        printf("Data de nascimento invalida \n");   

     

                    }else{

                    

                        if((mes<1 || mes>12) || (ano <=1900 || ano > 2020)){

                            printf("Data actual invalida \n");

                                

                        }else{

                                

                            if((ano < ano_do_nascimento) || (dia<dia_do_nascimento && ano_do_nascimento == ano)){

                                printf("Data actual inferior a data de nascimento");

                                

                            }else{

                                

                                if (carater == 'a'){

                                    

                                    calcula_idade =   365*ano + 30*mes + dia- 365*ano_do_nascimento - 30*mes_do_nascimento - dia_do_nascimento;

                                    

                                    ano1 = calcula_idade/365;

                                    calcula_idade = calcula_idade%365;

                                    

                                    mes1 = calcula_idade/30;

                                    calcula_idade = calcula_idade%30;

                                    

                                    dia1 = calcula_idade;

                                    printf("%d anos", ano1);

    }

    }

    }

    }

    }

    se alguem poder ajudar, é importante

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...