Você está na página 1de 6

1: #include<stdio.

h>
2: #include <stdlib.h>
3: #include <time.h>
4: #define BLOCO 4
5:
6: //Mostra qual o maior algarismo em um vetor
7: int omaior( int v[] )
8: {
9: int i, maior = 0;
10:
11: for(i = 0; i < BLOCO; i++)
12: {
13: if(v[i] > maior )
14: {
15: maior = v[i];
16: }
17: }
18: return maior;
19: }
20:
21: //Mostra o segundo maior algorismo no vetor. O maior tem que ser declarado...
22: int segundomaior( int v[], int maiorum )
23: {
24: int i, smaior = 0;
25:
26: for(i = 0; i < BLOCO; i++)
27: {
28: if( (v[i] > smaior) && (v[i] != maiorum) )
29: {
30: smaior = v[i];
31: }
32: }
33: return smaior;
34: }
35:
36:
37: //Mostra o maior dentre um vetor e conta as repeticoes do mesmo dentro do vetor
38:
39: int resultado( int v[] )
40: {
41: int i, maior, cont = 0, res = 0, index;
42: maior = omaior( v );
43:
44: for(i = 0; i < BLOCO; i++)
45: {
46: if(maior == v[i])
47: {
48: index = i;
49: cont++;
50: }
51: }
52:
53: if(cont == 1)
54: {
55: return index;
56: }
57: else
58: {
59: return 0;
60: }
61: }
62:
63: //Verifica quem é o segundo maior e quantas são as ocorrências.
64:
65: int resultadosegundolugar( int v[] )
66: {
67: int i, maior, segundo, cont = 0, res = 0, index;
68: maior = omaior( v );
69: segundo = segundomaior( v, maior );
70:
71: for(i = 0; i < BLOCO; i++)
72: {
73: if(segundo == v[i])
74: {
75: index = i;
76: cont++;
77: }
78: }
79:
80: if(cont == 1)
81: {
82: return index;
83: }
84: else
85: {
86: return 0;
87: }
88: }
89:
90: //Compara dois vetores para determinar o segundo lugar, alinhando seus indices
91:
92: int comparasegundolugar(int p[], int q[])
93: {
94: int i, pmaior, qmaior, indicemaior, cont = 0, maior1, maior2;
95:
96: maior1 = omaior( p );
97: pmaior = segundomaior( p, maior1 );
98:
99: maior2 = omaior( q );
100: qmaior = segundomaior( q, maior2 );
101:
102: for(i = 0; i < BLOCO; i++)
103: {
104: if( (p[i] == pmaior) && (q[i] == qmaior) )
105: {
106: indicemaior = i;
107: cont++;
108: }
109: }
110:
111: if(cont == 1)
112: {
113: return indicemaior;
114: }
115: else
116: {
117: return 0;
118: }
119: }
120:
121: //Compara dois vetores para determinar o primeiro lugar, alinhando seus indices
122:
123: int compara(int p[], int q[])
124: {
125: int i, pmaior, qmaior, indicemaior, cont = 0;
126: pmaior = omaior(p);
127: qmaior = omaior(q);
128:
129: for(i = 0; i < BLOCO; i++)
130: {
131: if( (p[i] == pmaior) && (q[i] == qmaior) )
132: {
133: indicemaior = i;
134: cont++;
135: }
136: }
137:
138: if(cont == 1)
139: {
140: return indicemaior;
141: }
142: else
143: {
144: return 0;
145: }
146: }
147:
148:
149: //Função para determinar somente o primeiro lugar...
150:
151: int primeirolugar( int p[], int q[], int r[], int s[] )
152: {
153: int mpts;
154: mpts = resultado(p);
155: if(mpts != 0)
156: {
157: return mpts;
158: }
159: else
160: {
161: mpts = compara( p, q );
162:
163: if(mpts != 0)
164: {
165: return mpts;
166: }
167: else
168: {
169: mpts = compara( p, r );
170:
171: if(mpts != 0)
172: {
173: return mpts;
174: }
175:
176: else
177: {
178: mpts = compara( p, s );
179: return mpts;
180: }
181: }
182:
183: }
184: }
185:
186: //Função para determinar somente o segundo lugar...
187:
188: int segundolugar( int p[], int q[], int r[], int s[] )
189: {
190: int mpts;
191: mpts = resultadosegundolugar(p);
192: if(mpts != 0)
193: {
194: return mpts;
195: }
196: else
197: {
198: mpts = comparasegundolugar( p, q );
199:
200: if(mpts != 0)
201: {
202: return mpts;
203: }
204: else
205: {
206: mpts = comparasegundolugar( p, r );
207:
208: if(mpts != 0)
209: {
210: return mpts;
211: }
212:
213: else
214: {
215: mpts = comparasegundolugar( p, s );
216: return mpts;
217: }
218: }
219:
220: }
221: }
222:
223: //Cria o vetor de pontos - recebe o nome do time 1, time 2, numero de gols do time
224: void pontuacao( int t1, int t2, int pts1, int pts2, int v[] )
225: {
226: if(pts1 == pts2)
227: {
228: v[t1] += 1;
229: v[t2] += 1;
230: }
231: if(pts1 > pts2)
232: {
233: v[t1] += 3;
234: }
235: else
236: {
237: v[t2] += 3;
238: }
239:
240: }
241:
242: //Essa função gera os gols de cada partida, calcula os pontos e atribui aos vetore
243: //Poderia ter usado o scanf, mas demandaria muito tempo para testar um por um.
244:
245: void preliminares(int pontos[], int salgols[], int golsfeitos[], int golsconv[])
246: {
247: int i, j, pts1, pts2, t1, t2, bloco = 0;
248: srand(time(NULL));
249: for( i = 0; i < BLOCO; i++ )
250: {
251: for(j = 0; (j < BLOCO) && (i != j); j++)
252: {
253: pts1 = rand()%10; //index i
254: pts2 = rand()%10; //index j
255: t1 = i + bloco;
256: t2 = j + bloco;
257:
258: printf("\n| Jogo %2d | %2d x %2d | Jogo %2d |", t1, pts1, pts2, t2);
259:
260: pontuacao(t1, t2, pts1, pts2, pontos);
261: salgols[t1] = pts1 - pts2;
262: salgols[t2] = pts2 - pts1;
263: golsfeitos[t1] += pts1;
264: golsfeitos[t2] += pts2;
265: golsconv[t1] += pts2;
266: golsconv[t2] += pts1;
267:
268: }
269: }
270: printf("\n");
271: }
272:
273:
274: //Funçao que reseta um vetor, atribundo 0 a todos os seus valores
275: void reset(int v[], int tam)
276: {
277: int i;
278: for(i = 0; i < tam; i++)
279: {
280: v[i] = 0;
281: }
282: }
283:
284: //Funçao que exibe um vetor
285: void exibir( int vet[], int tam )
286: {
287: int i;
288: for(i = 0; i < tam; i++)
289: {
290: printf("%d ", vet[i]);
291: }
292: printf("\n\n");
293: }
294:
295: //Exibe os resultados do primeiro e segundo lugares, baseado nos vetores de origem
296: void mostraresultado( int pontos[], int salgols[], int golsfeitos[], int golsconv[] , int
297: {
298: int mpts, spts;
299: mpts = primeirolugar( pontos, salgols, golsfeitos, golsconv );
300: spts = segundolugar( pontos, salgols, golsfeitos, golsconv );
301:
302: printf("\n\nPrimeiro lugar grupo: %d: time %d\n\n Segundo lugar grupo: %d, time %d\n\n
303: }
304:
305: int main(void)
306: {
307: int i, mpts = 0, spts = 0;
308: int pontos[32];
309: int salgols[32];
310: int golsfeitos[32];
311: int golsconv[32];
312: int *p, *q, *r, *s;
313:
314: p = &pontos[0];
315: q = &salgols[0];
316: r = &golsfeitos[0];
317: s = &golsconv[0];
318:
319: reset( p, 32 );
320: reset( q, 32 );
321: reset( r, 32 );
322: reset( s, 32 );
323:
324: for( i = 0; i < 32; i+= 4)
325: {
326: preliminares(p + i, q + i, r + i, s + i);
327: mostraresultado( p + i, q + i, r + i, s + i, i);
328: }
329: //exibir(p, 32);
330: //exibir(q, 32);
331: //exibir(r, 32);
332: //exibir(s, 32);
333:
334: }

Você também pode gostar