commit 9bed6e73c3bc2805b4c31f6905fa45bb16d10657
parent 15c9a8f3d30b2ad056f3edd926c69061c6207654
Author: Martin J. Klöckner <martin.cachari@gmail.com>
Date: Tue, 24 Nov 2020 21:43:20 -0300
Added ex18.c
Diffstat:
1 file changed, 56 insertions(+), 0 deletions(-)
diff --git a/95.11/guia03/ex18.c b/95.11/guia03/ex18.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+#define MAX_LEN 100
+
+
+int main ( void ) {
+
+ char str[MAX_LEN];
+ int aux, i, j;
+
+ if(fgets(str, MAX_LEN, stdin) == NULL)
+ return 1;
+
+// Pasa todo a minuscula;
+ for(i = 0; str[i] != '\0'; i++)
+ if(isupper(str[i]))
+ str[i] = tolower(str[i]);
+
+// En caso de ser una oracion elimina los espacios en blanco;
+ for(i = 0; str[i] != '\0'; i++) {
+ if(str[i] == ' ') {
+ aux = i;
+ while(str[i] != '\0') {
+ str[i] = str[i + 1];
+ i++;
+ }
+ i = aux;
+ }
+ }
+
+// Asigna a i el valor de el ultimo caracter;
+ for(i = 0; str[i] != '\n'; i++)
+ ;
+
+// Le restamos uno a i, ya que en la parte anterior
+// i es el indice de el caracter '\n';
+ i = i - 1;
+
+// Esta parte compara uno a uno los caracteres;
+// primero con ultimo, segundo con anteultimo y
+// asi sucesivamente;
+ for(j = 0; (str[j] == str[i]) && (str[j] != '\0'); j++, i--)
+ ;
+
+// Si la cadena es efectivamente capicua entonces
+// en la parte anterior j tiene que haber recorrido toda
+// la cadena, ya que si los caracteres no eran iguales
+// j no se incrementa, si la cadena es capicua entonces,
+// j termino valiendo el largo de la cadena;
+ if(j == (strlen(str) - 1))
+ printf("La cadena es capicua.\n");
+
+ return 0;
+}