Skip to content

Commit 0b23960

Browse files
committed
.
1 parent 4ea07a5 commit 0b23960

File tree

7 files changed

+359
-0
lines changed

7 files changed

+359
-0
lines changed

OBI/2024/fase1/a.out

16.1 KB
Binary file not shown.

OBI/2024/fase1/concurso.c

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include <stdio.h>
2+
3+
void LeVetor(int n, int vet[]);
4+
void ImprimeVetor(int n, int vet[]);
5+
void OrdenaVetor(int n, int vet[]);
6+
int ENcontraIdxMenorEntreAeB(int vet[], int a, int b);
7+
8+
int qtdCandidatos;
9+
int qtdAprovados;
10+
int notaDeCorte;
11+
12+
int main() {
13+
scanf("%d%d", &qtdCandidatos, &qtdAprovados);
14+
15+
int candidatos[qtdCandidatos];
16+
17+
LeVetor(qtdCandidatos, candidatos);
18+
19+
OrdenaVetor(qtdCandidatos, candidatos);
20+
21+
printf("%d", candidatos[qtdCandidatos - (qtdAprovados)]);
22+
//ImprimeVetor(qtdCandidatos, candidatos);
23+
24+
return 0;
25+
}
26+
27+
void LeVetor(int n, int vet[]) {
28+
int i;
29+
for (i = 0; i < n; i++) {
30+
scanf("%d", &vet[i]);
31+
}
32+
}
33+
34+
void ImprimeVetor(int n, int vet[]) {
35+
int i;
36+
for (i = 0; i < n; i++) {
37+
printf("%d ", vet[i]);
38+
}
39+
}
40+
41+
void OrdenaVetor(int n, int vet[]) {
42+
int i, aux;
43+
44+
for (i = 0; i < n-1; i++) {
45+
aux = ENcontraIdxMenorEntreAeB(vet, i+1, n);
46+
if (vet[aux] < vet[i]) {
47+
int aux2;
48+
aux2 = vet[i];
49+
vet[i] = vet[aux];
50+
vet[aux] = aux2;
51+
// ImprimeVetor(n, vet);
52+
// printf("\n");
53+
}
54+
}
55+
}
56+
57+
int ENcontraIdxMenorEntreAeB(int vet[], int a, int b) {
58+
int i;
59+
int idxMenor = a;
60+
61+
for (i = a+1; i < b; i++) {
62+
if (vet[i] < vet[idxMenor]) {
63+
idxMenor = i;
64+
}
65+
}
66+
return idxMenor;
67+
}

