--- /dev/null
+/**
+ * Exercicios 4, 5 e 6 da aula 7.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct {
+ float real, img;
+} complexo;
+
+complexo le_complexo();
+void escreve_complexo(complexo a);
+
+complexo soma_ex4(complexo a, complexo b) {
+ a.real += b.real;
+ a.img += b.img;
+
+ return a;
+}
+
+void soma_ex5(complexo *pa, complexo b) {
+ pa->real += b.real;
+ pa->img += b.img;
+}
+
+complexo * soma_ex6(complexo a, complexo b) {
+ complexo * psoma;
+
+ psoma = malloc(sizeof(complexo));
+
+ psoma->real = a.real + b.real;
+ psoma->img = a.img + b.img;
+
+ return psoma;
+}
+
+int main() {
+ complexo x, y, z, *p;
+
+ x = le_complexo();
+ y = le_complexo();
+
+ z = soma_ex4(x, y);
+ escreve_complexo(z);
+ printf("\n");
+
+ soma_ex5(&x, y);
+ escreve_complexo(z);
+ printf("\n");
+
+ p = soma_ex6(x, y);
+ escreve_complexo(*p);
+ printf("\n");
+ free(p);
+
+ return EXIT_SUCCESS;
+}
+
+complexo le_complexo() {
+ complexo a;
+ char sign;
+
+ scanf("%f%c%fi", &a.real, &sign, &a.img);
+
+ if (sign == '-')
+ a.img *= -1;
+
+ return a;
+}
+
+void escreve_complexo(complexo a) {
+ if (a.img >= 0)
+ printf("%f+%fi", a.real, a.img);
+ else
+ printf("%f%fi", a.real, a.img);
+}