Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Como varrer arrays na linguagem C e imprimir os elementos que se repetem?

Amigos, será que poderiam me ajudar neste código? Tenho dificuldades em fazer a varredura entre dois arrays e imprimir o número repetido e dizer quantos números são coincidentes. Veja o código que fiz abaixo.

//  main.c
//  duasTurmas
//  Uma escola deseja saber se existem estudantes cursando simultaneamente duas disciplinas.
//  Receba as matrículas dos estudantes de cada disciplina e as coloque em vetores, sendo que podem haver até vinte estudantes matriculados em cada uma.
//  Mostre o número das matrículas que aparecem nos dois vetores.
//  Created by Henrique Passos on 12/10/2018.
//  Copyright © 2018 Henrique Passos. All rights reserved.
//

#include <stdio.h>
#define Tam 5

int main() {
    // Declarar as variáveis;
    int mat_A[Tam]; int mat_B[Tam]; int i; int j; int cont = 0;

    printf("Informe a matrícula do aluno da turma A:\n");
        for (i = 0; i < Tam; i++) {
            scanf("%d", &mat_A[i]);
        }

    printf("Informe a matrícula do aluno da turma B:\n");
        for (j = 0; j < Tam; j++) {
            scanf("%d", &mat_B[i]);
        }

    for (i = 0; i < Tam; i ++) {
        for (j = 0; j < Tam; i ++) {
            if (mat_A[i] == mat_B[j]) {
                printf("%d\n", mat_A[i]);
                cont ++;
            }
        }
    }
    printf("O número de matrículas repetidas é: %d\n", cont);


    return 0;
}

Por favor, vejam se conseguem me ajudar. Desde já agradeço a todos.

5 respostas

Há vários erros no programa, ele basicamente não funciona. Vamos quebrar o problema em problemas menores e depois junte eles.

Para cada número da lista crie um programa separadamente.

1) Faça um programa que armazene uma matrícula e exiba-a. 2)Faça um programa que pergunte quantos alunos tem e exiba essa quantidade. 3)Faça um programa que pergunte quantos alunos tem e a partir desse número comece a guardar em um vetor o número de alunos. E depois exiba esses alunos. 4)Faça um programa que receba duas listas de aluno. E exiba elas. 5)Por último faça o programa que quis fazer originalmente.

Ok. Vou seguir estas instruções agora mesmo e postarei o resultado.

Amigo, com o seu apoio o código começou a funcionar. Veja abaixo.

#include <stdio.h>
#define Tam 5

int main() {
    // Declarar as variáveis;
    int mat_A[Tam]; int mat_B[Tam]; int mat_AB[Tam]; int i; int j; int cont = 0;

    printf("Informe a matrícula do aluno da turma A:\n");
        for (i = 0; i < Tam; i++) {
            scanf("%d", &mat_A[i]);
        }

    printf("Informe a matrícula do aluno da turma B:\n");
        for (i = 0; i < Tam; i++) {
            scanf("%d", &mat_B[i]);
        }
    printf("Turma A:");
    for (i = 0; i < Tam; i ++) {
        printf(" %d ", mat_A[i]);
    }
    printf("\nTurma B:");
    for (j = 0; j < Tam; j ++) {
        printf(" %d ", mat_B[j]);
    }
    printf("\n\n");


    for (i = 0; i < Tam; i ++) {
        for (j = 0; j < Tam; j ++) {
            if (mat_A[i] == mat_B[j]) {
                mat_AB[i] = mat_A[i];
                printf("Matrícula repetida é %d\n", mat_A[i]);
                cont ++;
            } else {

            }
        }
    }
    printf("\nO total de matrículas repetidas é: %d\n", cont);

    printf("\nAs Matrículas repetidas são: ");
    for (i = 0; i < Tam; i++) {
        printf("%d, ", mat_AB[i]);
    }
    printf("\n\n\n");

    return 0;
}

Entretanto ele ainda emite um endereçamento de memória entre as respostas certas. Conforme abaixo:

Informe a matrícula do aluno da turma A:
1
2
3
4
5
Informe a matrícula do aluno da turma B:
2
3
4
5
6
Turma A: 1  2  3  4  5 
Turma B: 2  3  4  5  6 

Matrícula repetida é 2
Matrícula repetida é 3
Matrícula repetida é 4
Matrícula repetida é 5

O total de matrículas repetidas é: 4

As Matrículas repetidas são: -272632336, 2, 3, 4, 5, 
Program ended with exit code: 0

o que ainda estou fazendo errado para ele emitir -272632336 entre as respostas de matrículas repetidas?

O seu programa rodou corretamente usando o Online C Compiler https://www.onlinegdb.com/online_c_compiler . Parece ser algum erro no seu compilador. Esse erro foge do nosso controle, sugiro trocar de compilador.

solução!

Estou usando o xcode. De toda forma muito obrigado, meu amigo. Você me ajudou muito.