Ir ao conteúdo
  • Cadastre-se

C Leia um vetor de 10 valores inteiros e exiba todos os valores ímpares.


Joel Martins

Posts recomendados

Crie um vetor de nome vet de tamanho 10 do tipo int ;
Crie um vetor de nome vetimpar de tamanho 10 do tipo int para receber os valor
impares do vetor vet. O vetimpar tem tamanho 10 porque o usuário pode digitar 10
valores impares no vetor vet ;

Já fiz isto, mas mesmo assim não dá aquilo que eu queria.

#include <stdio.h>

void main()
{
    int vet[10],vetimpar[10];

    printf("\nInsere um numero-->");
        scanf("%d",&vet[0]);
            if(vet[0]%2==0)
                printf("par");
            else
                vet[0]=vetimpar[0];

        printf("\nInsere um numero-->");
            scanf("%d",&vet[1]);
                if(vet[1]%2==0)
                    printf("par");
                else
                    vet[1]=vetimpar[1];

            printf("\nInsere um numero-->");
                scanf("%d",&vet[2]);
                    if(vet[2]%2==0)
                        printf("par");
                    else
                        vet[2]=vetimpar[2];

                printf("\nInsere um numero-->");
                    scanf("%d",&vet[3]);
                        if(vet[3]%2==0)
                            printf("par");
                        else
                            vet[3]=vetimpar[3];

                    printf("\nInsere um numero-->");
                        scanf("%d",&vet[4]);
                            if(vet[4]%2==0)
                                printf("par");
                            else
                                vet[4]=vetimpar[4];

                        printf("\nInsere um numero-->");
                            scanf("%d",&vet[5]);
                                if(vet[5]%2==0)
                                    printf("par");
                                else
                                    vet[5]=vetimpar[5];

                            printf("\nInsere um numero-->");
                                scanf("%d",&vet[6]);
                                    if(vet[6]%2==0)
                                        printf("par");
                                    else
                                        vet[6]=vetimpar[6];

                                printf("\nInsere um numero-->");
                                    scanf("%d",&vet[7]);
                                        if(vet[7]%2==0)
                                            printf("par");
                                        else
                                            vet[7]=vetimpar[7];

                                    printf("\nInsere um numero-->");
                                        scanf("%d",&vet[8]);
                                            if(vet[8]%2==0)
                                                printf("par");
                                            else
                                                vet[8]=vetimpar[8];

                                        printf("\nInsere um numero-->");
                                            scanf("%d",&vet[9]);
                                                if(vet[9]%2==0)
                                                    printf("par");
                                                else
                                                    vet[9]=vetimpar[9];
    if(vet[0]=vetimpar[0])
        printf("\n%d",vetimpar[0]);

        if(vet[1]=vetimpar[1])
            printf("\n%d",vetimpar[1]);

            if(vet[2]=vetimpar[2])
                printf("\n%d",vetimpar[2]);

                if(vet[3]=vetimpar[3])
                    printf("\n%d",vetimpar[3]);

                    if(vet[4]=vetimpar[4])
                        printf("\n%d",vetimpar[4]);

                        if(vet[5]=vetimpar[5])
                            printf("\n%d",vetimpar[5]);

                            if(vet[6]=vetimpar[6])
                                printf("\n%d",vetimpar[6]);

                                if(vet[7]=vetimpar[7])
                                    printf("\n%d",vetimpar[7]);

                                    if(vet[8]=vetimpar[8])
                                        printf("\n%d",vetimpar[8]);

                                        if(vet[9]=vetimpar[9])
                                            printf("\n%d",vetimpar[9]);
}

 

  • Confuso 1
  • Triste 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
1 hora atrás, Joel Martins disse:

não dá aquilo que eu queria

No que dá?

O que o amigo (que ignora que estás a aprender) quis dizer foi que algo como...

int i,vet[10],vetimpar[10];
for (i=0;i<10;i++)
          {
          printf("\nInsere um numero-->");
          scanf("%d",&vet[i]);
          if(vet[i]%2==0)
          	printf("par");
          else
          	{vetimpar[i]=vet[i];printf("impar");}
          }
         

te dá mais eficiência no código (não entro no mérito dos detalhes ok?)

😁

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@.if Obrigado pela ajuda:)

@Math.Pi Agora imagine isto:

/*3º Exercício*/

#include <stdio.h>
#define maior=0
#define menor=0
#define igual=0

