Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcela Dutra

Função

Recommended Posts

Alguem pode me ajudar a fazer esse cod com função

 

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

struct estadosTransito{
    char nomeEstado [60];
    int numeroVeiculos;
    int numeroAcidentes;
};

int main ()
{
    struct estadosTransito indice[2]; // Estrutura

    int i, posMenorIndice=0,posMaiorIndice=0; // Pega a posição do nome do estado de Menor indice e Maior indice de acidentes

    float percentualVeiculos[2],mediaAcidentes[2]={0};

    float maiorIndice, menorIndice ,indiceTotalMaior, indiceTotalMenor; //Recebe a divisao do numero de acidentes pelo numero de veiculos
                                                                        // e compara para ver qual indice é maior e menor

    for (i=0;i<2;i++){
    printf ("Digite o nome do estado: ");
    gets (indice[i].nomeEstado);
    printf ("Digite o numero de veiculos que circularam (em 2006): ");
    scanf ("%d", &indice[i].numeroVeiculos);
    printf ("Digite o numero de acidentes (em 2006): ");
    scanf ("%d", &indice[i].numeroAcidentes);
    fflush(stdin);
    }

    maiorIndice=((float)indice[0].numeroAcidentes)/indice[0].numeroVeiculos;
    menorIndice= ((float)indice[0].numeroAcidentes)/indice[0].numeroVeiculos;

    for (i=0;i<2;i++){

          indiceTotalMaior=((float)indice[i].numeroAcidentes)/indice[i].numeroVeiculos;

        if (maiorIndice<indiceTotalMaior){
            maiorIndice=indiceTotalMaior;
            posMaiorIndice=i;
        }


        indiceTotalMenor=((float)indice[i].numeroAcidentes)/indice[i].numeroVeiculos;

        if (menorIndice>indiceTotalMenor){
            menorIndice=indiceTotalMenor;
            posMenorIndice=i;
        }

        mediaAcidentes[i]+=indice[i].numeroAcidentes;
        percentualVeiculos[i]=(indice[i].numeroVeiculos*100)/2;

    }

    printf ("Maior indice de acidente Estado: %s Indice: %.3f\n",indice[posMaiorIndice].nomeEstado, maiorIndice);
    printf ("Menor indice de acidente Estado: %s Indice: %.3f\n",indice[posMenorIndice].nomeEstado, menorIndice);
    printf ("Media de acidente em cada Estado: \n");
    for (i=0;i<2;i++){
            printf ("Media acidentes: %s : %.2f\n", indice[i].nomeEstado, mediaAcidentes[i]/2);
    }
    printf ("Percentual de veiculos em cada Estado: \n");
    for (i=0;i<2;i++){
           printf ("Percentual de Veiculos em: %s : %.2f\n", indice[i].nomeEstado, percentualVeiculos[i]);
    }




    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pense em uma função como um relacionamento/namoro: O objeto (A pessoa) entra e sai sem ser a mesma coisa (A pessoa foi alterada, forever...).

Analogias estúpidas a parte:

 

function-machine.jpeg

 

Como pode ver, uma função toma algo como input/entrada, PROCESSA este "algo" (Altera seu valor, manda uma nave pra Marte, faz players ganharem level de experiência ou whatever) e RETORNA um valor. Se uma função não retorna nada (É declarada como void), ela deixa de ser uma função e torna-se um procedure/procedimento (Mas se chamar de "função" ainda assim, é improvável que alguém irá te corrigir). Toda função retorna algo (Se fosse em uma linguagem orientada a objetos, uma função possivelmente seria um "método" e por tanto, se fosse declarada como void, na realidade, tecnicamente, seria uma função por retornar o valor "Null" (Ou None em Python)). Não irei projetar uma função para o seu código, mas irei pegar tudo nele e colocá-lo num procedure separado da função main:

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

struct estadosTransito {
    char nomeEstado [60];
    int numeroVeiculos;
    int numeroAcidentes;
};

// Declaração do procedimento. (Simplesmente recortei todo o código e coloquei dentro do procedimento.)
void procedimento() {

    struct estadosTransito indice[2]; 
    int i, posMenorIndice=0,posMaiorIndice=0;
    float percentualVeiculos[2],mediaAcidentes[2]={0};
    // Inconsistência no espaçamento das vírgulas. Não ajustei para que reparasse.
    // Seja consistente!!! :).
    float maiorIndice, menorIndice ,indiceTotalMaior, indiceTotalMenor;

    // Sempre indente os seus blocos de código, e seja terrivelmente consistente com isso (E espaçamentos).
    for (i=0;i<2;i++) { 
        printf ("Digite o nome do estado: ");
        gets (indice[i].nomeEstado);
        printf ("Digite o numero de veiculos que circularam (em 2006): ");
        scanf ("%d", &indice[i].numeroVeiculos);
        printf ("Digite o numero de acidentes (em 2006): ");
        scanf ("%d", &indice[i].numeroAcidentes);
        fflush(stdin);
    }

    maiorIndice=((float)indice[0].numeroAcidentes)/indice[0].numeroVeiculos;
    menorIndice= ((float)indice[0].numeroAcidentes)/indice[0].numeroVeiculos;

    for (i=0;i<2;i++) {
        indiceTotalMaior=((float)indice[i].numeroAcidentes)/indice[i].numeroVeiculos;
        if (maiorIndice<indiceTotalMaior) {
            maiorIndice=indiceTotalMaior;
            posMaiorIndice=i;
        }
        indiceTotalMenor=((float)indice[i].numeroAcidentes)/indice[i].numeroVeiculos;
        if (menorIndice>indiceTotalMenor) {
            menorIndice=indiceTotalMenor;
            posMenorIndice=i;
        }
        mediaAcidentes[i]+=indice[i].numeroAcidentes;
        percentualVeiculos[i]=(indice[i].numeroVeiculos*100)/2;
    }

    printf ("Maior indice de acidente Estado: %s Indice: %.3f\n",indice[posMaiorIndice].nomeEstado, maiorIndice);
    printf ("Menor indice de acidente Estado: %s Indice: %.3f\n",indice[posMenorIndice].nomeEstado, menorIndice);
    printf ("Media de acidente em cada Estado: \n");

    for (i=0;i<2;i++) {
        printf ("Media acidentes: %s : %.2f\n", indice[i].nomeEstado, mediaAcidentes[i]/2);
    }

    printf ("Percentual de veiculos em cada Estado: \n");

    for (i=0;i<2;i++) {
        printf ("Percentual de Veiculos em: %s : %.2f\n", indice[i].nomeEstado, percentualVeiculos[i]);
    }

}

int main () {

    procedimento(); // Executa o procedimento. Todo aquele bloco será lido apenas aqui, quando for chamado.

    return 0;

}

Estude mais sobre as funções, revise o seu código e pense em como elaborar uma para ele (Estude sobre argumentos de função). Argumentos compreendem a parte do "input" da função.

 

E novamente:

Seja consistente! Se espaçar as coisas de um jeito, seja assim do início ao fim! Não há "pior estilo ao programar", apenas, inconsistência.

Se usar if(){} (Sem espaço depois dos parênteses), mantenha assim até o fim. Se usar if() {} (Com espaço), mantenha assim até o fim. Se declarar "float x, y, z, whatever..." Mantenha as vírgulas assim. Se declarar: "float x ,y ,z ,whatever..." Mantenha assim.

É isso, boa sorte com a implementação de suas funções :).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.