int clasifica(char test){ if (es_letra(test)) if (es_vocal(test)) return vocal; else return consonante; if (es_numero(test)) return numero; return err; }
/** * \brief detiene el programa para que el usuario ingrese un texto en 'cadena' * * \param cadena puntero al primer elemento del vector de 'char' * \param limite_real cantidad de posiciones del vector cadena * \param screen pantalla destino, para imprimir los caracteres * * \return 1 si no obtiene una cadena (por cancelar o cerrar la ventana) */ int leer_teclado (char *cadena, int limite_real, SDL_Surface *screen) { SDL_Event event; int lim = 0; // cantidad de caracteres útiles en la cadena SDLKey tecla; // espera por un evento while (SDL_WaitEvent(&event)) { // si cierran la ventana if (event.type == SDL_QUIT) { printf("Cancelaron el ingreso de datos\n"); return 1; } // si pulsan una tecla if (event.type == SDL_KEYDOWN) { tecla = event.key.keysym.sym; switch (tecla) { case SDLK_ESCAPE: printf("Pulsó ESC, cancelando\n"); return 1; break; case SDLK_RETURN: cadena[lim] = '\0'; // fin de cadena printf("Pulsó ENTER, terminado\n"); return 0; break; case SDLK_BACKSPACE: if (lim > 0) { printf("Quitando: '%c'\n", cadena[lim-1]); borrar(lim - 1, screen); lim --; } else { printf("Cadena vacia\n"); } break; case SDLK_SPACE: if (lim < limite_real - 1) { agregar(cadena, lim, ' ', screen); lim ++; } else { printf("Llegó al limite\n"); } break; default: if (lim < limite_real - 1) { if (es_letra(tecla)) { agregar(cadena, lim, tecla - SDLK_a + 'a', screen); lim ++; } else { printf("Solo se admiten letras ('a' - 'z')\n"); } } else { printf("Llegó al limite\n"); } break; } } } return 1; }
void norma(char * cad) { int i=0,contpal=0,haycoma=0,contesp=0; char *act=cad; char *poncoma; if(es_letra(*act)&&*act>'a'&&*act<'z') *act=toupper(*act); while(!es_letra(*act)) { while(*(act+i)) { *(act+i)=*(act+1+i); i++; } i=0; } while(*act) { while(((!es_letra(*act)&&*act!=' '&&*act!=','))||(!es_letra(*(act-1))&&*act==',')) { while(*(act+i)) { *(act+i)=*(act+i+1); i++; } i=0; act--; } if(*act==' ') { while(*(act+i)==' ') { contesp++; i++; } i=0; contesp--; if(contesp>0) { while(*(act+i+contesp-1)) { *(act+i)=*(act+i+contesp); i++; } *(act+i)='\0'; i=0; } contesp=0; } if(*(act)==',') haycoma++; if(haycoma==1&&*act==','&&!es_letra(*(act-1))) { while(!es_letra(*(act-i))) { *(act-i-1)=*(act-i); i++; } act=act-i; i=0; } if(es_letra(*act-2)&&*(act-1)==','&&es_letra(*act)) { while(*(act+i)) { *(act+strlen(act)-i)=*(act+strlen(act)-i-1); i++; } *act=' '; i=0; } if(es_letra(*act)&&(!es_letra(*(act-1))||act==cad)) { if(*act>='a'&&*act<='z') *act=toupper(*act); act++; while(es_letra(*act)) { if(*act>='A'&&*act<='Z') *act=tolower(*act); if(*(act+1)==',') haycoma=1; act++; } contpal++; if(contpal==1) poncoma=act; act--; } act++; } act--; if(!haycoma) { while((poncoma-1)!=act) { *(act+1)=*act; act--; } *poncoma=','; } }