void main()
{
    int v[20];
    int i;

    printf("Introduz um numero e clica ENTER e assim sucessivamente até teres inserido 20 numeros:\n");
    scanf("%d",&v[0]);
        scanf("%d",&v[1]);
            scanf("%d",&v[2]);
                scanf("%d",&v[3]);
                    scanf("%d",&v[4]);
                        scanf("%d",&v[5]);
                            scanf("%d",&v[6]);
                                scanf("%d",&v[7]);
                                    scanf("%d",&v[8]);
                                        scanf("%d",&v[9]);
                                            scanf("%d",&v[10]);
                                                scanf("%d",&v[11]);
                                                    scanf("%d",&v[12]);
                                                        scanf("%d",&v[13]);
                                                            scanf("%d",&v[14]);
                                                                scanf("%d",&v[15]);
                                                                    scanf("%d",&v[17]);
                                                                        scanf("%d",&v[18]);
                                                                            scanf("%d",&v[19]);
    if(v[1] > v[0])
        printf("%d é maior que %d\n",v[1],v[0]);

        if(v[2] > v[0])
            printf("%d é maior que %d\n",v[2],v[0]);

            if(v[3] > v[0])
                printf("%d é maior que %d\n",v[3],v[0]);

                if(v[4] > v[0])
                    printf("%d é maior que %d\n",v[4],v[0]);

                    if(v[5] > v[0])
                        printf("%d é maior que %d\n",v[5],v[0]);

                        if(v[6] > v[0])
                            printf("%d é maior que %d\n",v[6],v[0]);

                            if(v[7] > v[0])
                                printf("%d é maior que %d\n",v[7],v[0]);

                                if(v[8] > v[0])
                                    printf("%d é maior que %d\n",v[8],v[0]);

                                    if(v[9] > v[0])
                                        printf("%d é maior que %d\n",v[9],v[0]);

                                        if(v[10] > v[0])
                                            printf("%d é maior que %d\n",v[10],v[0]);

                                            if(v[11] > v[0])
                                                printf("%d é maior que %d\n",v[11],v[0]);

                                                if(v[12] > v[0])
                                                    printf("%d é maior que %d\n",v[12],v[0]);

                                                    if(v[13] > v[0])
                                                        printf("%d é maior que %d\n",v[13],v[0]);

                                                        if(v[14] > v[0])
                                                            printf("%d é maior que %d\n",v[14],v[0]);

                                                            if(v[15] > v[0])
                                                                printf("%d é maior que %d\n",v[15],v[0]);

                                                                if(v[16] > v[0])
                                                                    printf("%d é maior que %d\n",v[16],v[0]);

                                                                    if(v[17] > v[0])
                                                                        printf("%d é maior que %d\n",v[17],v[0]);

                                                                        if(v[18] > v[0])
                                                                            printf("%d é maior que %d\n",v[18],v[0]);

                                                                            if(v[19] > v[0])
                                                                                printf("%d é maior que %d\n",v[19],v[0]);
    if(v[1] = v[0])
        printf("%d é igual que %d\n",v[1],v[0]);

        if(v[2] = v[0])
            printf("%d é igual que %d\n",v[2],v[0]);

            if(v[3] = v[0])
                printf("%d é igual que %d\n",v[3],v[0]);

                if(v[4] = v[0])
                    printf("%d é igual que %d\n",v[4],v[0]);

                    if(v[5] = v[0])
                        printf("%d é igual que %d\n",v[5],v[0]);

                        if(v[6] = v[0])
                            printf("%d é igual que %d\n",v[6],v[0]);

                            if(v[7] = v[0])
                                printf("%d é igual que %d\n",v[7],v[0]);

                                if(v[8] = v[0])
                                    printf("%d é igual que %d\n",v[8],v[0]);

                                    if(v[9] = v[0])
                                        printf("%d é igual que %d\n",v[9],v[0]);

                                        if(v[10] = v[0])
                                            printf("%d é igual que %d\n",v[10],v[0]);

                                            if(v[11] = v[0])
                                                printf("%d é igual que %d\n",v[11],v[0]);

                                                if(v[12] = v[0])
                                                    printf("%d é igual que %d\n",v[12],v[0]);

                                                    if(v[13] = v[0])
                                                        printf("%d é igual que %d\n",v[13],v[0]);

                                                        if(v[14] = v[0])
                                                            printf("%d é igual que %d\n",v[14],v[0]);

                                                            if(v[15] = v[0])
                                                                printf("%d é igual que %d\n",v[15],v[0]);

                                                                if(v[16] = v[0])
                                                                    printf("%d é igual que %d\n",v[16],v[0]);

                                                                    if(v[17] = v[0])
                                                                        printf("%d é igual que %d\n",v[17],v[0]);

                                                                        if(v[18] = v[0])
                                                                            printf("%d é igual que %d\n",v[18],v[0]);

                                                                            if(v[19] = v[0])
                                                                                printf("%d é igual que %d\n",v[19],v[0]);
    if(v[1] < v[0])
        printf("%d é menor que %d\n",v[1],v[0]);

        if(v[2] < v[0])
            printf("%d é menor que %d\n",v[2],v[0]);

            if(v[3] < v[0])
                printf("%d é menor que %d\n",v[3],v[0]);

                if(v[4] < v[0])
                    printf("%d é menor que %d\n",v[4],v[0]);

                    if(v[5] < v[0])
                        printf("%d é menor que %d\n",v[5],v[0]);

                        if(v[6] < v[0])
                            printf("%d é menor que %d\n",v[6],v[0]);

                            if(v[7] < v[0])
                                printf("%d é menor que %d\n",v[7],v[0]);

                                if(v[8] < v[0])
                                    printf("%d é menor que %d\n",v[8],v[0]);

                                    if(v[9] < v[0])
                                        printf("%d é menor que %d\n",v[9],v[0]);

                                        if(v[10] < v[0])
                                            printf("%d é menor que %d\n",v[10],v[0]);

                                            if(v[11] < v[0])
                                                printf("%d é menor que %d\n",v[11],v[0]);

                                                if(v[12] < v[0])
                                                    printf("%d é menor que %d\n",v[12],v[0]);

                                                    if(v[13] < v[0])
                                                        printf("%d é menor que %d\n",v[13],v[0]);

                                                        if(v[14] < v[0])
                                                            printf("%d é menor que %d\n",v[14],v[0]);

                                                            if(v[15] < v[0])
                                                                printf("%d é menor que %d\n",v[15],v[0]);

                                                                if(v[16] < v[0])
                                                                    printf("%d é menor que %d\n",v[16],v[0]);

                                                                    if(v[17] < v[0])
                                                                        printf("%d é menor que %d\n",v[17],v[0]);

                                                                        if(v[18] < v[0])
                                                                            printf("%d é menor que %d\n",v[18],v[0]);

                                                                            if(v[19] < v[0])
                                                                                printf("%d é menor que %d\n",v[19],v[0]);
}

