Stringhe

di il
10 risposte

Stringhe

Ciao ragazzi ho creato questo programma dove chiedo di stampare la stringa che ha piu caratteri ! solo che la strcmp compare solo le prime due stringhe e le altre no.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 1000

typedef struct{
    char s[30];

}stringa;

typedef struct{
    stringa elemento[max];
    int num_stringhe;

}lista;

int main(){
    lista list;
    int i;
    printf("quante stringhe vuoi inserire?");
    scanf("%d",&list.num_stringhe);
    getchar();
    for(i=0;i<list.num_stringhe;i++){
        printf("inserisci una stringa: ");
        fgets(list.elemento[i].s,30,stdin);
        if(strcmp(list.elemento[0].s,list.elemento[i].s)>0){
            list.elemento[0]=list.elemento[i];
            
        }
        
        
    }
     printf("la stringa che ha piu caratteri e': %s ",list.elemento[0].s);
    
    
    
    
}
come potrei fare ?

10 Risposte

  • Re: Stringhe

    E che c'entra la strcmp ?

    Se devi trovare quella con più caratteri, li devi contare con la strlen ...
  • Re: Stringhe

    Nel senso che voglio stampare la stringa di lunghezza massima
  • Re: Stringhe

    E l'ho capito ... ma la lunghezza massima la controlli usando la strlen !
  • Re: Stringhe

    Quindi prima li conto con la strlen e poi gli faccio fare il confronto ! Ora faccio dei tentativi!Ok graziee
  • Re: Stringhe

    Devi confrontare i valori ottenuti dalla strlen

    NON devi usare la strcmp che NON SERVE
  • Re: Stringhe

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define max 1000
    
    typedef struct{
        char s[30];
        
    
    }stringa;
    
    typedef struct{
        stringa elemento[max];
        int num_stringhe;
        
    
    }lista;
    
    int main(){
        lista list;
       int dim;
        
        int i;
        printf("quante stringhe vuoi inserire?");
        scanf("%d",&list.num_stringhe);
        getchar();
        for(i=0;i<list.num_stringhe;i++){
            printf("inserisci una stringa: ");
            fgets(list.elemento[i].s,30,stdin);
            
            }
            for(i=0;i<list.num_stringhe;i++){
            
            dim=strlen(list.elemento[i].s);
            printf("stringa %d : %d\n caratteri",i+1,dim);
            
            }
            
            
            
           
            
        }
    ho contato i caratteri con la strlen, come le confronto queste strlen? :O scusa delle troppe domande
  • Re: Stringhe

    Con la strlen ottieni un numero in una variabile numerica.

    Devi confrontare dei numeri, non sai come si fa?

    Usa una variabile lunmax che imposti a 0
    Ottieni la lunghezza in una variabile dim
    Confronta dim con lunmax e se dim è > allora assegna lunmax=dim e conserva l'indice i in un'altra variabile ix

    Per tutte le stringhe in un ciclo ...

    Alla fine la stringa con indice ix e lunghezza lunmax è quella che cerchi
    Dovresti arrivarci da solo ... è abbastanza semplice ...
  • Re: Stringhe

    Scusa ci ho provato ma non riesco a stampare la stringa,sicuro è una cretinata e appena lo vedo me ne accorgo! Gentilmente potresti compilare sto pezzo mancante nel codice che ti ho mandato ?
  • Re: Stringhe

    Visto che mi sembrava di averti fornito tutte le indicazioni per scrivere il codice, ti scrivo lo pseudocodice che potrai facilmente trasformare in C (devi per forza farlo ...)
    
    pos, dim, maxlun = 0
    for(i....)
    {
      dim = strlen(...stringa[i]...) 
      if(dim > maxlun)
      {
        maxlun = dim
        pos = i
      } 
    }
    
    printf("La stringa più lunga è di " maxlun " caratteri ed è " stringa[pos])
    
  • Re: Stringhe

    Grazie mille gentilissimo
Devi accedere o registrarti per scrivere nel forum
10 risposte