Jump to content
Fórum Script Brasil

evandrolnr

Membros
  • Content Count

    10
  • Joined

  • Last visited

Posts posted by evandrolnr

  1. Agora sim, está com o tempo de execução mais coerente.

    O loop de 1 bilhão de iterações levou 30 segundos.

    Obrigado!

    /* TestaLoop.c */
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    /*   for(int i=0;i< 5000000;i++)
          for(int j=0;j< 5000000;j++)
             if (i == 3000000 && j == 3000000) printf("\nachou i e j %d\t%d\n",i,j);
    */
    
        for(volatile int i=0;i< 1000000;i++)
          for(volatile int j=0;j< 1000;j++)
             if (i == 10000 && j == 500) printf("\nachou i e j %d\t%d\n",i,j);
    
    
       return 0;
    }

  2. Você está colocando o nível de otimização como zero?

    Abraços!

    Apenas estou avaliando a performance das linguagens.

    Veja alguns testes comparativos

    Liguagem C 25 trilhões de iterações em meio segundo

    Java 10 bilhões de iterações em 25 segundos

    Natural* 5 milhões de iterações em 5 segundos

    *Linguagem Nativa do banco de dados Adabas

  3. Pessoal, estou impressionado com a velocidade de execução de um loop na linguagem C.

    O programa abaixo gera 25 trilhões de iterações, e é executado imediatamente (não leva nem meio segundo).

    Estou fazendo alguma coisa errada, ou é isto mesmo? :blink:

    Estou usando sistema operacional Unix, computador IBM, AIX.

    /* TestaLoop.c */
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
       for(int i=0;i< 5000000;i++)
          for(int j=0;j< 5000000;j++)
             if (i == 3000000 && j == 3000000) printf("\nachou i e j %d\t%d\n",i,j);
    
       return 0;
    }

  4. Estive estudando a diferença entre o uso dos caracteres '\r' e '\n',

    e observei que:

    1) quando usamos '\r' tudo o que já foi digitado

    na linha corrente é descartado, e prevalece o novo texto.

    2) quando usamos '\n' é impresso o que está na linha corrente

    e o programa pula para a próxima linha para iniciar o novo texto.

    No exemplo do programa a seguir, a saída é:

    inicio

    testando2

    testando3

    testando4

    /* TestaReturn1.c */
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        printf("inicio");
        printf("\n\ntestando1\rtestando2\n\n");
        printf("\n\ntestando3\ntestando4\n\n");
    
        return 0;
    }

    Alguém comenta? :rolleyes:

  5. A versão do comilador c que estou usando (Oracle ProC) não tem o include <conio.h>. Peguei um programa de treinamento que usa '\r' como teste de <enter> (vide abaixo), e converti a função getche() em scanf(). A versão do programa que eu fiz só funciona se eu usar '\n' como teste de<enter> ?! :blush:

    /* Contachar.C */
    /* Conta caracteres de uma frase */
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h> para getche() */
    int main()                
    {    
        int cont=0; /* Contador */
    
        while(getche() != '\r') /* Enquanto não [Enter]  */
            cont++; /* Corpo do laço */
        /* Fora do laço */
        printf("\nO número de caracteres é %d\n" , cont);
    
        system("PAUSE");    
        return 0;        
    }

  6. Acho que descobri o que estava errado com o <enter>.

    Ao pressionar <return> obtemos uma nova linha.

    O caracter que indica nova linha é '\n', e não '\r'.

    Não sei ainda em que caso é usado '\r'.

    O programa ficou assim:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        char resp;
        char resp1 = '\n';
        scanf("%c",&resp); /* é digitado enter para teste */
        printf("\nresp %d\n",resp);
        printf("\nresp1 %d\n",resp1);
        if ( resp == '\n' )
           printf("\nDigitou enter\n");
        else
           printf("\nNão digitou enter\n");
            return 0;
    }

  7. Boa noite. Fiz um programa que recebe um <enter> como argumento e testa a

    tecla digitada. O compilador não entende o meu enter como sendo tal!?

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        char resp;
        char resp1 = '\r';
    
        scanf("%c",&resp); /* é digitado <enter> para teste */
        printf("\nresp %d\n",resp);
        printf("\nresp1 %d\n",resp1);
        if ( resp == '\r' )
           printf("\ndigitou enter\n");
        else
           printf("\nnão digitou enter\n");
        return 0;
    }

  8. Pessoal, descobri o que estava errado. O Enter ocupa um caracteres, portanto quando digito 'a'<enter> estou digitando dois caracteres. Para driblar este problema, o programa precisa prever um caractere enter. :rolleyes:

    /* Adivinha1z.c */
    #include <stdio.h>
    #include <stdlib.h>  /* para system() e rand()  */
    int main()
    {
        char resp; /* resposta do usuário */
        char resp1;
        char enter;
    
        printf("\n\nDigite uma letra:\n");
        scanf("%c%c",&resp,&enter);
        printf("\nVocê digitou %c",resp);
    
        printf("\n\nDigite uma letra:\n");
        scanf("%c%c",&resp1,&enter);
        printf("\nVocê digitou %c",resp1);
    
        return 0;

  9. Pessoal, boa tarde! Sou novo em linguagem C, e estou fazendo um treinamento!

    Estou treinando para usar o Oracle ProC. O Oracle ProC que uso não tem a biblioteca <conio.h>

    Por isto, estou usando como entrada de dados a função scanf()

    Tenho um programa que recebe dois caracteres. O primeiro é solicitado e mostrado a seguir.

    O segundo, durante a execução, não é solicitado (o programa pula o comando).

    O que estou fazendo de errado? :huh:

    /* Adivinha1z.c */
    #include <stdio.h>
    #include <stdlib.h>  /* para system() e rand()  */
    int main()
    {
        char resp; /* resposta do usuário */
        char resp1;
    
        printf("\n\nDigite uma letra:\n");
        scanf("%c",&resp);
        printf("\nVocê digitou %c",resp);
    
        printf("\n\nDigite uma letra:\n");
        scanf("%c",&resp1);
        printf("\nVocê digitou %c",resp1);
    
        return 0;
    }

×
×
  • Create New...