Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: lel en 23 de Marzo 2021, 03:52

Título: Programa que ingrese desde teclado un texto y reemplace caracteres C lenguajeC
Publicado por: lel en 23 de Marzo 2021, 03:52
Tengo problemas para realizar este programa, ¿me pueden ayudar?

Realice un programa que ingrese desde teclado un texto formado por varias cadenas de caracteres que a continuacion codifique este texto replazando cada caracter por el caracter situado dos numeros odinales a su derecha y por ultimo imprima los dos textos. Realizarlo en C
Título: Re: Ayuda con caracteres
Publicado por: Kabuto en 23 de Marzo 2021, 14:51
Prueba a realizar primero una versión simplificada.. no se..., leer la cadena y cada dos caracteres cambiarlo por un asterisco o algo así.

Lo consigas o no, publica aquí tu código y luego intentamos cumplir lo que pide el enunciado.
Título: Ayuda con caracteres (programa)
Publicado por: lel en 23 de Marzo 2021, 19:07

Código: [Seleccionar]
#include <iostream>
#include "funciones.h"
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
char cadena[80],c;
int posicion;

printf("Ingrese una cadena de caracteres: ");
gets(cadena);
printf("Ingrese caracter a buscar: ");
scanf("%c",&c);
posicion = buscarCaracter(cadena,c);
if(posicion){
printf("\n\nCaracter %c encontrado en la posicion %d",c,posicion);
printf("\n\nCaracter %c encontrado repetido %d veces.",c,contarRepeticiones(cadena,c));
}
else
printf("\n\nCaracter %c NO encontrado");
return 0;
}

Es la base para ingresar la cadena de caracteres
Título: Re: Ayuda con caracteres
Publicado por: Kabuto en 23 de Marzo 2021, 21:40
Esa no es la base para pedir una cadena, es otro programa que hace otra cosa.
Por otra parte, no soy experto en C (yo soy más de Java), pero tengo entendido que usar gets para leer cadenas no es lo ideal.
De hecho muchos compiladores te lo indican como "inseguro", debido a que si el usuario teclea más caracteres que los que caben en el array de char, el programa produce excepción y termina abruptamente.

Es mejor usar fgets que se puede indicarle el límite de caracteres y permite hacer una entrada de datos segura.

Mira, este sería un ejemplo haciendo el ejercicio simplificado que propuse antes, leer una cadena y luego cada dos caracteres cambiarlo por un asterisco.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
system("cls");
char cadena[80];

printf("Ingrese una cadena de caracteres: ");
fgets(cadena, 80, stdin);

printf("\nCadena original:\n");
printf(cadena);

for (int i = 0; i < 80; i+=2)
cadena[i] = '*';

printf("\nCadena modificada:\n");
printf(cadena);

printf("\n");
system("pause");
return 0;
}

Si lo ejecutamos, veremos que funciona:
Citar
Ingrese una cadena de caracteres: esto es una cadena

Cadena original:
esto es una cadena

Cadena modificada:
*s*o*e* *n* *a*e*a*
Presione una tecla para continuar . . .

Ahí en ese código podemos ver que en el bucle podemos alterar la cadena, recorriendo las posiciones del array y cambiando los caracteres según deseamos.

Pues bien, trata de pensar cómo cambiar el código de ese bucle para cambiar CADA caracter, por el que se encuentra dos posiciones a su derecha.

Es decir, el caracter en posición
El que está en posición [1], por el de posición [3]
El que está en [2] por el que está en [4].

Y así sucesivamente...

Piénsalo, intenta algo, aunque no funcione o sea un desastre.., pero inténtalo.
Si te dan una solución hecha, no adquieres ningún conocimiento.
Pero si estrujas el cerebro y desarrollas alguna idea, aunque no funcione o sea una locura, créeme que sí sacarás algo productivo de todo eso.