e mesmo assim está a dar erro :)

  • Curtir 1
  • Haha 1
  • Triste 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@.if Se eu ignorasse, não perguntaria tanto, certo?

1 hora atrás, Math.Pi disse:

...

 Você ainda não aprendeu a usar o FOR?

...

 

 

@Joel Martins  Esse exemplo seu é só de teste, né? 

Tente fazer com números pequenos. Um vetor de 2 posições terá o mesmo resultado que um de 20.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Joel Martins Não faz nem sentido um professor passar uma tarefa assim. Não é nem um pouco prático e o fato do código ficar gigantesco dificulta a leitura.

Faça como @Math.Pi disse, comece alocando pouco, e depois repita o segmento de código até chegar no que precisa. Se o pouco que escreveu funcionou, o resto também vai funcionar.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Joel Martins disse:

@.if Obrigado pela ajuda:)

@Math.Pi Agora imagine isto:


/*3º Exercício*/

#include <stdio.h>
#define maior=0
#define menor=0
#define igual=0

void main()
{
    int v[20];
    int i;

    printf("Introduz um numero e clica ENTER e assim sucessivamente até teres inserido 20 numeros:\n");
    scanf("%d",&v[0]);
        scanf("%d",&v[1]);
            scanf("%d",&v[2]);
                scanf("%d",&v[3]);
                    scanf("%d",&v[4]);
                        scanf("%d",&v[5]);
                            scanf("%d",&v[6]);
                                scanf("%d",&v[7]);
                                    scanf("%d",&v[8]);
                                        scanf("%d",&v[9]);
                                            scanf("%d",&v[10]);
                                                scanf("%d",&v[11]);
                                                    scanf("%d",&v[12]);
                                                        scanf("%d",&v[13]);
                                                            scanf("%d",&v[14]);
                                                                scanf("%d",&v[15]);
                                                                    scanf("%d",&v[17]);
                                                                        scanf("%d",&v[18]);
                                                                            scanf("%d",&v[19]);
    if(v[1] > v[0])
        printf("%d é maior que %d\n",v[1],v[0]);

        if(v[2] > v[0])
            printf("%d é maior que %d\n",v[2],v[0]);

            if(v[3] > v[0])
                printf("%d é maior que %d\n",v[3],v[0]);

                if(v[4] > v[0])
                    printf("%d é maior que %d\n",v[4],v[0]);

                    if(v[5] > v[0])
                        printf("%d é maior que %d\n",v[5],v[0]);

                        if(v[6] > v[0])
                            printf("%d é maior que %d\n",v[6],v[0]);

                            if(v[7] > v[0])
                                printf("%d é maior que %d\n",v[7],v[0]);

                                if(v[8] > v[0])
                                    printf("%d é maior que %d\n",v[8],v[0]);

                                    if(v[9] > v[0])
                                        printf("%d é maior que %d\n",v[9],v[0]);

                                        if(v[10] > v[0])
                                            printf("%d é maior que %d\n",v[10],v[0]);

                                            if(v[11] > v[0])
                                                printf("%d é maior que %d\n",v[11],v[0]);

                                                if(v[12] > v[0])
                                                    printf("%d é maior que %d\n",v[12],v[0]);

                                                    if(v[13] > v[0])
                                                        printf("%d é maior que %d\n",v[13],v[0]);

                                                        if(v[14] > v[0])
                                                            printf("%d é maior que %d\n",v[14],v[0]);

                                                            if(v[15] > v[0])
                                                                printf("%d é maior que %d\n",v[15],v[0]);

                                                                if(v[16] > v[0])
                                                                    printf("%d é maior que %d\n",v[16],v[0]);

                                                                    if(v[17] > v[0])
                                                                        printf("%d é maior que %d\n",v[17],v[0]);

                                                                        if(v[18] > v[0])
                                                                            printf("%d é maior que %d\n",v[18],v[0]);

                                                                            if(v[19] > v[0])
                                                                                printf("%d é maior que %d\n",v[19],v[0]);
    if(v[1] = v[0])
        printf("%d é igual que %d\n",v[1],v[0]);

        if(v[2] = v[0])
            printf("%d é igual que %d\n",v[2],v[0]);

            if(v[3] = v[0])
                printf("%d é igual que %d\n",v[3],v[0]);

                if(v[4] = v[0])
                    printf("%d é igual que %d\n",v[4],v[0]);

                    if(v[5] = v[0])
                        printf("%d é igual que %d\n",v[5],v[0]);

                        if(v[6] = v[0])
                            printf("%d é igual que %d\n",v[6],v[0]);

                            if(v[7] = v[0])
                                printf("%d é igual que %d\n",v[7],v[0]);

                                if(v[8] = v[0])
                                    printf("%d é igual que %d\n",v[8],v[0]);

                                    if(v[9] = v[0])
                                        printf("%d é igual que %d\n",v[9],v[0]);

                                        if(v[10] = v[0])
                                            printf("%d é igual que %d\n",v[10],v[0]);

                                            if(v[11] = v[0])
                                                printf("%d é igual que %d\n",v[11],v[0]);

                                                if(v[12] = v[0])
                                                    printf("%d é igual que %d\n",v[12],v[0]);

                                                    if(v[13] = v[0])
                                                        printf("%d é igual que %d\n",v[13],v[0]);

                                                        if(v[14] = v[0])
                                                            printf("%d é igual que %d\n",v[14],v[0]);

                                                            if(v[15] = v[0])
                                                                printf("%d é igual que %d\n",v[15],v[0]);

                                                                if(v[16] = v[0])
                                                                    printf("%d é igual que %d\n",v[16],v[0]);

                                                                    if(v[17] = v[0])
                                                                        printf("%d é igual que %d\n",v[17],v[0]);

                                                                        if(v[18] = v[0])
                                                                            printf("%d é igual que %d\n",v[18],v[0]);

                                                                            if(v[19] = v[0])
                                                                                printf("%d é igual que %d\n",v[19],v[0]);
    if(v[1] < v[0])
        printf("%d é menor que %d\n",v[1],v[0]);

        if(v[2] < v[0])
            printf("%d é menor que %d\n",v[2],v[0]);

            if(v[3] < v[0])
                printf("%d é menor que %d\n",v[3],v[0]);

                if(v[4] < v[0])
                    printf("%d é menor que %d\n",v[4],v[0]);

                    if(v[5] < v[0])
                        printf("%d é menor que %d\n",v[5],v[0]);

                        if(v[6] < v[0])
                            printf("%d é menor que %d\n",v[6],v[0]);

                            if(v[7] < v[0])
                                printf("%d é menor que %d\n",v[7],v[0]);

                                if(v[8] < v[0])
                                    printf("%d é menor que %d\n",v[8],v[0]);

                                    if(v[9] < v[0])
                                        printf("%d é menor que %d\n",v[9],v[0]);

                                        if(v[10] < v[0])
                                            printf("%d é menor que %d\n",v[10],v[0]);

                                            if(v[11] < v[0])
                                                printf("%d é menor que %d\n",v[11],v[0]);

                                                if(v[12] < v[0])
                                                    printf("%d é menor que %d\n",v[12],v[0]);

                                                    if(v[13] < v[0])
                                                        printf("%d é menor que %d\n",v[13],v[0]);

                                                        if(v[14] < v[0])
                                                            printf("%d é menor que %d\n",v[14],v[0]);

                                                            if(v[15] < v[0])
                                                                printf("%d é menor que %d\n",v[15],v[0]);

                                                                if(v[16] < v[0])
                                                                    printf("%d é menor que %d\n",v[16],v[0]);

                                                                    if(v[17] < v[0])
                                                                        printf("%d é menor que %d\n",v[17],v[0]);

                                                                        if(v[18] < v[0])
                                                                            printf("%d é menor que %d\n",v[18],v[0]);

                                                                            if(v[19] < v[0])
                                                                                printf("%d é menor que %d\n",v[19],v[0]);
}

