• Jueves 14 de Noviembre de 2024, 04:43

Autor Tema:  Empezando A Programar...  (Leído 1080 veces)

manguiti

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Empezando A Programar...
« en: Jueves 3 de Mayo de 2007, 18:15 »
0
Hola, estoy empezando cn c++ y tengo un problema con un programa que te pide dos cadenas de caracteres, y luego te las compara y t dice cuantas veces esta cada caracter de la primera cadena en la segunda...

no me da error al compliar pero al meter los datos y darle al enter produce un error y tengo que cerrarlo...mi idea es que partiendo de un tamaño maximo de 30 para cada cadena,tu finalices cada cadena pulsando enter...supongo que si se puede hacer...
aqui os paso el codigo....a ver si me podeis echar una mano....muchas gracias de antemano

1 saludo!!

Código: Text
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5.  
  6. #define SIZE 30
  7.  
  8. void ocurrencias(char* cad1,char* cad2){
  9.    
  10.     int acu,j,i;
  11.     acu=0;
  12.     for(i=0;cad1[i]!='\0';i++){
  13.         printf("La letra %c ",cad1[i]);
  14.         for(j=0;cad2[j]!='\0';j++){
  15.             if(cad1[i]==cad2[j])
  16.             acu+=1;    
  17.         }
  18.         printf("se repite %d veces\n",acu);
  19.         acu=0;
  20.     }            
  21. }
  22.  
  23. int main(){
  24.     int i;
  25.     char cad1[SIZE];
  26.     char cad2[SIZE];
  27.    
  28.     printf("Introduzca dos palabras\n");
  29.     for(i=0;i<SIZE;i++){
  30.         scanf("%s",cad1[i]);
  31.         if(gets("\13"))
  32.         break;
  33.         }
  34.     for(i=0;i<SIZE;i++){
  35.         scanf("%s",cad2[i]);
  36.         if(gets("\13"))
  37.         break;
  38.         }
  39.    
  40.     ocurrencias(cad1,cad2);
  41.     printf("\nEn estas dos palabras: [ %s ] y [ %s ]; se repite cada letra:\n\n",&cad1,&cad2);
  42.    
  43.  
  44.  
  45.  
  46.     system("PAUSE");
  47.     return 0;
  48. }
  49.  
  50.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Empezando A Programar...
« Respuesta #1 en: Jueves 3 de Mayo de 2007, 18:23 »
0
scanf con %s ya te devuelve una CADENA y no un caracter, por lo tanto:

Código: Text
  1.  
  2. scanf("%s", cad1);
  3. scanf("%s", cad2);
  4. ocurrencias(cad1, cad2);
  5.  
  6.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

manguiti

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Empezando A Programar...
« Respuesta #2 en: Jueves 3 de Mayo de 2007, 18:30 »
0
Lo he cambiado tal como dices pero sigue fallando al pulsar enter en la primera cadena....
Código: Text
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5.  
  6. #define SIZE 30
  7.  
  8. void ocurrencias(char* cad1,char* cad2){
  9.    
  10.     int acu,j,i;
  11.     acu=0;
  12.     for(i=0;cad1[i]!='\0';i++){
  13.         printf("La letra %c ",cad1[i]);
  14.         for(j=0;cad2[j]!='\0';j++){
  15.             if(cad1[i]==cad2[j])
  16.             acu+=1;    
  17.         }
  18.         printf("se repite %d veces\n",acu);
  19.         acu=0;
  20.     }            
  21. }
  22.  
  23. int main(){
  24.     int i;
  25.     char cad1[SIZE];
  26.     char cad2[SIZE];
  27.    
  28.     printf("Introduzca dos palabras\n");
  29.     for(i=0;i<SIZE;i++){
  30.         scanf("%s",cad1);
  31.         if(gets("\13"))
  32.         break;
  33.         }
  34.     for(i=0;i<SIZE;i++){
  35.         scanf("%s",cad2);
  36.         if(gets("\13"))
  37.         break;
  38.         }
  39.    
  40.     ocurrencias(cad1,cad2);
  41.     printf("\nEn estas dos palabras: [ %s ] y [ %s ]; se repite cada letra:\n\n",&cad1,&cad2);
  42.    
  43.  
  44.  
  45.  
  46.     system("PAUSE");
  47.     return 0;
  48.    
  49. }
  50.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Empezando A Programar...
« Respuesta #3 en: Jueves 3 de Mayo de 2007, 18:41 »
0
Cita de: "manguiti"
Lo he cambiado tal como dices pero sigue fallando al pulsar enter en la primera cadena....
No es cierto. Yo no te dije que siguieras haciendo el bucle ya que eso no tiene sentido, esta fue mi respuesta:

scanf con %s ya te devuelve una CADENA y no un caracter.

Esos dos bucles se pueden borrar, no sirven y no tienen sentido.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

manguiti

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Empezando A Programar...
« Respuesta #4 en: Jueves 3 de Mayo de 2007, 19:03 »
0
es cierto....no lo habia entendido correctamente...justo al reenviar el post me di cuenta....al final siempre son fallos tontos...

gracias!!

1 saludo!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Empezando A Programar...
« Respuesta #5 en: Jueves 3 de Mayo de 2007, 19:05 »
0
Cita de: "manguiti"
es cierto....no lo habia entendido correctamente...justo al reenviar el post me di cuenta....al final siempre son fallos tontos...

gracias!!

1 saludo!
De nadas  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.