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

Porfisss ayuda con problema de cadenas

Estas en el tema de Porfisss ayuda con problema de cadenas en el foro de C/C++ en Foros del Web. Hola, vereis estoy intentando hacer el siguiente ejercicio: Introducir una cadena de 25 caracteres útiles como máximo y buscar dentro de ella la primera ocurrencia ...
  #1 (permalink)  
Antiguo 07/04/2010, 13:47
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 2 meses
Puntos: 2
Porfisss ayuda con problema de cadenas

Hola,
vereis estoy intentando hacer el siguiente ejercicio:

Introducir una cadena de 25 caracteres útiles como máximo y buscar dentro de ella la primera ocurrencia
de un carácter leído también por teclado, indicando la posición donde se encuentra
dentro de la cadena o el mensaje correspondiente si no se encontró.

lo ke tengo hasta ahora es el siguiente codigo ,me compila pero no me hace lo ke kiero y una vez introducida la letra a buscar peta..


Código C:
Ver original
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. int main(){
  6.  
  7. char cad[26],letra[1];
  8. int i=0;
  9.  
  10. printf("introduce una cadena de 25 caracteres:\n");
  11. gets(cad);
  12. printf("introduce un caracter a buscar:\n");
  13. scanf("%c",letra);
  14.  
  15. for(i=0;cad[i]!='\0';i++){
  16. if(cad[i]==letra){
  17. printf("la letra %c se encuentra en la posicion de la cadena %s :\n",letra,i);
  18. }
  19.   else printf("no se encuentra\n");
  20. }
  21.  
  22. return 0;
  23. }

Psdta: no puedo usar punteros porque aun no llego a ese tema solo vectores numericos y de caracteres de momento
  #2 (permalink)  
Antiguo 07/04/2010, 19:42
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Porfisss ayuda con problema de cadenas

Hola

Porque almacenas la variable letra en un array, debería ser solo una variable de tipo char.
Código C:
Ver original
  1. char letra;
Lo otro que observo es que en el scanf donde capturas el valor de la variable letra no colocas el simbolo ampersand que es necesario para capturar el valor.
Código C:
Ver original
  1. scanf("%c",letra);

Asi me quedo despues de unos cambios.

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<conio.h>
  5.    int main(){
  6.    char cad[25];
  7.    char letra;
  8.    int flag =0;
  9.    int i=0, strpos;
  10.    clrscr();
  11.      printf("introduce una cadena de 25 caracteres:\n");
  12.      gets(cad);
  13.      printf("introduce un caracter a buscar:\n");
  14.      scanf("%c",&letra);
  15. //encontrar la primera ocurrencia de un caracter dentro de la cadena.
  16.  
  17.       for(i=0;(i<25) && (cad[i]!='\0') ;i++){
  18.     if(cad[i]==letra){
  19.        flag = 1;
  20.        strpos = i;
  21.        break;
  22.     }
  23.       }
  24.  
  25.       if (flag == 1){
  26.       printf("la primera ocurrencia de la letra %c se encuentra en la posicion %d de la cadena %s :\n",letra,strpos, cad);
  27.       getch();
  28.       }else{
  29.       printf("No se encontraron ocurrencias de %c en %s:\n", letra,cad);
  30.       getch();
  31.       }
  32.  
  33.      return 0;
  34.       }

Prueba y comenta
Saludos

Última edición por Fenris; 07/04/2010 a las 20:18
  #3 (permalink)  
Antiguo 10/04/2010, 04:02
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Porfisss ayuda con problema de cadenas

Hola fenris muchas gracias por el codigo,la verdad es ke lo del amspersand o lo de poner la letra como cadena,fue un errorase,pero en si el codigo que me ayudo muxisimo es el de ir guardando la posicion y lo del flag,en si no se porque llamaste flag a esa variable nunca la habia visto en codigos,yo lo renombre como un aux y me ejecuto correctamente.
Saludos y gracias por hecharme una mano con el problema

Etiquetas: cadenas
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 21:53.