Foros del Web » Programación para mayores de 30 ;) » C/C++ »

no compara las cadenas, ayuda!!

Estas en el tema de no compara las cadenas, ayuda!! en el foro de C/C++ en Foros del Web. hola que tal soy nueva dentro de este foro, espero me puedan ayudar, mi problema es que al compar las cadenas de clave y llave ...
  #1 (permalink)  
Antiguo 29/11/2008, 15:15
Avatar de lachica588  
Fecha de Ingreso: noviembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
Información no compara las cadenas, ayuda!!

hola que tal soy nueva dentro de este foro, espero me puedan ayudar, mi problema es que al compar las cadenas de clave y llave no entra en el if aunque las escriba bien, ojala me apoyen a resolverlo!! gracias

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


int main()
{
char texto[80]; /*Vector para guardar la frase a encriptar*/
char temp[80]; /*Vector donde se guarda la frase una vez revisada*/
char clave[80]; /*Vector donde se guarda la llave*/
char llave[80];
char codificado=0; /*Caracter codificado*/
int tlen; /*largo del texto*/
int i; /*contador 1*/
int j=0; /*contador 2*/

char* point1;
char* point2;
char a,b;
int iguales,fin;


printf("\n\nGenerando semilla...");
srand(time(NULL)); /*Generador de Semilla de Números Aleatorios*/
printf("...[ OK ]");
printf("\nEscriba una frase a codificar:\n");
gets(texto);

printf("\n\nRevisando caracteres validos...\n");

tlen = strlen(texto);
/*Revisa cada caracter para solo codificar caracteres Alfabeticos*/
//for(i=0; i<tlen; i++){
//if(texto[i] == '\0') /*Fin de la cadena*/
//break;
//if(texto[i] > 'A' && texto[i] < 'Z') /*mayusculas*/
//temp[j++] = texto[i];
//else if(texto[i] > 'a' && texto[i] < 'z') /*minusculas*/
//temp[j++] = (texto[i] -'a') + 'A';
/*se que puedo usar una macro, pero asi me aseguro que haga lo que realmente quiero*/
//}
//printf("\n\nTexto en claro: %s", temp);
//tlen = strlen(temp);/*Imprime en pantalla la cadena con que se va a trabajar*/

printf("\nGenerando llave aleatoria: \n");
/*Genera la llave aleatoria. El modulo nos permite tener solo numeros entre 0 y 26*/
for(i=0; i<tlen; i++){
clave[i] = (rand() % 26) + 'A';
putchar(clave[i]);
}
/*pone un fin-de-cadena*/
clave[i] = '\0';

printf("\n\nEncriptando mensaje:\n\n");
/*Se encripta por el algoritmo polialfabetico*/
for(i = 0; i <tlen; i++){

codificado = (texto[i] - 'A') + (clave[i] - 'A');
codificado %= 26;
codificado += 'A';
printf("%c", codificado);
}

printf("\n\nclave: %s",clave);

printf("\n\nteclee la llave: ");
gets(llave);
printf("\n\nllave: %s",llave);

point1=clave;
point2=llave;
iguales=1;
fin=0;
do{

a=*point1;

b=*point2;


if (a==b)
{
iguales=1;
}
else iguales=0;
point1++;
point2++;
a=*point1;
b=*point2;
if (a=='\0')
fin=1;

if (b=='\0')
fin=1;
}while ((iguales==1)&&(fin==0));


if(iguales==1){
printf("las cadenas son iguales\n");

for(i=0;i<tlen; i++){
codificado -='A';
codificado = (texto[i] + 'A') - (clave[i] + 'A');
printf("%c",codificado);
}//for
}//if
//else{
//exit(0);}


system("PAUSE");
return 0;
}
  #2 (permalink)  
Antiguo 01/12/2008, 21:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 49
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: no compara las cadenas, ayuda!!

Buenasss

Aparentemente el do while lo usas para comparar dos cadenas de caracteres sin ninguna caracteristica en particular, porque no usas la funcion strcmp de string.h??
Además te aconsejo hacer un poco de refactoring y modularizacion de ese código, hay cosas que se pueden mejorar

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:18.