Ir ao conteúdo

Posts recomendados

Postado
11 minutos atrás, nagatonie disse:

Deu certo! Mas quando vou imprimir a lista de matriculas na turma A e B, aparece valores aleatórios, e a parte de repetição eu fiz mas não sei como implementar no codigo

 

Bem, então deu certo mas não deu certo e tem uma parte que está feita de algum modo que não é um programa em C?

 

Então em resumo não está pronto nem certo? ;) 

 

De volta ao programa como está agora:

 

Em 28/09/2021 às 14:17, nagatonie disse:

a) Matrícula é um número inteiro positivo de 6 dígitos (zeros à esquerda não contam).
b) A turma A tem n alunos, onde n > 0.
c) A turma B tem k alunos, onde k > 0.

d) n pode ser igual ou diferente de k.
e) A leitura dos valores das variáveis n e k e as declarações dos vetores devem ser feitas,
obrigatoriamente, na função main.
f) Deverá ser implementada a função le_turma que lê os dados de uma turma.
g) Deverá ser implementada a função repetidos que calcula e imprime as matrículas
repetidas das turmas A e B.
h) Não são permitidas variáveis globais.

 

Escreva em torno dos dados e no mínimo atenda ao que diz o enunciado. Está claro que precisa de no mínimo duas funções. E é melhor assim: funções economizam tempo e espaço. Não é uma dificuldade e sim uma simplificação.

 

Então le_turma lê os dados da turma, e em (b) e (c) está claro que o tamanho das turmas e a declaração dos vetores deve estar na função main. E em (h) diz que não pode ter variáveis globais.

 

Eis a função turma:
 

    void le_turma(int n);

 

Se ela retorna void --- no popular NADA --- e não tem argumentos como vai acessar os dados que ela supostamente vai ler, já que tem esse nome? Não vai. Vai ler e sumir tudo.

 

repetidos()

 

Isso é a intersecção de conjuntos, do ensino fundamental, e pode escrever como tal. Pega um por um os elementos do primeiro conjunto --- a turma A --- e procura no segundo conjunto, e se estiver nos dois mostra na tela

 

    void repetidos(int A[], int B[], int i, int j)

 

declarou assim e está passando as turmas. Então porque não fez o mesmo na função que lê?

 

E porque mudou os nomes? Não tem o enunciado? O que ganhou com a mudança?

 

b) A turma A tem n alunos, onde n > 0.
c) A turma B tem k alunos, onde k > 0.

 

Não seria mais simples

 

    void repetidos(int turmaA[], int n, int turmaB[], int k);

 

??

 

//...
printf("Digite a quantidade de alunos na turma A: ");
    scanf("%i", &n);
    le_turma(n);

    printf("Digite a quantidade de alunos na turma B: ");
    scanf("%i", &k);
    le_turma(k);
//...

 

 

Teste o retorno de scanf(). SEMPRE. Qual o sentido de seguir se não ler nada?

 

 

Não escreva um programa de teste interativo. Só vai perder tempo. Seu problema inicial é a intersecção das turmas. Acha que vale a pena para cada teste ficar digitando dúzias de matrículas à toa na terminal? Não vale. Use constantes e teste tudo. Depois colque a leitura em minutos.

 

 

 

  • Curtir 1
  • Obrigado 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!