Olá, estou com um exercício da faculdade que não consegui resolver, é um exercício onde preciso utilizar ponteiro para ponteiro em uma struct mas estou muito perdido na sintaxe. o exercício é o seguinte:
Faça uma struct com dois campos, uma string para nome e um int para armazenar um número inteiro. Na main peça para o usuário digitar o tamanho do array da struct. Crie uma função para alocar dinamicamente esse array de struct e ler os dados digitados pelo usuário. Faça uma função que verifica os números pares digitados pelo usuário na struct e se o número for par dentro do if se chama outra função para manipular esse número par passando toda a struct, essa função deve receber a struct mas manipular apenas o número par dela e dividi-lo por 2 alterando a struct original. No final o programa deve imprimir na main o array dos números.
Eu consegui fazer alocando na própria main, mas dessa forma com uma função separada não consegui. Vou deixar meu código, que deve ter vários erros mas serve pra ilustrar bem o que o exercício pede.
#include<stdio.h>#include<stdlib.h>#include<locale.h>struct dados{char nome[5];int num;};typedefstruct dados dado;void manipula_um_par(dado **q){**q.num=**q.num/2;}void manipula_pares(dado **q,int*x){int i;for(i=0;i<*x;i++){if(*(*q[i]).num%2==0){
manipula_um_par(&q[i]);}}}void define_structs(int*n, dado *q){
dado *p;int i;
p =(dado *) malloc(*n*sizeof(dado));
printf("\n");for(i=0;i<*n;i++){
printf("Digite o %dº nome: ",i+1);
gets(p[i].nome);
setbuf(stdin,NULL);
printf("Digite o %dº número: ",i+1);
scanf("%d",&p[i].num);
setbuf(stdin,NULL);
printf("\n");}
q=&p;}int main(){
setlocale(LC_ALL,"Portuguese_Brazil");int n, i;
dado **q;
printf("Digite o tamanho do vetor de struct: ");
scanf("%d",&n);
setbuf(stdin,NULL);
q =(dado *) malloc(n*sizeof(dado));
define_structs(&n,q);
manipula_pares(q,&n);for(i=0;i<n;i++){
printf("%d\n",**q[i].num);}
printf("\n");return0;}
Pergunta
John Cunha
Olá, estou com um exercício da faculdade que não consegui resolver, é um exercício onde preciso utilizar ponteiro para ponteiro em uma struct mas estou muito perdido na sintaxe. o exercício é o seguinte:
Faça uma struct com dois campos, uma string para nome e um int para armazenar um número inteiro. Na main peça para o usuário digitar o tamanho do array da struct. Crie uma função para alocar dinamicamente esse array de struct e ler os dados digitados pelo usuário. Faça uma função que verifica os números pares digitados pelo usuário na struct e se o número for par dentro do if se chama outra função para manipular esse número par passando toda a struct, essa função deve receber a struct mas manipular apenas o número par dela e dividi-lo por 2 alterando a struct original. No final o programa deve imprimir na main o array dos números.
Eu consegui fazer alocando na própria main, mas dessa forma com uma função separada não consegui. Vou deixar meu código, que deve ter vários erros mas serve pra ilustrar bem o que o exercício pede.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.