CC=gcc
CFLAGS=-Wall -ansi -pedantic
-EXECS=ex1 ex2 ex3 ex4 ex5 ex6
+EXECS=ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 exA exB
+
EX1OBJ=ex1.o aux.o
EX2OBJ=ex2.o aux.o
EX3OBJ=ex3.o aux.o
EX5OBJ=ex5.o aux.o
EX6OBJ=ex6.o aux.o
+EX7OBJ=ex7.o sux.o
+EX8OBJ=ex8.o sux.o
+EX9OBJ=ex9.o sux.o
+EXAOBJ=exA.o sux.o
+EXBOBJ=exB.o sux.o
+
all: ${EXECS}
ex1: ${EX1OBJ} aux.h
ex6: ${EX6OBJ} aux.h
gcc ${CFLAGS} -o $@ ${EX6OBJ}
+ex7: ${EX7OBJ} sux.h
+ gcc ${CFLAGS} -o $@ ${EX7OBJ}
+
+ex8: ${EX8OBJ} sux.h
+ gcc ${CFLAGS} -o $@ ${EX8OBJ}
+
+ex9: ${EX9OBJ} sux.h
+ gcc ${CFLAGS} -o $@ ${EX9OBJ}
+
+exA: ${EXAOBJ} sux.h
+ gcc ${CFLAGS} -o $@ ${EXAOBJ}
+
+exB: ${EXBOBJ} sux.h
+ gcc ${CFLAGS} -o $@ ${EXBOBJ}
+
clean:
rm -f *.o ${EXECS}
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include "sux.h"
+
+int main() {
+ char s[STRMAXLEN];
+ int i = 0, j;
+
+ scanf("%s", s);
+ j = strlen(s) - 1;
+
+ for (; i < j && s[i] == s[j]; i++, j--);
+
+ if (i < j)
+ printf("Não palíndromo.\n");
+ else
+ printf("Palíndromo!\n");
+
+ return 0;
+}
+
--- /dev/null
+#include <stdio.h>
+#include "sux.h"
+
+int main() {
+ char s[STRMAXLEN];
+
+ leLinha(s);
+ printf("%s\n", s);
+
+ return 0;
+}
--- /dev/null
+#include <stdio.h>
+#include "sux.h"
+
+void maiusculas(char s[]);
+
+int main() {
+ char s[STRMAXLEN];
+
+ leLinha(s);
+ maiusculas(s);
+ printf("%s\n", s);
+
+ return 0;
+}
+
+void maiusculas(char s[]) {
+ int i = 0;
+
+ for (; s[i] != '\0'; i++)
+ if (s[i] >= 'a' && s[i] <= 'z')
+ s[i] -= 'a' - 'A';
+}
+
--- /dev/null
+#include <stdio.h>
+#include "sux.h"
+
+void apagaCaracter(char s[], char c);
+
+int main() {
+ char s[STRMAXLEN], c;
+
+ c = getchar();
+ getchar(); /* Le o '\n' */
+ leLinha(s);
+ apagaCaracter(s, c);
+ printf("%s\n", s);
+
+ return 0;
+}
+
+void apagaCaracter(char s[], char c)
+{
+ int i, j;
+
+ for (i = j = 0; s[j] != '\0'; j++)
+ if (s[j] != c)
+ s[i++] = s[j];
+
+ s[i] = s[j];
+}
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include "sux.h"
+
+int main() {
+ char s[STRMAXLEN];
+ int dc[10], k;
+
+ for (k = 0; k < 10; k++)
+ dc[k] = 0;
+
+ k = leLinha(s);
+
+ while (k--)
+ if (s[k] >= '0' && s[k] <= '9')
+ dc[s[k] - '0'] ++;
+
+ for (k = 0; k < 10; k++)
+ printf("%d: %d\n", k, dc[k]);
+
+ return 0;
+}
+
--- /dev/null
+#include <stdio.h>
+
+int leLinha(char s[]) {
+ int c, i = 0;
+
+ while ((c = getchar()) != '\n' && c != EOF)
+ s[i++] = c;
+ s[i] = '\0';
+
+ return i;
+}
--- /dev/null
+#ifndef SUX_H
+#define SUX_H
+
+#define STRMAXLEN 80
+
+int leLinha(char s[]);
+
+#endif /* SUX_H */