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}