e mesmo assim está a dar erro :)

Acho que já consegui por tentativa e erro resumir este para este:

#include <stdio.h>

void main()
{
    int v[20],i=1;

    printf("Introduz um numero e clica ENTER e assim sucessivamente ate teres inserido 20 numeros:\n");

    for(i=0 ; i<=19 ; i++){
        scanf("%d",&v[i]);}

    for(i=0 ; i<=19 ; i++){
        if(v[i] > v[0])
        printf("%d e maior que %d\n",v[i],v[0]);}

    for(i=0 ; i<=19 ; i++){
        if(v[i] == v[0])
        printf("%d e igual a %d\n",v[i],v[0]);}

    for(i=0 ; i<=20 ; i++){
        if(v[i] < v[0])
        printf("%d e menor que %d\n",v[i],v[0]);}

}

Podem ver se está bem feito?

Obrigadoo :))

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@mauro_b aqui tem o enunciado

Escrever um programa que declare um array de 20 inteiros, leia um valor para
cada posição e no final mostre quantos elementos possuem valor maior, menor e
igual ao primeiro elemento do array.
Explicação
Crie um vetor de nome v de tamanho 20 do tipo int ;
Crie as variáveis maior, igual e menor e as inicialize com o valor zero ;
Crie uma variável de nome i ( Essa variável não vai permitir que seja digitado mais
de 20 valores).

