Ir ao conteúdo

Posts recomendados

Postado

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
  • Membro VIP
Postado
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
Postado

@.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
  • Membro VIP
Postado

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

@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
Postado
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
Postado

Pede-se que determine os [maior, menor]es e iguais valores no vetor para o dado valor final? Para uma opinião mais precisa o enunciado é necessário, já com relação à instrução de fluxo de controle e iteração [FOR] acertou, na minha opinião.

Postado

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

  • Membro VIP
Postado

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 😁

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

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

 

  • Membro VIP
Postado

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
Postado

@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
Postado

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
  • Membro VIP
Postado

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/

😁

Postado

@.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
  • Membro VIP
Postado

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.

Postado
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

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!