[C con Clase] Duda
Zakariae El-Abdelouarti Alouaret
shanatorio en gmail.com
Lun Feb 28 22:37:43 CET 2011
El 28/02/11 21:01, dmp dmp escribió:
> /*Hola!
> Estoy intentando hacer un programa en el que pongas un texto y cambie
> las letras por la siguiente en el alfabeto Ej: a->b b->c...
> He pensado en este código:*/
> #include <iostream>
> #include <cstdio>
> #include <cctype>
> using namespace std;
> int main()
> {
La siguiente función suele producir código no portable, así que sugiero
que no la utilices.
> system("color 0a");
> char Code[1001];
Aquí estaría bien que usaras una constante para el tamaño del array,
una definición como "const int MAX_STRING_LENGTH = 1001" estaría bien.
> int c=0;
Es mejor nombrar a los índices por i y cuando sepas el comienzo y final
de un bucle, es mejor usar el for. En este caso, sería algo así:
for(int i = 0; i < MAX_STRING_LENGTH; i++) ...
>
> while (c <=1001) {
> Code[c]=0;
> c++;
> }
>
> c=0;
>
> cout << "Introduce el codigo a encriptar" << endl << endl;
> cin >> Code;
> cout << "" << endl;
>
Creo que no tienes clara la utilización de los bucles.
La condición de parada del primer bucle( c < 1001 ) depende de la
variable c, que es modificada en el ámbito del otro bucle while (
Code[c] != '\0').
Yo creo que debería ser algo así:
while ( (c < 1001) && (Code[c] != '\0') {...
> while (c<1001) {
La siguiente condición de terminación está mal debería ser:
Code[c] != '\0'
> while (Code[c] != '0') {
No es necesario usar switch cuando solo hay dos bifurcaciones y con un
if/else sería más claro.
> switch(Code[c]) {
> case 'z':
> Code[c]='a';
Repites el c++ aquí y en la otra bifurcación, eso quiere decir que tiene
que estar fuera, en el ámbito inmediatamente superior.
> c++;
> break;
> default:
> Code[c]=Code[c]+1;
> c++;
> break;
> }
> }
> }
>
>
> cout << "El codigo encriptado es " << Code << endl;
> system("pause>nul");
> return 0;
> }
> /*Sale el mensaje correcto, pero después salen símbolos extraños. ¿A que
> es debido?*/
>
>
Haz las modificaciones que te recomiendo y si tienes más problemas
vuelve a preguntarnos.
Saludos.
Zaka.
Más información sobre la lista de distribución Cconclase