Correction of the Code in C

Asked

Viewed 106 times

0

I did the code below which is basically read two vectors A and B, and accumulate the values in vector C.

At the end of the code, I need to show if there are repeated values and print a message to the user. If there is no repeated value, print message as well.

Logic is going wrong. Could you show me what’s wrong, please?

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL,"portuguese");
    int vetA[5], vetB[5], vetC[5];
    int i = 0, j =0;

    // A) LER 5 NÚMEROS NO VETOR A
    for (i = 0; i < 5; i++)
    {
        printf("\nPreencha o Vetor [A] \n");
        scanf("%d", &vetA[i]);
    }
    // B) LER 5 NÚMEROS EM VETOR B
    for (i = 0; i < 5; i++)
    {
        printf("\nPreencha o Vetor [B]\n");
        scanf("%d", &vetB[i]);
    }

    // C)VETOR C RECEBE OS VALORES DOS VETORES A e B E ACUMULA

    printf("\nO Vetor [C] recebe a soma dos Vetores [A] e [B]\n");
    for (i = 0; i <5; i++)
    {
        vetC[i] = vetA[i]+vetB[i];
    }
    for (i = 0; i < 5; i++)     
    {
    // D) IMPRIMIR  O VETOR A
        printf("\0");   
        printf("\nO valor do Vetor A na Posição: %d é = %d\n",i+0, vetA[i]);

    }

    for (i = 0; i < 5; i++)
    {
    // E) IMPRIMIR  O VETOR B
        printf("\0");   
        printf("\nO valor do Vetor B na Posição: %d é = %d\n",i+0,vetB[i]);
    }
    for (i =0; i < 5; i++)
    {
    // IMPRIME O VALOR DO VETOR C

        printf("\0");
        printf("\nO valor do Vetor C na Posição: %d é = %d\n", i+0, vetC[i]);
    }

    // NA CONDIÇÃO SE EXISTIR VALORES REPETIDOS, IMPRIMIR MENSAGEM 
    // SE NÃO EXISTIR VALORES REPETIDOS IMPRIMIR MENSAGEM TAMBÉM 
    for (i =0; i < 5; i++)
    {
        for (j=0; j<5; j++)
        {
            if (vetC[i] == vetC[j])

            {
                printf("\nExiste valor Repetido\n");
            }
            if (vetC[i] != vetC[j])
            {
                printf("\nNão Existe valor Repetido");

               }
           }

       }

    getch();
    return(0);
}
  • 1

    what error you are receiving?

  • the answer below solved the problem?

1 answer

1

From what I understand is not displayed error, only the comparison logic is wrong.

I suggest you create a variable to control whether or not the values are repeated; if not, display the message at the end of the code.

//variável de controle de indicação se existem valores repetidos
int totalRepetido = 0; 

for (i=0; i<5; i++)
{
  for (j=i+1; j<5; j++) //iniciar j uma posição depois de i para que não compare duas vezes os mesmos valores
  {
    if (vetC[i] == vetC[j])
    {
      printf("\nValor %d nas posicoes %d e %d repetidos!", vetC[j], i, j);
      totalRepetido++;
      break;// encontrado um valor repetido, pode parar a execução do for
    }
  }
}

if (totalRepetido == 0)
{
  printf("\nNão Existe valor Repetido");
}
  • Blza. Thanks for the contact. No error returns. Only logic was not right. Could not enternder what was missing!

  • @Joséfraga, solved the question or still has some point? solved. = P

  • All right. Thanks!

  • mass. if the answer helped/solved, it is worth marking it. If it is the case, give a read at that link

Browser other questions tagged

You are not signed in. Login or sign up in order to post.