@.if 

2 horas atrás, .if disse:

if(vet[i]%2==0) printf("par"); else {vetimpar[i]=vet[i];printf("impar");} }

não era bem isto pois eu queria exibir todos os valores impares no fim do programa, não dizer que era impar

2 horas atrás, .if disse:

int i,vet[10],vetimpar[10]; for (i=0;i<10;i++) { printf("\nInsere um numero-->"); scanf("%d",&vet[i]); if(vet[i]%2==0) printf("par"); else {vetimpar[i]=vet[i];printf("impar");} }

Eu já tentei fazer:

#include <stdio.h>

void main()
{
    int vet[10],vetimpar[10],i;

    for(i=0 ; i<10 ; i++){
        printf("\nInsere um numero-->");
        scanf("%d",&vet[i]);
        if(vet[i]%2==0)
                printf("par");
            else
                vetimpar[i]=vet[i];
}

    for(i=0 ; i<10 ; i++){

            printf("\n%d",vetimpar[i]);}
}

mas deu isto:


Insere um numero-->45

Insere um numero-->689

Insere um numero-->78
par
Insere um numero-->25

Insere um numero-->35

Insere um numero-->56
par
Insere um numero-->14
par
Insere um numero-->24
par
Insere um numero-->25

Insere um numero-->
23

45
689
0
25
35
0
16<--------------------------Aparece numeros pares e o objetivo era aparecerem só numeros impares
0
25
23
Process returned 3 (0x3)   execution time : 11.246 s
Press any key to continue.


Não sei o que fazer mais.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

O que leste de mim foram apenas diretrizes o que me parece que surtiu efeito ainda que fora por 'tentativa e erro' pois copiaste e colaste meu fonte 😁

Agora parece que o desafio mudou (ou perdeu) o rumo pois não é simplesmente questão de par ou ímpar mas sim de maior e menor. Permito-me abster a comentar sobre isso ok?

Mas voltando ao desafio inicial, que tal se criasses uma variável temporária? Algo como...

void main()
{
    int vet[10],vetimpar[10],i,temp;

    for(i=0 ; i<10 ; i++)
        {
        printf("\nInsere um numero-->");
        scanf("%d",&temp);
        if(temp%2==0) 
                   {
                   vet[i]=temp;
                   printf("par");
                   }
        else 	   {
                   vetimpar[i]=temp;
                   printf("impar");
                   } 
        }
}

Já nascem separados. Pronto. Agora é só mostrar como e qual desejares 😁

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Joel Martins disse:

Eu ainda não aprendi a usar ciclos com arrays por isso tenho que fazer assim. Consegue-me ajudar?


Vire a página do seu livro e veja como faz isso. Copiar e colar para cada posição do vetor não vai te ensinar nadinha. E ainda pode levar à síndrome do túnel do carpo por esforço repetitivo... 🤔

 

Ninguém vai te culpar por aprender mais, até onde eu sei.

 

Isso de " não pode usar  xyz " só se aplica quando o exercício reproduz o efeito de alguma coisa que tem na biblioteca, alguma função pronta, e aí não faria sentido você resolver o exercício chamando a função, tipo uma que converte uma string para maiúsculas...

 

Como você precisar escrever um programa que cria uma pasta no diretório corrente e o aluno espertinho escreve "system mkdir(pasta)" achando que resolveu algo ;) 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@.if não dá á mesma pois aparece numeros pares.

coloquei isto:

/*2º Exercício*/
#include <stdio.h>

void main()
{
    int vet[10],vetimpar[10],i,num;

    for(i=0 ; i<10 ; i++)
        {
        printf("\nInsere um numero-->");
        scanf("%d",&num);
            if(num%2==0)
            {
                vet[i]=num;
                printf("par");
            }
            else
            {
                vetimpar[i]=num;
                printf("impar");
            }
        }
        for(i=0 ; i<=10 ; i++)
        {
            if(vet[i]=vetimpar[i])
                printf("\n%d",vetimpar[i]);
        }
}

e deu isto:



Insere um numero-->5
impar
Insere um numero-->7
impar
Insere um numero-->3
impar
Insere um numero-->9
impar
Insere um numero-->1
impar
Insere um numero-->8
par
Insere um numero-->2
par
Insere um numero-->6
par
Insere um numero-->4
par
Insere um numero-->0
par
5
7
3
9
1
16<==========
Process returned 0 (0x0)   execution time : 7.867 s
Press any key to continue.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo, de acordo com o título do teu tópico basta mostrar somente os ímpares. Percebe que na (minha) criação do seu banco de dados eles já se separam. Por gentileza confirme com algo como:

