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
-
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
-
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.
-
#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
-
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.
#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:
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 - , se ha de cambiar por el que está en [2]
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.