Revisão de C: Alguns Exemplos
De Aulas
Links relacionados: DAS5102 Fundamentos da Estrutura da Informação
Structs
1#include <stdio.h>
2#include <stdlib.h>
3
4struct Ponto {
5 int x;
6 int y;
7};
8
9struct Retangulo {
10 struct Ponto p1;
11 struct Ponto p2;
12 int color;
13};
14
15char* pontoToString(struct Ponto p) {
16 char* aux = (char*) malloc(50 * sizeof(char));
17 sprintf(aux, "(%d, %d)", p.x, p.y);
18 return aux;
19}
20
21char* retanguloToString(struct Retangulo r) {
22 char* aux = (char*) malloc (255 * sizeof(char));
23 sprintf(aux, "%s, %s", pontoToString(r.p1), pontoToString(r.p2));
24 return aux;
25}
26
27void printPonto(struct Ponto p){
28 printf("(%d, %d)\n", p.x, p.y);
29}
30
31void printRetangulo(struct Retangulo r) {
32 printf("(%d, %d), (%d, %d)\n", r.p1.x, r.p1.y, r.p2.x, r.p2.y);
33}
34
35int main() {
36 int i;
37 struct Retangulo ret;
38 ret.color = 255;
39 ret.p1.x = 300;
40 ret.p1.y = 400;
41 ret.p2.x = 700;
42 ret.p2.y = 400;
43 printf("%s\n", retanguloToString(ret));
44
45 struct Ponto p1;
46 p1.x = 100;
47 p1.y = 200;
48 printf("%s\n", pontoToString(p1));
49
50 struct Ponto* pp = (struct Ponto*) malloc(sizeof(struct Ponto));
51 pp->x = 67;
52 pp->y = 45;
53 printf("%s\n", pontoToString(*pp));
54 free(pp);
55 pp = NULL;
56
57 struct Retangulo* r = (struct Retangulo*) malloc(5 * sizeof(struct Retangulo));
58 for (i = 0; i < 5; i++) {
59 r[i].p1.x = 1 * i;
60 r[i].p1.y = 1 * i;
61 r[i].p2.x = 10 * i;
62 r[i].p2.y = 20 * i;
63 }
64 for (i = 0; i < 5; i++) {
65 printf("%s\n", retanguloToString(r[i]));
66 }
67 free(r);
68 return 0;
69}
Matriz Bidimensional Dinâmica
1#include <stdio.h>
2#include <stdlib.h>
3
4int main() {
5 int** mat, i, j, linhas, colunas;
6
7 printf("Linhas: ");
8 scanf("%d", &linhas);
9 printf("Colunas: ");
10 scanf("%d", &colunas);
11
12 mat = (int**) malloc(linhas * sizeof(int*));
13 for (i = 0; i < linhas; i++) {
14 mat[i] = (int*) malloc(colunas * sizeof(int));
15 }
16 /* Lendo as informacoes via teclado */
17 for (j = 0; j < linhas; j++) {
18 for (i = 0; i < colunas; i++) {
19 printf("Elemento na posicao linha %d e coluna %d: ", j, i);
20 scanf("%d", &mat[j][i]);
21 }
22 }
23
24 /* Carregando as informacoes automaticamente
25 for (j = 0; j < linhas; j++) {
26 for (i = 0; i < colunas; i++) {
27 mat[j][i] = i + j;
28 }
29 }
30 */
31 for (j = 0; j < linhas; j++) {
32 for (i = 0; i < colunas; i++) {
33 printf("%d\t", mat[j][i]);
34 }
35 printf("\n");
36 }
37}