1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda fazer função em C

Discussão em 'Programação' iniciada por jffluis, 18 de Outubro de 2012. (Respostas: 6; Visualizações: 780)

  1. jffluis

    jffluis Power Member

    Boas pessoal tou a tentar fazer uma função em C só que só obtenho erros e nem consigo compilar. Ainda sou um leigo nisto e ainda estou a dar os primeiros passos, se me podessem ajudar agradecia. Não queria que me fizessem a "papinha toda", mas sim que me dessem umas luzes para ir ganhando alguma autonomia.
    O trecho de código que quero fazer uma função é este:

    Código:
    [COLOR=#BB2CA2][FONT=Menlo]
    [/FONT][/COLOR][FONT=Menlo]if(numeroParticipantes == MAX_PARTICIPANTES)[/FONT][FONT=Menlo]                            {[/FONT]
    [FONT=Menlo]printf("Ja tem %d participantes inseridos!\n", MAX_PARTICIPANTES);[/FONT]
    [FONT=Menlo]                            }[/FONT]
    [FONT=Menlo]                            else[/FONT]
    [FONT=Menlo]                            {[/FONT]
    [FONT=Menlo]                                do[/FONT]
    [FONT=Menlo]                                {[/FONT]
    [FONT=Menlo]                                    printf("\nInsira o numero do %d participante: ",numeroParticipantes+1);[/FONT]
    [FONT=Menlo]                                    fflush(stdin);[/FONT]
    [FONT=Menlo]                                    scanf("%d", &participantes[numeroParticipantes].numero);[/FONT]
    [FONT=Menlo]                                    repetido=0;[/FONT]
    [FONT=Menlo]                                    for (i=0; i<numeroParticipantes; i++)[/FONT]
    [FONT=Menlo]                                    {[/FONT]
    [FONT=Menlo]                                        if(participantes[i].numero==participantes[numeroParticipantes].numero)[/FONT]
    [FONT=Menlo]                                            repetido=1;[/FONT]
    [FONT=Menlo]                                    }[/FONT]
    [FONT=Menlo]                                    if (repetido==1)[/FONT]
    [FONT=Menlo]                                        printf("\nEsse numero ja existe!");[/FONT]
    [FONT=Menlo]                                }[/FONT]
    [FONT=Menlo]                                while (repetido==1);[/FONT]
    
    [FONT=Menlo]                                printf("\nInsira o nome do Participante: ");[/FONT]
    [FONT=Menlo]                                scanf("%s", participantes[numeroParticipantes].nome);[/FONT]
    [FONT=Menlo]                               printf("\nInsira a idade do Participante: ");[/FONT]
    [FONT=Menlo]                                fflush(stdin);[/FONT]
    [FONT=Menlo]                                participantes[numeroParticipantes].idade = lerInteiro(MIN_IDADE,MAX_IDADE);[/FONT]
    
    [FONT=Menlo]                                numeroParticipantes++;[/FONT]
    [FONT=Menlo]                            }[/FONT]
     
  2. Que erros estás a obter?
     
  3. jffluis

    jffluis Power Member

    Eu não se sei se estou a a fazer isto totalmente bem, mas não posso copiar este código na totalidade para dentro da função? Depois declaro-a antes do main e ponho-a no local certo?
     
  4. dagas46

    dagas46 Power Member

    Tens de explicar o que queres fazer para conseguirmos ajudar. Quais os erros que estás a obter?
     
  5. Galateia

    Galateia Power Member

    Pois só com esse trecho de código e sem saber o problema não sei ajudar. Mas pelo que percebi queres preencher um vector de participantes de alguma coisa. Deduzo que isso esteja dentro de um ciclo onde "numeroParticipantes" tenha sido inicializado e vai sendo incrementado.

    Tu inicialmente pedes ao user para inserir o numero do participante e colocas logo na estrutura e só depois vais confirmar se ele já existia, se calhar devias confirmar se já existe primeiro antes de lá colocares, senão estás sempre a substituir o valor, mas de qualquer das formas isso não daria erro de compilação, é só uma questão de eficiência. E por fim pedes o resto dos campos da estrutura. Depois não sei o que "lerInteiro" faz, mas um simples scanf deveria bastar, mas não sei qual é o âmbito do problema. Explica melhor e lá se conseguirá ajudar.
     
  6. jffluis

    jffluis Power Member

    Obrigado desde já pela tua ajuda, a função lerInteiro foi uma função cirada na aula para ler nº inteiros

    Posso meter aqui o código da função:


    Código:
    [FONT=Menlo]int[/FONT][FONT=Menlo] lerInteiro([/FONT][FONT=Menlo]int[/FONT][FONT=Menlo] min,[/FONT][FONT=Menlo]int[/FONT][FONT=Menlo] max)[/FONT][FONT=Menlo]{[/FONT]
    [FONT=Menlo]    int num;[/FONT]
    [FONT=Menlo]    do[/FONT]
    [FONT=Menlo]    {[/FONT]
    
    [COLOR=#D12F1B][FONT=Menlo]        printf("\n\nInsira um valor inteiro (%d a %d):",min,max);[/FONT][/COLOR]
    [FONT=Menlo]        fflush(stdin);[/FONT]
    [FONT=Menlo]        scanf("%d", &num);[/FONT]
    [FONT=Menlo]        if (num<min || num>max)[/FONT]
    [FONT=Menlo]        {[/FONT]
    [COLOR=#D12F1B][FONT=Menlo]            printf("\nNumero invalido!");[/FONT][/COLOR]
    [FONT=Menlo]        }[/FONT]
    
    [FONT=Menlo]    }[/FONT]
    [FONT=Menlo]    while (num<min || num>max);[/FONT]
    
    [FONT=Menlo]    return num;[/FONT]
    [FONT=Menlo]}
    [/FONT]
    
    Está-me a dar este erro no Xcode: "Subscripted value is not an array, pointer, or vector"

    Já agora ponho aqui a função que quero fazer e me está a dar erro:

    Código:
    [FONT=Menlo]int[/FONT][FONT=Menlo] inserirParticipantes()[/FONT][FONT=Menlo]{[/FONT]
    [FONT=Menlo]    int numeroParticipantes, repetido, participantes, i;[/FONT]
    [FONT=Menlo]    if (numeroParticipantes==MAX_PARTICIPANTES){[/FONT]
    [FONT=Menlo]        [/FONT]
    [COLOR=#D12F1B][FONT=Menlo]        printf("Ja tem %d participantes inseridos!\n", MAX_PARTICIPANTES);[/FONT][/COLOR]
    [FONT=Menlo]    }[/FONT]
    [FONT=Menlo]    [/FONT]
    [FONT=Menlo]    else{[/FONT]
    [FONT=Menlo]        do {[/FONT]
    [FONT=Menlo]            [/FONT]
    [COLOR=#D12F1B][FONT=Menlo]            printf("\nInsira o numero do %d participante: ",numeroParticipantes+1);[/FONT][/COLOR]
    [FONT=Menlo]            fflush(stdin);[/FONT]
    [FONT=Menlo]            scanf("%d", &participantes[numeroParticipantes].numero);[/FONT]
    [FONT=Menlo]            repetido=0;[/FONT]
    [FONT=Menlo]            for (i=0; i<numeroParticipantes; i++)[/FONT]
    [FONT=Menlo]            {[/FONT]
    [FONT=Menlo]                if(participantes[i].numero==participantes[numeroParticipantes].numero)[/FONT]
    [FONT=Menlo]                    repetido=1;[/FONT]
    [FONT=Menlo]            }[/FONT]
    [FONT=Menlo]            if (repetido==1)[/FONT]
    [COLOR=#D12F1B][FONT=Menlo]                printf("\nEsse numero ja existe!");[/FONT][/COLOR]
    [FONT=Menlo]            [/FONT]
    [FONT=Menlo]            [/FONT]
    [FONT=Menlo]        } while (repetido==1);[/FONT]
    [FONT=Menlo]    }[/FONT]
    [FONT=Menlo]}[/FONT]
     
    Última edição: 19 de Outubro de 2012
  7. Esfomeado

    Esfomeado Power Member

    Erros que pode ver no segundo codigo:

    Inicializa primeiro todas as variveis!
    Aqui estas a comparar lixo a um valor: if (numeroParticipantes==MAX_PARTICIPANTES)

    participantes -> Está declaro como variavel inteira e não como vector de inteiros

    participantes[numeroParticipantes].numero???????????????
    Não percebi o que pretendes fazer aqui mas isto não é possivel se participantes for um array.

     

Partilhar esta Página