OBI/2024/fase1/jogo.c

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#include <stdio.h>
2+
3+
void LeMatriz(int l, int c, char mat[l][c]);
4+
void ImprimeMatriz(int l, int c, char mat[l][c]);
5+
void Simula(int tam, char mat[tam][tam], int passos);
6+
int QtdVizinhos(int tam, char mat[tam][tam], int i, int j);
7+
8+
int tam, passos;
9+
10+
int main() {
11+
scanf("%d %d\n", &tam, &passos);
12+
char matriz[tam][tam];
13+
14+
LeMatriz(tam, tam, matriz);
15+
Simula(tam, matriz, passos);
16+
ImprimeMatriz(tam, tam, matriz);
17+
return 0;
18+
}
19+
20+
void LeMatriz(int l, int c, char mat[l][c]) {
21+
int i, j;
22+
23+
for(i = 0; i < l; i++) {
24+
for (j = 0; j < c; j++) {
25+
scanf("%c", &mat[i][j]);
26+
}
27+
scanf("%*c");
28+
}
29+
}
30+
31+
void ImprimeMatriz(int l, int c, char mat[l][c]) {
32+
int i, j;
33+
34+
for(i = 0; i < l; i++) {
35+
for (j = 0; j < c; j++) {
36+
printf("%c", mat[i][j]);
37+
}
38+
printf("\n");
39+
}
40+
}
41+
42+
void Simula(int tam, char mat[tam][tam], int passos) {
43+
int i, j, qtdVizinhos;
44+
int t;
45+
char proxMat[tam][tam];
46+
47+
//ImprimeMatriz(tam, tam, mat);
48+
49+
for (t = 1; t <= passos; t++) {
50+
for (i = 0; i < tam; i++) {
51+
for (j = 0; j < tam; j++) {
52+
proxMat[i][j] = mat[i][j];
53+
}
54+
}
55+
56+
for (i = 0; i < tam; i++) {
57+
for (j = 0; j < tam; j++) {
58+
qtdVizinhos = QtdVizinhos(tam, mat, i, j);
59+
//printf("'%d'", qtdVizinhos);
60+
if (mat[i][j] == '0') {
61+
if (qtdVizinhos == 3) {
62+
proxMat[i][j] = '1';
63+
}
64+
} else {
65+
if (!(qtdVizinhos == 2 || qtdVizinhos == 3)) {
66+
proxMat[i][j] = '0';
67+
}
68+
}
69+
}
70+
}
71+
//ImprimeMatriz(tam, tam, proxMat);
72+
//printf("\n");
73+
for (i = 0; i < tam; i++) {
74+
for (j = 0; j < tam; j++) {
75+
mat[i][j] = proxMat[i][j];
76+
}
77+
}
78+
}
79+
}
80+
81+
int QtdVizinhos(int tam, char mat[tam][tam], int i, int j) {
82+
int k, l;
83+
int vizinhos = 0;
84+
85+
for (k = -1; k <= 1; k++) {
86+
for (l = -1; l <= 1; l++) {
87+
if (mat[i + k][j + l] == '1') {
88+
if (k || l)
89+
if((i + k < tam && i + k >= 0) && (j + l < tam && j + l >= 0))
90+
vizinhos++;
91+
}
92+
}
93+
}
94+
return vizinhos;
95+
}

OBI/2024/fase1/jogo2.c

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <time.h>
4+
#include <unistd.h>
5+
6+
#define BLKB "\e[40m"
7+
#define WHTHB "\e[0;107m"
8+
9+
#define VIVO ' '
10+
#define MORTO '#'
11+
12+
void ImprimeMatriz(int l, int c, char mat[l][c]);
13+
void Simula(int l, int c, char mat[l][c]);
14+
int QtdVizinhos(int l, int c, char mat[l][c], int i, int j);
15+
void GeraMatriz(int l, int c, char mat[l][c]);
16+
17+
int l, c;
18+
19+
int main() {
20+
scanf("%d %d", &l, &c);
21+
char matriz[l][c];
22+
23+
GeraMatriz(l, c, matriz);
24+
25+
Simula(l, c, matriz);
26+
27+
return 0;
28+
}
29+
30+
void ImprimeMatriz(int l, int c, char mat[l][c]) {
31+
int i, j;
32+
33+
for (i = 0; i < l; i++) {
34+
for (j = 0; j < c; j++) {
35+
if (mat[i][j] == VIVO)
36+
printf(BLKB "%c", mat[i][j]);
37+
else
38+
printf(WHTHB "%c", mat[i][j]);
39+
}
40+
printf("\n");
41+
}
42+
}
43+
44+
void Simula(int l, int c, char mat[l][c]) {
45+
int i, j, qtdVizinhos;
46+
int t;
47+
char proxMat[l][c];
48+
49+
while (1) {
50+
ImprimeMatriz(l, c, mat);
51+
usleep(200 * 1000);
52+
system("clear");
53+
54+
for (i = 0; i < l; i++) {
55+
for (j = 0; j < c; j++) {
56+
proxMat[i][j] = mat[i][j];
57+
}
58+
}
59+
60+
for (i = 0; i < l; i++) {
61+
for (j = 0; j < c; j++) {
62+
qtdVizinhos = QtdVizinhos(l, c, mat, i, j);
63+
if (mat[i][j] == MORTO) {
64+
if (qtdVizinhos == 3) {
65+
proxMat[i][j] = VIVO;
66+
}
67+
} else {
68+
if (!(qtdVizinhos == 2 || qtdVizinhos == 3)) {
69+
proxMat[i][j] = MORTO;
70+
}
71+
}
72+
}
73+
}
74+
75+
for (i = 0; i < l; i++) {
76+
for (j = 0; j < c; j++) {
77+
mat[i][j] = proxMat[i][j];
78+
}
79+
}
80+
}
81+
}
82+
83+
int QtdVizinhos(int l, int c, char mat[l][c], int i, int j) {
84+
int a, b;
85+
int vizinhos = 0;
86+
87+
for (a = -1; a <= 1; a++) {
88+
for (b = -1; b <= 1; b++) {
89+
if (mat[i + a][j + b] == VIVO) {
90+
if (a || b)
91+
if ((i + a < l && i + a >= 0) && (j + b < c && j + b >= 0))
92+
vizinhos++;
93+
}
94+
}
95+
}
96+
return vizinhos;
97+
}
98+
99+
void GeraMatriz(int l, int c, char mat[l][c]) {
100+
printf("GeraMatriz\n");
101+
102+
for (int i = 0; i < l; i++) {
103+
for (int j = 0; j < c; j++) {
104+
if (rand() % 5) {
105+
mat[i][j] = MORTO;
106+
} else {
107+
mat[i][j] = VIVO;
108+
}
109+
}
110+
}
111+
112+
ImprimeMatriz(l, c, mat);
113+
}

