/*
* 1) Preparar um procedimento TRIM para aceitar como parâmetro uma cadeia de caracteres arbitrária
* e retornar uma cadeia contendo somente os caracteres alfabéticos da cadeia original.
* Todos os caracteres brancos, sinais de pontuação, números e caracteres especiais devem ser removidos.
* 2) Projetar um procedimento REVERSO para aceitar como parâmetro uma cadeia de caracteres arbitrária
* e retornar uma cadeia com o mesmo comprimento,
* na qual o primeiro caractere de entrada é o último de saída e assim por diante.
*/
/*
* File: main.cpp
* Author: joao
*
*
* Created on 28 de Julho de 2017, 16:26
*/
#include <cstdlib>
#include<string.h>
#include<stdio.h>
#include <ctype.h>
using namespace std;
/*void trimStr(char[],char[])
* @param str1 Cadeia de entrada
* @param str2 Cadeia de saida
* Recebe uma cadeia de caracteres e retorna por parâmetro uma nova cadeia sem
* os caracteres não alfabéticos.
*/
void trimStr(char str1[], char str2[]) {
int len = strlen(str1), i = 0, k = 0;
if (len > 0) {
while (i < len) {
if (isalpha(str1[i])) {
str2[k++] = str1[i];
}
i++;
}
str2[k] = '\0';
}
}
/* void inverterStr(char str1[])
* @param str1 Cadeia de entrada
* Recebe uma cadeia de caracteres como parâmetro e reverte seu contúdo
*/
void inverterStr(char str1[]) {
char aux;
int len = strlen(str1), k, i = 0, meio;
if (len > 0) {
meio = len / 2;
k = len - 1;
while (i < meio) {
aux = str1[k];
str1[k] = str1[i];
str1[i] = aux;
i++;
k--;
}
}
}
int main(int argc, char** argv) {
char strTeste[38], strTeste1[38];
strcpy(strTeste, "* >> Inverteu esta buceta 123! << * ");
printf("\n[%s] \n", strTeste);
trimStr(strTeste,strTeste1);
printf("\n[%s] \n",strTeste1);
inverterStr(strTeste);
printf("\n[%s] \n", strTeste);
}
Espero ter ajudado. O primeiro Utilizei a função da biblioteca ctype do proprio C que identifica se um caracter é alpha ou não, acho que não precisa einventar a roda. No outro executo um loop while até o tamanho da metade do comprimento da cadeia de caracteres, invertendo o conteudo de i com k , incrementando i (posicao inicio da palavra)e decrementando k(pos fim da palavra).
Para escrever sua resposta aqui, entre ou crie uma conta
Programação de Computadores II
•UNINASSAU
Compartilhar