Ir para o conteúdo
fearz7

Implementação duma função

Mensagens Recomendadas

fearz7

Problema inicial : Suponha que um treinador de natação quer manter um registo informático dos três nadadores que treina. Em natação os estilos possíveis são: Livres, Costas, Bruços, e

Mariposa. O registo de cada nadador é composto por: nome, data de nascimento,

peso, altura, e (primeiro) estilo. Todos os atletas nadam todos os estilos, sendo que o

(primeiro) estilo do atleta é o seu estilo preferido – aquele em que é especialista.

Recorrendo a (ANSI) C:

Desde já obrigado pela vossa colaboração!

/* 
* File:   main.c
* Author: Nuno
*
* Created on 20 de Fevereiro de 2012, 20:59
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20
#define MAX1 3



typedef enum {
    LIVRES, COSTAS, BRUCOS, MARIPOSA
} Estilos;

struct dataNasc {
    short dia;
    short mes;
    int ano;

};
typedef struct dataNasc Datanasc;

struct nadador {
    char nome[MAX];
    Datanasc nad;
    float peso;
    float altura;
    Estilos estilo;
};
typedef struct nadador Nadador;

struct nadadores {
    Nadador inf[MAX];
};
typedef struct nadadores Nadadores;

void func(const Nadadores lista, const int M1, Estilos estilo) {

    Nadadores temp = lista;

    int i;
    
    for (i = 0; i < M1; i++) {
        if ((temp.inf[i].estilo)==estilo) {
            printf("%s", temp.inf[i].nome);

        }

    }

}

int main(int argc, char** argv) {

    Nadadores infs;
    strcpy(infs.inf[0].nome, "manuel");
    infs.inf[0].estilo = 1;
    strcpy(infs.inf[1].nome, "jose");
    infs.inf[1].estilo = 2;
    strcpy(infs.inf[2].nome, "leandro");
    infs.inf[2].estilo = 3;

    func(infs, MAX1, 1);
   

    return (EXIT_SUCCESS);
}

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Supoe que sao tres nadadores que tem como especialidade o estilo pedido.

Como devolves os tres para tras, para a funcao que chama a tua?

O prototipo que usaste so permite inputs, nomeadamente a lista de nadadores e o estil a procurar

void saber_esp(struct nadador *lista, char *especialidade);

Precisas de pensar nume maneira de devolver os encontrados ...

hmmm ... talvez alterar a lista de entrada? Nahhhhhhhhhhhh!

Eu ate metia uns consts no prototipo (continua a faltar maneira de passar os resultados para tras):

void saber_esp(const struct nadador *lista, const char *especialidade);

Atencao a forma como passas o resultado: "Nao ha nadadores com esse estilo principal."


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

qual é exactamente a tua dúvida?

EDIT: tive a ver melhor o problema e tenho algumas coisas a apontar:

- não uses caracteres latinos(que não pertençam à tabela ASCI), estás a usar um char não um wchar, por isso o "bruços" tem de ser sem o 'ç', que ficaria "brucos";

-Indenta melhor o código depois do "contador++;" não percebo de que chaveta faz parte;

-Podes bem encontrar o primeiro especialista e returnar o nome dele;

PS: Se for pedido para returnar todos os especialistas podes returnar o nome de todos encontrados separados por um '\n' assim dá a sensação que encontrou todos.

EDIT2:

char *especialistas = NULL;

//.....

especialistas[contador][15]=temp[i]->nome;

//.....

return especialistas;

nenhum 'malloc' nem nada do genero? 


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.