Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cutinho

loop

Recommended Posts

Boa tarde pessoal

É o seguinte, faço sistemas de informação na UFS, meu professor passou uma questão só que sou novo e estou com extrema dificuldade vocês podem me ajudar a resolver? Eu quero ajuda pois quero entender e não achar feito.

 

1) Escrever um programa C para ler uma série de pares de valores, cada par de valores representa um intervalo, e imprimir para cada par de valores todos os valores do intervalo, inclusive os limites do intervalo, que sejam múltiplos de 3. Um valor de início de intervalo negativo indicará final dos intervalos. Os valores devem ser impressos obedecendo ao layout de saída, como dado no exemplo abaixo:

Intervalo 1: 22 – 29 valores: 24 27
Intervalo 2: 203 – 218 valores: 204 207 210 213 216
Intervalo 3: 15 – 22 valores: 15 18 21
Eu comecei mas não conseguir continuar e nem sei se é com for ou while
#include <stdio.h>
#include <stdlib.h>
main(){
int lim, valor_1, valor_2,i; *Eu não sei como fazer para imprimir os n°
printf("digite o primeiro valor"); multiplos de 3 e a condição.
scanf("%d", &valor_1);
printf("digite o segundo valor");
scanf("%d", &valor_2);
for...
Muito grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma de verificar o resto de uma divisão é utilizando módulo ( operador "%" ). Por exemplo, para saber o resto da divisão 3 / 2:

float resultado = 3 % 2;
printf("%f", resultado);

Bom, a lógica: Todo número dividido por 3 onde seu resto é 0, é um divisor. Você já tem o primeiro e o segundo número. Então, faça um loop para percorrer esse intervalo. A condição para exibir os números pode ser feita desta forma:

/* "i" vai receber o primeiro número e vai permanecer no loop enquanto
 * "i" for menor/igual ao segundo número lido.
 */
for (i = valor_1; i <= valor_2; i++)
   if((i % 3) == 0)
      printf("%i", i);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia eu tentei mas dá erro no while me ajuda(eu uso o devc++

 

 

#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
         main(){
                int j,x,y,i;
                printf("digite o primeiro valor ordem crescente");
                scanf("%d",&x);
                printf("digite o segundo valor ");
                scanf("%d",&y);
                
                while(i<=y){
                for(i=x;i<=y;i++ ;)
                If((i%3)==0)
                printf("%d",i);
                }
                 
  
  getche();
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

int inicio, final;
scanf("%d %d", &inicio, &final);
 
for(; inicio<=final; inicio++) {
    if (inicio%3==0)
       printf("%d ", inicio);
}

 

Ou então

 

 

int inicio, final;
scanf("%d %d", &inicio, &final);
 
// Procura o primeiro inteiro divisível por 3
for(;inicio <= final && inicio % 3 != 0; inicio++);
 
for(; inicio <= final; inicio += 3)
   printf("%d ", inicio);

 

Aí depende do que vc quer mostrar pro professor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera finalmente estou quase lá (o devc++ estava dando erro) o code blocks compilou, só que agora eu preciso de uma condição para parar, pois a questão pede apenas um número negativo e com o comando que eu fiz só para com os dois, e também para ele pedir para digitar novos valores.Muito Obrigado Neelix e Isis.

 

#include <stdio.h>
#include <conio.h>
main(){
int inicio,fim;
printf("digite valores para inicio e fim do intervalo:\n");
scanf("%d %d",&inicio,&fim);
if(inicio<0 || fim<0)
printf("finalizando programa");
while(inicio >= 0 || fim >=0){
for(;inicio<=fim;inicio++)
if(inicio%3==0)
printf("%d ",inicio);
}
getche();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>

int main(void)
{
    int valor_inicial, valor_final;

    for(;;)
    {
        printf("\nDigite o valor p/ Inicio (valores negativos finalizam o programa): ");
        scanf("%i", &valor_inicial);
        if (valor_inicial >= 0)
        {
            printf("Digite o valor Final: ");
            scanf("%i", &valor_final);

            if (valor_final > valor_inicial)
            {
                int contador;
                for (contador = valor_inicial; contador <= valor_final; contador++)
                    if (!(contador % 3)) /*se for 0*/
                        printf("%i ", contador);
            } else
                printf("O segundo valor precisa ser maior que o primeiro.\n");
        }
        else break;
    }
    scanf("%*c");
}

Dei nomes fáceis para facilitar o entendimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado gente com a ajuda de vocês consegui ficou assim

#include <stdio.h>
#include <conio.h>
main(){
int inicio,fim;
printf("Digite valor para inicio e fim do intervalo:\n");
scanf("%d %d",&inicio,&fim);
while(inicio >= 0){
for(;inicio<=fim;inicio++)
if(inicio%3==0)
printf("%d ",inicio);
printf("\nDigite novos valores:\n");
scanf("%d %d",&inicio,&fim);
}
printf("fim do programa");
getche();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.