for(i=0 ; i<=10 ; i++)
        {
        printf("\n%d",vetimpar[i]);
        }

Nota: Provavelmente vai se deparar com valores não preenchidos que são zero e zero é par.. E agora? 🤔. Pense em algo pra contornar tal condição. Dica: é simples.😁

 

Outra coisa, pra comparação o c prefere == ao invés de =

if(vet[i]==vetimpar[i]) ...

Talvez esteja aí o problema. Mas como jamais serão iguais, há algo sinistro por aí...

🙂

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Joel Martins

3. Segue no exercício o que chamam de Descrição Narrativa [do que "criar"] na definição do programa junto ao problema.

[Descrição Narrativa]
1. Crie um vetor de nome v de tamanho 20 do tipo int ; ✔
2. Crie as variáveis maior, igual e menor e as inicialize com o valor zero ;
3. Crie uma variável de nome i ( Essa variável não vai permitir que seja digitado mais
de 20 valores). ✔
4. ...
//3. Exercicio ...

//incluir rotinas normais [E/S]
#include <stdio.h>

//Funcao mediadora de rotinas do programa [prototipo padrão]
int main (void) {

	//declarar variaveis da funcao e inicializar com padrão
	int numeros_decimais_inteiros [0x14]= {0,},
  							total_maior_que= 0,
  							total_menor_que= 0,
  							total_igual_a= 0, i= 0, primeiro= 0;

	//mensagem de interface do usuario
	printf("%s",
	"Por favor, introduza um numero e clique ENTER e assim sucessivamente ate teres inserido 20 numeros:\n");

	//leitura [ideal] iterativa de 20 numeros decimais inteiros
	for (i= 0 ; i <= 19 ; ++i) {
	    
		//Ler e Gravar uma entrada de um Num. Decimal Inteiro.
		scanf ("%d",&numeros_decimais_inteiros [i]);
    }
  
    //guarda o valor do primeiro
    ??= numeros_decimais_inteiros [0];
    
	//determinar total de maiores que o primeiro numero da lista [Vetor]
	for(i= 1 ; i <= 19 ; i++){
	    
	    //Comparar 'maior que'
        if((numeros_decimais_inteiros [i]) > ??) {
          ??? ++;
	}}

	//determinar total de menores que o primeiro numero da lista [Vetor]
	for(i= 1 ; i <= 19 ; i++) {
	    
	    //Comparar 'menor que'
        if((numeros_decimais_inteiros [i]) < ??) {
          ??? ++;
	}}


 	//determinar total de iguais que o primeiro numero da lista [Vetor]
	for(i= 1 ; i <= 19 ; i++){
	    
	    //Comparar 'igual a'
        if((numeros_decimais_inteiros [i]) == ??) {
          ??? ++;
	}}
  
  
	//escrever relatorio
	printf ("%s %s%d%s%d%s %s%d%s%d%s %s%d%s%d%s %s",
	"Com base nos dados se determina o seguinte resultado: \n",
	"1. O Total de numeros maiores que ..: ", ??, " foi ..: ", ???, "\n",
	"2. O Total de numeros menores que ..: ", ??, " foi ..: ", ???, "\n",
	"3. O Total de numeros iguais a .....: ", ??, " foi ..: ", ???, "\n\n",
	"Chegou-se ao fim do relatorio e caso necessario execute esse programa outra vez. \n"
	);
}

Considere o que sabe e substitua as interrogações.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

seu programa não está bom e tem muitos problemas para um programa assim pequeno...

 

há dois if() em seu programa
 

11:	if(num%2==0)
24:	if(vet[i]=vetimpar[i])

 

Um dos dois deve estar errado já que os dois testam uma comparação, certo?

 

O segundo está errado.

 

Em C 0 é falso e qualquer coisa diferente é verdadeiro.

E

 

    vet[i] = vetimpar[i] 


faz o que você imagina mesmo: copia o valor de vet[i] para vetimpar[i].


Então o segundo if() é o mesmo que 
 

    if ( vet[i] )

 

que é o mesmo que 

 

    if ( vet[i] != 0 )

 

como eu acabei de explicar.

 

Então seu segundo if imprime o valor de vetimpar[i] sempre que vet[i] for diferente de zero. Sem sentido.


Quer testar? mude seu programa assim:
 

#include <stdio.h>

void main()
{
    int vet[10] =      { 0,0,0,0,0, 0,0,0,0,0 };
    int vetimpar[10] = { 0,0,0,0,0, 1,3,5,7,9 };
    for(int i=0 ; i<10 ; i++)
        if(vet[i]=vetimpar[i])
            printf("\n%d",vetimpar[i]);
}

 

não é difícil, é só apagar quase tudo. vet[i] está todo zerado. Graças ao seu if() o programa vai imprimir o valor de todo valor em vetimpar que for ímpar, já que ele vai copiar para vet[i] antes de testar...

 

O vetor vet:
1
3
5
7
9

 

Não acredita? Mude um pouco mais:

 

