[C] [?] Problema con vector de caracteres

Iniciado por alt_369, 13 Enero 2013, 20:17 PM

0 Miembros y 1 Visitante están viendo este tema.

alt_369

¡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!

durasno

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
Ahorrate una pregunta, lee el man

alt_369

¡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;
}