¡Saludos!
Estoy tratando de hacer el siguiente problema: dado un número natural n y una secuencia de n palabras, indicar cual es la palabra más frecuente.
Quiero hacerlo guardando las n palabras en una tira de caracteres, pero a la hora de utilizarla, no sé cómo hacerlo, ya que cuando hago por ejemplo palabras[1], llama a toda la palabra, no carácter por carácter (de ahí el problema para compararlo con otra).
No quiero hacer el problema a través de funciones programadas, sino crearla yo mismo.
Dejo el código por si sirve de algo (ahí es donde me que quedado parado):
#include <stdio.h>
int main(void){
int n, i, contador[11]={0};
char palabras[20][11];
do{
printf("introducir n (menor que 12): ");
scanf("%d", &n);
}while(n<0 || n>11);
printf("introducir la secuencia de n palabras: ");
for(i=0; i<n; i++) scanf("%[^\n]s", palabras[i]);
¡Gracias por vuestro tiempo!
Citarya que cuando hago por ejemplo palabras[1], llama a toda la palabra
como bien decis vos llama a toda la palabra, seria un puntero a la cadena. Ahora si agregas un subindice mas estarias accediendo a
un caracter de la cadena
Generalizando cada palabras[ i ][ j ] seria un caracter de la cadena palabras[ i ]
SAludos
¡Muchas gracias durasno!
Tras batallar un rato al final salió.
Aquí dejo el código por si alguien quiere aportar algo o simplemente aprender:
#include <stdio.h>
int main(void){
int n, i, j, k, cont[11]={0}, contador=0, posicio=0;
char par[20][11];
do{
printf("introduiu n: ");
scanf("%d", &n);
}while(n<0 || n>11);
printf("introduiu les %d paraules: ", n);
for(i=0; i<n; i++) scanf(" %[^\n]s", par[i]);
for(i=0; i<n; i++){
for(j=i+1; j<=n; j++){
for(k=0; par[i][k]!='\0' && contador==0; k++) if(par[i][k]!=par[j][k]) contador++;
if(contador==0 && par[j][k]=='\0') cont[i]++;
contador=0;
}
}
for(i=0; i<n; i++){
if(cont[i]>contador){
contador = cont[i];
posicio = i;
}
}
if(contador!=0) printf("\nLa paraula que mes es repeteix es: %s\n", par[posicio]);
else printf("no es repeteix cap paraula\n");
return 0;
}