Ver Mensaje Individual
  #10 (permalink)  
Antiguo 13/04/2010, 13:26
roser24
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Cadena de caracteres aleatorios

Hola,Carlgary pos si gracias por repasar mi codigo efectivamente se me paso lo de si solo aparecia una vez,.. vaya pasada como son aleatorios casi siempre se repetian las letras cuando la longitud era grande y me costo probarlo jiji

bueno el Codigo Final es ... :

Código C:
Ver original
  1. /*/*20. Generar la longitud de la cadena aleatoriamente y la propia cadena de
  2. caracteres (tanto en mayúsculas como en minúsculas) de 50 caracteres útiles
  3. como máximo y 15 como mínimo. Buscar dentro de ella la primera y última
  4. ocurrencia de un carácter leído por teclado indepen-dientemente de si se almaceno
  5. en mayúsculas o minúsculas, indicando la
  6.  posición donde se encuentra dentro de la cadena o el mensaje correspondiente si
  7.  no se encontró.*/
  8.  
  9.  #include<stdio.h>
  10.  #include<time.h>
  11.  #include<stdlib.h>
  12.  #include<ctype.h>
  13.  #include<string.h>
  14.  
  15.  int main(){
  16.  
  17.  char cad[51],letra;
  18.  int l=0,i=0,aux,flag=0,pos=0,posf=0;
  19.  
  20.  printf("*******LONGITUD CADENA ALEATORIA*******\n");
  21.  srand(time(NULL));
  22.  l=(rand()% 34)+ 15;
  23.  printf("la longitud es %d\n",l);
  24.  printf("La cadena de caracteres aleatorios es:\n");
  25.  for(i=0;i<l;i++){
  26. aux=(rand()%56)+65; //EL 56 sale de( VALOR MAX ES 122(z)-65(A)+1) y el 65 es el minimo ya que ahi empieza el valor de A
  27. if(aux<90 || aux>97){   //me quito con este if los valores que no son letras y que estan entre el 90 y el 97(simbolos raros)..
  28. cad[i]=aux;            //si cumple la condicion lo guardo en mi cadena..
  29. printf(" %c     %d\n",cad[i],i);   //visualizo mi cadena
  30.   }
  31.   else{
  32.   i--;
  33.   }
  34.  }
  35.  printf("Introduce un caracter a buscar:\n");
  36.  scanf("%c",&letra);
  37.  
  38.  for(i=0;i<l;i++){
  39.  if(tolower(cad[i])== letra){
  40.  
  41.  if(flag==0){         //Si es la primera vez que coinciden flag valdra 0;
  42.  
  43.  
  44.   flag=1;
  45.     pos=i;
  46.     posf=i;
  47.     }
  48.     else{//las proximas veces guardara la posicion en posf
  49.     posf=i;
  50.  
  51.     }
  52.  
  53.  
  54.   }
  55.   }
  56.  if(flag==1 && posf>pos){
  57.  printf("la letra %c se encontro en la cadena \n",letra);
  58.  printf("la primera ocurrencia de la letra %c fue en la posicion %i\n",letra,pos);
  59.     printf("la ultima ocurrencia de la letra %c fue en la posicion %i",letra,posf);
  60.  
  61. }else if(pos==posf){
  62. printf("Solo se encontro una ocurrencia de %c en la cadena cuya posicion es %i\n",letra,pos);
  63. }
  64. else{
  65.  printf("La letra %c No se encontro en la cadena\n",letra);
  66.  }
  67.  
  68.  
  69.  return 0;
  70.  }