diff options
| author | cassio <cassiopc@gmail.com> | 2013-07-02 05:46:45 +0000 |
|---|---|---|
| committer | cassio <cassiopc@gmail.com> | 2013-07-02 05:46:45 +0000 |
| commit | be2491b093b1f0ca430bede679ecbb670041e483 (patch) | |
| tree | fe2da63d1811cb93e4352a43a113ace37b9f6017 /doc/tests/fontes/multas-yes.c | |
| parent | a9aa438ea0558eb0044cf1e54a9190ddb41b65e5 (diff) | |
| download | boca-be2491b093b1f0ca430bede679ecbb670041e483.tar.gz boca-be2491b093b1f0ca430bede679ecbb670041e483.zip | |
restructuring of boca's git
Diffstat (limited to 'doc/tests/fontes/multas-yes.c')
| -rw-r--r-- | doc/tests/fontes/multas-yes.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/doc/tests/fontes/multas-yes.c b/doc/tests/fontes/multas-yes.c new file mode 100644 index 0000000..3729d0b --- /dev/null +++ b/doc/tests/fontes/multas-yes.c @@ -0,0 +1,85 @@ +/* Copyright 2001 Maratona de Programacao do IME-USP -- cef@ime.usp.br + */ + +#include <stdio.h> + +typedef struct +{ + char nome[100]; + char nomeconv[100]; + + int pontos; +} +m_familia; + +#define MAX 21 + +char conv(char c) +{ + if(c >= 'A' && c <= 'Z') return (c += 'a' - 'A'); + return(c); + +} + + +int menor(char v[80], char w[80]) +{ + int i=0; + + while(i < 80 && v[i] == w[i])i++; + return(v[i] < w[i]); +} + + +int main(int argc, char *argv[]) +{ + FILE * ent; + int cont = 0; + int n, i,j, multa, nmult, min; + m_familia familia[20]; + + ent = stdin; + + fscanf(ent, "%d", &n); + while (n > 0){ + cont++; + printf("Familia %d\n", cont); + + for (i = 0; i < n; i++){ + fscanf(ent, "%s", &(familia[i].nome[0])); + j = 0; + while(familia[i].nome[j] != 0) { + familia[i].nomeconv[j]=conv(familia[i].nome[j]); + j++; + } + familia[i].nomeconv[j]=0; + + familia[i].pontos = 0; + } + fscanf(ent, "%d", &multa); + nmult = 0; + + while(multa > 0){ + nmult++; + min = 0; + for (i = 0; i < n; i++) + if (familia[i].pontos < familia[min].pontos || + (familia[i].pontos == familia[min].pontos && + menor(familia[i].nomeconv, familia[min].nomeconv))) + min = i; + printf("Multa %d %s", nmult, familia[min].nome); + familia[min].pontos += multa; + if ( familia[min].pontos >= MAX) + printf(" carteira suspensa\n"); + else printf("\n"); + fscanf(ent, "%d", &multa); + } + printf("\n"); + + fscanf(ent, "%d", &n); + } + fclose(ent); + return(0); +} + + |