• 0
Sign in to follow this  
dededin

Não consigo passar struct para função em C

Question

Eu não consigo passar a struct para funçao ...

Devo salvar o valor digitado na struct e depois passar para a funçao verificar se é par, se for ira para outra funçao para dividi-la por 2...

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

struct dados{
int numero;
char nome[5];
};

void manipula_um_par (int *a){
    *a = *a/2;
}

int *manipula_pares (struct dados x[10]){
    int z;
    for(z=0;z<10;z++){
        if (x[z].numero %2==0){
            manipula_um_par(&x[z].numero);
        }
    }
    return x[10].numero;
}

int main(){
    struct dados v[10];
    int x;
    for(x=0;x<10;x++){
        printf("\nDigite o nome do %d aluno: ",x+1);
        fflush(stdin);
        fgets(v[x].nome, 20, stdin);
        printf("\nDigite o %d numero: ",x+1);
        scanf("%d",&v[x].numero);
        }
   *manipula_pares(&v[10].numero);
    for(x=0;x<10;x++){
    printf("--- %d ",v[x].numero);
    }

    return 0;
}

OBG quem puder!!

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0
#include <stdio.h>
#include <stdlib.h>

#define TAM 10    //Tamanho do vetor de structs
#define ITE 3   //representa o numero de iterecoes que vai realizar cad laço for. Serve para limitar o numero de provas a realizar e assim n ter de preencher tantas vezes em cada caso de teste.

struct dados {
    int numero;
    char nome[50];
};

void manipula_um_par ( int *a ) {
    if ( *a%2 == 0 )
        *a = *a / 2;
}

void manipula_pares ( struct dados x[10] ) {
    
    int z;
    
    for ( z = 0; z < 10; z++ ) {
        if ( x[z].numero % 2 == 0 ) {
            manipula_um_par ( &x[z].numero );
        }
    }
    
    //return &x[10].numero;
}

int main() {
    struct dados v[TAM];
    int x;
    
    for ( x = 0; x < ITE; x++ ) {
        printf ( "\nDigite o nome do %d aluno: ", x + 1 );
        fflush ( stdin );
        fgets ( v[x].nome, 20, stdin );
        printf ( "\nDigite o %d numero: ", x + 1 );
        scanf ( "%d", &v[x].numero );
    }
    
    manipula_pares ( v );
    
    for ( x = 0; x < ITE; x++ ) {
        printf ( "--- %d ", v[x].numero );
    }
    
    return 0;
}

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this