OBI/2024/fase1/ogro.c

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include <stdio.h>
2+
3+
int E;
4+
int D;
5+
6+
int main() {
7+
scanf("%d %d", &E, &D);
8+
9+
if (E > D) {
10+
printf("%d", E + D);
11+
} else {
12+
printf("%d", 2 * (D - E));
13+
}
14+
return 0;
15+
}

OBI/2024/fase1/placas.c

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#include <stdio.h>
2+
3+
int TamanhoString(char str[]);
4+
int ConferePlacaAntiga(char placa[]);
5+
int ConferePlacaNova(char placa[]);
6+
int EhLetra(char c);
7+
int EhNumero(char c);
8+
9+
10+
char placa[10];
11+
12+
int main() {
13+
scanf("%[A-Z0-9-]", placa);
14+
15+
if (TamanhoString(placa) > 8 || TamanhoString(placa) < 7){
16+
printf("0");
17+
return 0;
18+
}
19+
if(TamanhoString(placa) == 8){
20+
printf("%d", ConferePlacaAntiga(placa));
21+
return 0;
22+
}
23+
24+
printf("%d", ConferePlacaNova(placa));
25+
26+
return 0;
27+
}
28+
29+
int TamanhoString(char str[]) {
30+
int i = 0;
31+
while(placa[i]) {
32+
i++;
33+
}
34+
return i;
35+
}
36+
37+
int ConferePlacaAntiga(char placa[]) {
38+
if (EhLetra(placa[0]))
39+
if(EhLetra(placa[1]))
40+
if (EhLetra(placa[2]))
41+
if (placa[3] == '-')
42+
if(EhNumero(placa[4]))
43+
if(EhNumero(placa[5]))
44+
if(EhNumero(placa[6]))
45+
if(EhNumero(placa[7]))
46+
return 1;
47+
48+
return 0;
49+
}
50+
51+
int ConferePlacaNova(char placa[]){
52+
if (EhLetra(placa[0]))
53+
if(EhLetra(placa[1]))
54+
if (EhLetra(placa[2]))
55+
if (EhNumero(placa[3]))
56+
if(EhLetra(placa[4]))
57+
if(EhNumero(placa[5]))
58+
if(EhNumero(placa[6]))
59+
return 2;
60+
61+
return 0;
62+
}
63+
64+
int EhLetra(char c) {
65+
return (c <= 'Z' && c >= 'A');
66+
}
67+
int EhNumero(char c) {
68+
return (c <= '9' && c >= '0');
69+
}

materiais/book.pdf

1.05 MB
Binary file not shown.

0 commit comments

Comments
 (0)