#include <stdio.h>
void main()
{
    int vet[10] = { 0,0,0,0,0, 0,0,0,0,0 };
    int vetimpar[10] = { 0,0,0,0,0, 1,3,5,7,9 };
    printf("O vetor vet:");
    for(int i=0 ; i<10 ; i++) printf(" %d",vet[i]);
    printf( "\n");
    for(int i=0 ; i<10 ; i++)
        if(vet[i]=vetimpar[i])
            printf("\n%d",vetimpar[i]);
}

 

E vai ver
 

O vetor vet: 0 0 0 0 0 0 0 0 0 0

1
3
5
7
9

 

Mas não é só isso...

 

Seu programa tem dois for()
 

 7:	for(i=0 ; i<10 ; i++)
22:	for(i=0 ; i<=10 ; i++)

 

Como eles podem ser diferentes se os dois vetores são do mesmo tamanho? Claro que o segundo está errado e vai tentar ler onze valores e não 10.

 

Outros erros:

  • [3] Na linha 3, nunca use void main(). main() retorna um int.  Se não vai usar os parâmetros de main declare int main(void)
  • [5] nunca declare mais de uma variável por linha. Não é esperto. Só atrapalha.
  • [7]não use um for com a variável de controle declarada fora a menos que faça realmente parte da lógica. E nesse caso evite nominhos ingênuos como  'i'. Escreva sempre
     
    	    for(int i=0 ; i<10 ; i++)

     

  • [10] NUNCA deixe de testar o retorno de scanf(). É ingênuo seguir com o programa se scanf() não leu nada. Aprenda isso e vai ter uma vida melhor com essas funções.
  • [11] para que usa uma variável num para ler os valores e depois copiar se sempre vai copiar? Não precisa disso...
  • teste seu programa com constantes antes de ficar lendo. Você está começando a programar. Qual o propósito de ficar digitando 10 números a cada vez que for testar seu programa? Não vai aprender nada e só vai perder tempo.
    Declare o simples:
        int vet[10] = { 1,3,5,7,9, 0,0,0,0,0 };

    já serviria.

 

Use seu programa e o compilador para testar as coisas. Ninguém vai saber se você fez 10 programinhas antes do que está entregando. E mostre o que você está lendo antes de ficar em dúvida porque aí não vai ter dúvida.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Permiti-me...

Não há relação direta com o desafio do autor mas há sim uma mínima conexão...🤪

Numa tradicional e pessoal trazida do mundo real ao virtual - algo como choque de realidade  😁 - , incrivelmente coincidente me deparo no momento ao desafio de pegar apenas o maior valor de um pacotinho de dados. A dica que peguei aqui no cdh mesmo - que não me lembro de quem 😢 e pode até ter sido do bom amigo @mauro_b ou do@arfneto -  é algo como...

int i,valor_de_pico=0;

for (i=0;i<100;i++) if (dado[i]>valor_de_pico) valor_de_pico=dado[i];

Os dados vêm de leituras analógicas. Preciso do valor de pico (e do valor médio)

😁

31 minutos atrás, arfneto disse:

if(vet[i]=vetimpar[i])

Algo me diz que o compilador deveria chiar.... Bem pelo menos o meu (pra mc) chiaria. Qualquer dia eu testo🙂

 

http://linguagemc.com.br/operadores-relacionais/

😁

Link para o comentário
Compartilhar em outros sites

@.if :) eu por certo teria te dito o mesmo que eu disse acima

  • nunca, nas nunca mesmo use um for com a variável de controle declara global ao escopo, muito menos com o nominho 'i'. Isso é uma bomba-relógio. Esse 'i' vai estar vivo por todo o programa. 
  • nunca declare mais de uma variável por linha

E mais

  • você deve iniciar o valor de pico com algo pequeno e ZERO não é assim pequeno para um int. Metade mais um dos possíveis valores de int são menores que zero. Se os valores de dado[] estiverem numerados entre -200 e -101 qual vai ser o valor de pico no seu loop? Vai ser zero e não -101...
  • muita gente prefere usar o operador '? ' nesses casos, apesar d epouco legível. O código gerado é o mesmo.

 

int i,valor_de_pico=0;
for (i=0;i<100;i++) if (dado[i]>valor_de_pico) valor_de_pico=dado[i];

 

Prefira

	int	valor_de_pico = INT_MIN;
	for( int i=0; i<100; i++)  if (dado[i]>valor_de_pico) valor_de_pico=dado[i];

 

ou mesmo
 

	int i,valor_de_pico=0;
	for (i=0;i<100;i++)
	    valor_de_pico = dado[i] > valor_de_pico ? (dado[i]>valor_de_pico) : valor_de_pico;

 

EXEMPLO

 

algo assim usando os dois modos

 


