Ir ao conteúdo

Posts recomendados

Postado

Olá, voltei, gostaria de saber o que falta nesse código.

 

Ouvimos sempre como os computadores são velozes. Como você pode determinar 
a rapidez com que seu equipamento realmente funciona? Escreva um programa 
com um loop while que conte de 1 a 3.000.000, de 1 em 1. Toda vez que a 
contagem atingir um múltiplo de 1.000.000, imprima este número na tela. Use seu 
relógio para cronometrar quanto tempo leva cada milhão de repetições do loop.

 

#include <stdio.h>

int main(){
    int contador;
    
    while(contador <=3000000){
        printf("%d  ", contador);
        contador ++;
        
        if((contador % 1)==0){
            printf("%d  ", contador);
        }
            
    }

    return 0;
}

 

 

 

grato.

  • Obrigado 1
Postado
#include <stdio.h>

int main(){
    int contador;
    
    while(contador <=3000000){
        //printf("%d  ", contador);
        contador ++;
        
        if((contador % 1000000)==0){
            printf("%d  ", contador);
        }
            
    }

    return 0;
}

Mas duvido que consiga cronometra...

  • Curtir 1
Postado

@Flávio Pedroza Rapaz eu até fiz assim como você fez, porém eu sou péssimo em interpretar o enunciado, quando ele diz: Toda vez que a contagem atingir um múltiplo de 1.000.000, imprima este número na tela.

 

Isso me gera muitas dúvidas.

 

 

  • Curtir 2
Postado
34 minutos atrás, Thmpv disse:

@Flávio Pedroza Rapaz eu até fiz assim como você fez, porém eu sou péssimo em interpretar o enunciado, quando ele diz: Toda vez que a contagem atingir um múltiplo de 1.000.000, imprima este número na tela.

 

Isso me gera muitas dúvidas.

 

 

Toda vez que o número chegar em 1.000.000, 2.000.000 e 3.000.000 você imprime na tela.

  • Curtir 2
Postado
3 minutos atrás, Flávio Pedroza disse:

Toda vez que o número chegar em 1.000.000, 2.000.000 e 3.000.000 você imprime na tela.

Pelo que eu vejo não é só isso, você teria que mostrar o tempo decorrido na tela.

 

para mostrar o tempo decorrido @Thmpv você pode fazer algo assim.

#include <stdio.h>
#include <time.h>


int main(void)
{
    clock_t tempo_decorrido = clock();
    printf("Pressione enter para ver o tempo decorrido desde que o programa foi iniciado\n");
    getchar();
    
    tempo_decorrido = clock()-tempo_decorrido;
    printf("O tempo decorrido em segundos foi %f\n", ((float)tempo_decorrido)/CLOCKS_PER_SEC);
    printf("Pressione enter para continar.\n");
    getchar();
    return(0);
}

 

link para testar

  • Curtir 2
Postado
Em 12/03/2022 às 22:19, Thmpv disse:

Toda vez que a contagem atingir um múltiplo de 1.000.000, imprima este número na tela.

 

Isso me gera muitas dúvidas.

É como diz na definição dos múltiplos dos números inteiros: São números obtidos pela multiplicação de n (que no caso é 1 milhão) por um fator. No seu código o contador vai representar esse número, então você só tem que calcular o módulo dele por 1 milhão (e não por 1 como fez) e mostrar a mensagem quando for igual a zero.

  • Obrigado 1
Postado

@Thmpv Ola,

 

Aplicada as correções para esse exercício, espero que tenha iniciado a variável de controle do loop , reconheço em novos programadores algumas práticas que vejo em livros velhos encardidos de linguagem c que na atualidade são desnecessárias. Sugiro que declare, doravante, as variáveis junto a seu bloco lógico.

 

Fora as questões estéticas, uma resposta tem seu código-fonte como este:

#include"stdio.h"
int
main(void){
  int contador = 1; while(contador<=3000000){
  	if((contador%1000000)==0){
		printf("%d ", contador);
		}
	++contador;
	}
  putchar('\n');
  return 0;
  }

OU

#include <stdio.h>
int main(void){
  
  int contador = 1;
  while(contador<=3000000){
  	if((contador%1000000)==0){
		printf("%d ", contador);
	}
	++contador;
  }
  putchar('\n');
  
  return 0;
}

 

 

Em 12/03/2022 às 18:21, Thmpv disse:

Use seu relógio para cronometrar quanto tempo leva cada milhão de repetições do loop

Tentar é divertido, além humanamento impossível ter o registro exato, existe também a possibilidade de sua impressão ("1000000 2000000 3000000 ") não ocorrer número por número e sim de uma só vez; na saída do loop ou do programa.

 

🙂 — É isso!

 

  • Curtir 1
Postado

@mauro_b Mais e a parte que diz que tem rolar o loop de 1 a 3000000?

Na verdade não consegui juntas as duas coisas. Ficou igual e esse ai, e um outro contando o loop numero por numero.

Minha dúvida era em fazer um codigo que desse para mostrar os dois(multiplos e loop).

 

Obrigado.

  • Curtir 1
  • Confuso 1
Postado
11 horas atrás, Thmpv disse:

Mais e a parte que diz que tem rolar o loop de 1 a 3000000?

11 horas atrás, Thmpv disse:

Minha dúvida era em fazer um codigo que desse para mostrar os dois(multiplos e loop).

Quer a impressão do contador, não somente a cada acúmulo de 1kk e sim também a cada incremento dele?

print_return_line.gif.1537ddd24e029af52d27f38f9196b9bd.gif

Em 12/03/2022 às 18:21, Thmpv disse:

 while(contador <=3000000){
        printf("%d  ", contador);
        contador ++;

Ao utilizar a impressão usual encheio a tela do terminal de caracteres, para contornar esse formato use o retorno ao inicial da linha com impressão carriage return ('\r').

#include"stdio.h"
int
main(void){
  int contador = 0; while(contador<3000000){
	++contador;
	printf("\r%d",contador);
	if((contador%1000000)==0){
		printf("\t%d\n",contador);
		}
	}
  return 0;
  }

 

 

Assim ou estou viajando, @Thmpv

🙂 

  • Curtir 1
Postado

Com o relógio.

 

#include <stdio.h>
#include <time.h>

int main()
{
    int contador = 0;

    struct timespec start, stop;
    clock_gettime(CLOCK_REALTIME, &start);

    while (contador < 3000000)
    {
        ++contador;
        printf("\r%d", contador);
        if ((contador % 1000000) == 0)
        {
            clock_gettime(CLOCK_REALTIME, &stop);
            double elapsed = ((stop.tv_sec - start.tv_sec) * 1e6 + (stop.tv_nsec - start.tv_nsec) / 1e3) / 1e6;
            printf("\t%d em %lfsec\n", contador, elapsed);
        }
    }

    return 0;
}

 

Postado
Em 18/03/2022 às 22:38, Thmpv disse:

Mais e a parte que diz que tem rolar o loop de 1 a 3000000?

Na verdade não consegui juntas as duas coisas. Ficou igual e esse ai, e um outro contando o loop numero por numero.

 

Não é pra imprimir os outros, é só pra contar, ele só vai imprimir quando for múltiplo de 1000000

 

while (contador <= 3000000) 
{
    if (contador % 1000000 == 0) 
        printf("%d  ", contador);
        
    contador ++;
}
                          

Não esqueça que é de 1 a 3000000, então o contador começa em 1 e não em zero.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...