Ir ao conteúdo
  • Cadastre-se

amigos me ajudem aqui [condições]


italobrenun

Posts recomendados

amigos eu não consigo achar o erro, já estou uma hora tentando fazer isso aqui é ja estou irritado bom o problema é um seguinte:

Contrua um programa em Linguagem C que leia 30 números naturais incluindo o zero, para um vetor. Outro vetor com a mesma quantidade de posições deverá ser criado, onde cada posição devera incluir:

* O drobro do valor presente na mesma posição, caso o valor seja par

* O triplo do valor presente na mesma posição caso caso seja divisivel por 3

* O quíntuplo do valor caso seja divisivel por 5

OBS: caso o valor não se encaixe em nenhum do critérios acima, ou se encaixe em mais de um , deverá ser armazenado o mesmo na integra.

:mad:A minha condição de ser par e ser divisil por 3 ele fica o triplo ja tentei e não acho um jeito para consertar me ajudem por favor.

Quanto o usuário digita 6 ou seja divisil por 3 é par aparece 18.:confused:

AGRADEÇO DESDE JÁ :lol:

Olhem meu código:eek: por favor:


//Questão 3
// Italo Brenun da Silva Gomes
#include <stdio.h>
#include <stdlib.h>

int main()
{
int vet[3],vet2[3];
int x,aux,i,cont;
//--------------------------
aux=0;
i=3;
cont=0;
//---------------------------
for(x=0;x<i;x++) /* capturando os numeros */
{
printf(" insira %do numero: ",x+1);
scanf("%d",&vet[x]);
}
//-----------------------
for(x=0;x<i;x++)
{
vet2
[x]=vet[x];
}

//--------------------
/*TESTES*/
//----------------------------------------------------------------------------//
for(aux=0;aux<i;aux++,cont=0) //OK
{
if(vet[aux]%2==0)
{
cont=1; /* é par */
}
if(vet[aux]%3==0)
{
cont=3; /* divisil 3 */
}
if(vet[aux]%5==0)
{
cont=5; /* divisil por 5*/
}


//----------------------------------------------------------------------------------------------
/*if((cont==1)&&(cont==3)) // condições OK
{
vet2[aux]=vet[aux];
}else
if((cont==3)&&(cont==5))
{
vet2[aux]=vet[aux];
}else*/
//----------------------------------------------------------------------------------------------
if(cont==3)
{
vet2[aux]=vet[aux]*3;
}else
if(cont==2)
{
vet2[aux]=vet[aux]*2;
}else
if(cont==5)
{
vet2[aux]=vet[aux]*5;
}else
vet2[aux]=vet[aux];

}//* fecha o for



/*if(cont==1) //dando errado
{
vet2[aux]=vet[aux]*2;
}else
if(cont==3)
{
vet2[aux]=vet[aux]*3;
}else
if(cont==5)
{
vet2[aux]=vet[aux]*5;
}else
if((cont==1)&&(cont==3))
{
vet2[aux]=vet[aux];
} */
/* if(cont==1)
vet2[aux]=vet[aux]*2; //Só entrará aqui se o nº obedecer a apenas o criterio de ser par
else if(cont==3)
vet2[aux]=vet[aux]*3;//Só entrará aqui se o nº obedecer a apenas o criterio de ser divisivel por 3
else if(cont==5)
vet2[aux]=vet[aux]*5;//Só entrará aqui se o nº obedecer a apenas o criterio de ser divisivel por 5
else
vet2[aux]=vet[aux]; //Entrará aqui caso o nº obedeca a nenhum ou a mais de um dos critérios

}*/


//} /* fecha o for de cima */
//**************************************************************************
//**************************************************************************
system("cls");
//****************************************************
printf("----------------------------------------\n");
printf("-- ANTES ------- DEPOIS-----\n");
//****************************************************
for(x=0;x<i;x++)
{
printf("----%d\n-----------------------%d\n-----\n",vet[x],vet2[x]);
printf("----------------------------------------\n");
}

system("PAUSE");
return 0;
}

Link para o comentário
Compartilhar em outros sites

hey cara, tenta isso aqui:

                       /*TESTES*/
//----------------------------------------------------------------------------//
for(aux=0;aux<i;aux++,cont=0) //OK
{
if(vet[aux]%2==0)
{
cont=1; /* é par */
}
else if(vet[aux]%3==0)
{
cont=3; /* divisil 3 */
}
else if(vet[aux]%5==0)
{
cont=5; /* divisil por 5*/
}

creio eu que seja esse problema no if...

como são apenas if acontece o seguinte:

ele verifica o primeiro if, quando sair dele, ele verifica o segundo e depois o terceiro...

colocando um else if depois do primeiro if, se caso o primeiro if não for verdadeiro, ele vai verificar o segundo, se caso ele não for verdadeiro ele verifica o terceiro... e no caso do seu teste o primeiro e o segundo eram verdadeiros, e como o primeiro vem antes do terceiro (juraaaaaa?), ele pega apenas a segunda opção, que no caso é o cont=3... com o else if, quando achar um if verdadeiro, o programa sai dos if's...

tenta isso aí... se der certo avisa... \o/

Link para o comentário
Compartilhar em outros sites

Pergunta:

Se eu colocar if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if,if e else, ele verifica cada condição se é verdadeira independente se o anteior é ou não verdadeiro?

Se eu colocar if, else if,else if,else if,else if,else if,else if,else if,else if e else if, ele verifica as condições uma por uma até achar um verdadeiro e assim saindo do laço do if, ou caso falso pulando direto para o else?

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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