#include <limits.h>
#include <stdio.h>
int main(void)
{
    int valor_de_pico = INT_MIN;
    int valor_do_abismo =  INT_MAX;

    int dado[] = { -1,-2,-3,-4,0,1,2,3,4 };
    int N = sizeof(dado)/sizeof(int); // o total

    printf( "Dados: ");
    for( int i=0 ; i<N; i++)
    {
        if ( dado[i] > valor_de_pico ) valor_de_pico = dado[i];
        valor_do_abismo = dado[i] < valor_do_abismo ? dado[i] : valor_do_abismo ;
        printf("%d ", dado[i]);
    }
    printf( " \nMinimo: %d Maximo: %d\n",  valor_do_abismo, valor_de_pico );
    return 0;
}

 

deve mostrar

 

PS tst> gcc -o tst -Wall -std=c17 or.c
PS tst> ./tst
Dados: -1 -2 -3 -4 0 1 2 3 4
Minimo: -4 Maximo: 4
PS tst> 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Como sempre excelentes observações @arfneto . Nem havia considerado que i é muito genérico mesmo e no caso de sua opção ela deve nascer e morrer naquela iteração. Como não tenho este hábito, passarei a tê-lo graças à tua observação 🙂

 

Alguns detalhes não muito importantes...

  • sobre variáveis globais elas têm seu lugar sim mas é interessante a opção de evitá-las
  • apesar de int no meu sistema sempre uso unsigned int pois o valor da conversão analógico/digital (no meu sistema) nunca é negativo. Só senti vontade abreviar🙂
  • o termo trocadilho que usaste 'valor_do_abismo' foi trilegal e totalmente coerente com a (minha) questão. Só lembro que não é usual na micro eletrônica ... minha humilde origem. Por cá usamos picos e raramente o termo vale aparece na jogada. Também usamos pico a pico, médio, eficaz e alguns etc que nem sei se fazem parte do teu mundo 😁 ... 'abismo' kk boa...
  • sobre o operador ternário ? em substituição ao if penso que de fato ainda é uma opção precoce pra idade do autor do tópico. O estranho é que me lembro vagamente de alguém ter me dito algo neste sentido recentemente 🤔😁
  • de fato o valor mínimo e maior que zero vai me ser útil também no meu sistema. Considerando que a variável é sempre positiva (unsigned int) bola o algoritmo aí pra mim...😁... o tal abismo 😆. Acho que é só inverter algo como
unsigned int valor_de_abismo=4095; //ad de 12 bits

for (int i=0;i<100;i++) if (dado[i]<valor_de_abismo) valor_de_abismo=dado[i];

 

abç & sucessos.

Link para o comentário
Compartilhar em outros sites

15 minutos atrás, .if disse:

sobre variáveis globais elas têm seu lugar sim mas é interessante a opção de evitá-las

 

Já escrevi sobre isso aqui: há mesmo um esforço desesperado em limitar o escopo não apenas das variáveis globais mas o escopo de variáveis de um modo geral.

 

Já mostrei uns exemplos aqui de que em C++ por exemplo se pode declarar variáveis dentro de um if ou um switch por exemplo.

 

EXEMPLO
 

#include <iostream>
#include <string>

using namespace std;

void decrypt(string);
void encrypt(string);

int main(void)
{
    int i = 42;

    if ( int j = 'a', i = 43; i == 42 )
        cout << "(i = 42!) i = " << i << endl;
    else
        cout << "(i != 42), i = " << i << " j = " << j << endl;

    switch (int i = 23; i )
    {
        case 42:
            cout << "(i = 42!) i = " << i << endl;
            break;
        default:
            cout << "(i != 42!) i = " << i << endl;
            break;
    };  //  switch()

    cout << "i ao final = " << i << endl;
    return 0;
}

 

A saída desse programa:

 

(i != 42), i = 43 j = 97
(i != 42!) i = 23
i ao final = 42

 

O que tem a ver?

 

Pois é: isso mostra que com toda a política em torno do comite ISO a linguagem foi alterada para permitir declaração de variáveis dentro do próprio comando switch() ou if(), como sempre existiu no for. E no C desde os anos 80.

 

38 minutos atrás, .if disse:

apesar de int no meu sistema sempre uso unsigned int pois o valor da conversão analógico/digital (no meu sistema) nunca é negativo

 

O problema foi que ao usar int introduziu um erro no seu programa, porque o vetor poderia ser todo de números negativos e o seu máximo começava por ZERO.

 

39 minutos atrás, .if disse:

trocadilho

 

 

:D não resisti a trocar valor_de_pico para o máximo por valor_do_abismo para o mínimo 🤣, confesso que ri muito

 

41 minutos atrás, .if disse:

O estranho é que me lembro vagamente de alguém ter me dito algo neste sentido recentemente

 

Então... opinião pessoal: operador ternário é uma frescura e deixa o código difícil de ler. É como ++x, x++, --x e x--, que também evito muito porque são ativos e tem efeitos colaterais. Eu diria que mais subtraem do que somam, muito embora metade deles some e metade subtraia.

 

44 minutos atrás, .if disse:

de fato o valor mínimo e maior que zero...

 

Apenas troque o valor inicial do valor_de_pico por 0: Qualquer valor será maior que zero. O valor_do_abismo passa a ser UINT_MAX, agora que o vetor é unsigned. e entre INT_MAX e UINT_MAX tem gente...

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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