Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - alejandro70

#1
Gracias gracias   ;D lo probaré por la noche en otros programas que tengo por ahi guardados ;).




Ya pobre el codigo y funcionó excelente, pero no reconoce la ñ y si pongo espacio y despues sigo escribiendo no me toma en cuenta eso, ¿alguna idea de como solucionarlo?
Y lo segundo, monte el código que me proporciono engel lex en un programa que no había terminado, un cifrado basado en rand y tomar posiciones aleatorias del alfabeto, mas o menos funciona pero no al 100 alguien me puede decir que pasa?

#include <iostream>
#include<cstdlib>
#include <ctype.h>
#include <locale.h>
#include<string.h>

using namespace std;

void desorden(int []);
void desordenarLet(int [], char []);


int main(){
setlocale(LC_CTYPE, "Spanish");

int random[28];
int i, numeroS, longitudmensaje;
char alfabetoDes[28];
    string mensaje;
    locale loc;

cout<<"Teclee su llave numerica: ";
cin>>numeroS;
srand(numeroS);
desorden(random);
desordenarLet(random, alfabetoDes);



cout<<"\nIntroduzca el mensaje a cifrar\n";
cin>>mensaje;
cin.get();

longitudmensaje=(mensaje.size());
int ordenLet[longitudmensaje];

for(i=0;i<mensaje.size();i++){

mensaje[i] = tolower(mensaje[i], loc);//a minusculas

    if(mensaje[i]>='a' && mensaje[i]<='z'){

    if(mensaje[i]>'n'){//para meter la ñ que no está en ascii standard
    mensaje[i]++;
    }

mensaje[i]-='a';
cout<<(int)mensaje[i];//para ubicarlo en el orden natural
            //cout<<(int)mensaje[i];//imprimimos casteando como int
//cout<<endl;

    }

    if(mensaje[i]==-61){//aquí está la ñ de ascii extendido
    i++;//la ñ ocupa 2 char, así que avanzamos 1 de una vez
    if(mensaje[i]==-111 || mensaje[i]==-79){//aseguramos que es ñ
mensaje[i]='n'-'a';//va siguiente a la n y arreglamos su orden natural
//cout<<(int)mensaje[i];//imprimimos casteando como int
//cout<<endl;
    }
    }


    } 

char mensajeCif[mensaje.size()];
   
    for(i=0;i<mensaje.size();i++){
        mensajeCif[i]=alfabetoDes[mensaje[i]];
    }
   
cout<<"\n";
for(i=0;i<=mensaje.size();i++){
cout<<mensajeCif[i];
}
   

cin.get();
return 0;
}

void desorden(int vector[28]){

int i, j, problema, n;

for(i=0;i<=27;i++){
n=rand() % 28;
problema=0;

for(j=0;j<=i;j++){

if(n==vector[j]){
problema=1;
break;
}
}

if(problema==1){
i--;
}else{
vector[i]=n;
}
}
}

void desordenarLet(int r[28], char a[28]){
a[28];
a[r[0]]='a';
a[r[1]]='b';
a[r[2]]='c';
a[r[3]]='d';
a[r[4]]='e';
a[r[5]]='f';
a[r[6]]='g';
a[r[7]]='h';
a[r[8]]='i';
a[r[9]]='j';
a[r[10]]='k';
a[r[11]]='l';
a[r[12]]='m';
a[r[13]]='n';
a[r[14]]='ñ';
a[r[15]]='o';
a[r[16]]='p';
a[r[17]]='q';
a[r[18]]='r';
a[r[19]]='s';
a[r[20]]='t';
a[r[21]]='u';
a[r[22]]='v';
a[r[23]]='w';
a[r[24]]='x';
a[r[25]]='y';
a[r[26]]='z';
a[r[27]]=' ';
}


Posdata: El valor que tiene que regresarme en la a es 0 ya que ese es su lugar en el array. Otra cosa que esta mal es que no me imprime la ñ (que ya me lo esperaba), ni la "t" y tampoco la "y".
#2
Si claro perdon   :¬¬
Aun asi ya lo resolví. En cuanto vuelva a prender la pc subo el código.




Bueno el codigo es el siguiente:

  void random(int vector[28]){

int i, j, repeticion, n;

for(i=0;i<=27;i++){
n=rand() % 28;
repeticion=0;

for(j=0;j<=i;j++){

if(n==vector[j]){
repeticion=1;
break;
}
}

if(repeticion==1){
i--;
}else{
vector[i]=n;
}
}
}


Bueno el vector que se le pasa en forma de parametro es solo para almacenar los numeros al azar.
#3
Ohh perdon, no lo sabia, ¿Puedo dejar el tema? O tengo que crear uno nuevo
#4
Que tal chic@s del foro, pues supongo que asunto lo explica todo, quiero hacer que la funcion rand me de valores del 0 a x número al azar pero sin repetir ninguno, además quiero usar una semilla diferente usando srand(int i), pero no srand(time(0)).
Gracias por la ayuda   ;-)
#5
Que tal chic@s del foro, pues tengo el codigo que se muestra mas abajo, lo que quiero es hacer un programa que me diga las posiciones del abecedario en que se encuentra  las letras de un texto introducido por ep usuario; aunque aun le faltan detalles al probarlo si abre, pero no me da lo que deberia, me da valores grandes y raros.
¿Alguien que me diga que esta mal?

Código (cpp) [Seleccionar]
#include <iostream>
#include <ctype.h>
#include <locale.h>

using namespace std;

int longitudmensaje, longitudOrden, i, j;
char alfabetoOr[28], mensaje[500];

int main(){

char alfabetoOr[28]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z',' '};
cout<<"Introduzca las letras de las que desea conocer su posiposición\n";
cin>>mensaje[500];

longitudmensaje=(sizeof(&mensaje));
int ordenLet[longitudmensaje];

for(i=0;i<(longitudmensaje);i++)
{
    mensaje[i]=toupper(mensaje[i]);                              
   }
 
    for (i=0;i<(longitudmensaje);i++)
    {
        for (j=0;j<28;j++)
        {
                                   if (mensaje[i]==alfabetoOr[j])
                                      {
if (mensaje[i]!='\0')
{
ordenLet[i]=j;
}
                                      }                                  
        }  
    }  

for(i=0;i<(longitudmensaje);i++){
cout<<ordenLet[i]<<"\n";
}

cin.get();
return 0;
}



Posdata:
Esta parte del codigo (if (mensaje!='\0') lo vi en youtube, decia que era necesario al comparar los elementos de un array

Mod: los códigos deben ir en etiquetas GeSHi