Stampare stringa di lunghezza massima immessa

di il
3 risposte

Stampare stringa di lunghezza massima immessa

Innanzitutto, buona Domenica a tutti! Sto avendo non pochi problemi a causa di un esercizio di cui riporto il testo:
-"Utilizzando la funzione getline, leggere i caratteri in ingresso riga per riga fino alla fine
dell’input e salvare la stringa di lunghezza massima immessa. Stampare tale stringa dopo
aver ricevuto la fine dell’input."
Parto dal presupposto (così come avevo specificato nel mio precedente thread) che sono nuovo ad ogni linguaggio di programmazione e mi ritrovo ad iniziare il mio percorso proprio da C. Siate clementi Detto questo riporto il codice sorgente:

#include <stdio.h>
#define MAX 100
int get(char s[], int lim);
int main ()
{
	char my_string[MAX];
	int i;
	printf("Inserire un testo:\n");
	scanf("%s", my_string);
	printf("Stringa di lunghezza massima = ");
  for (i=get(my_string, i); my_string[i]!='\0' && my_string[i]!=' '; i++) {
	printf("%c", my_string[i]); 
	}
	printf("\n");
}

int get(char s[], int lim) {
	int i, a, z=1;
	for (i=0; s[i]!='\0'; i++) {
		for (a=i; s[a]!=' '; a++) {
 			if (s[a]==' '){
  		lim=a;
			}
		}
		if (s[i]==' ') {
			for (a=i+1; s[a]!=' '; a++) {
				if (s[a]==' '){
				z++;
  			lim=a;
				continue; }
				if (lim<(lim+a)/z)
				lim=a;
				}
			}
		}
		
  return lim;
}
Una cosa è certa, mi sembra di aver pasticciato un bel po' di comandi!

3 Risposte

  • Re: Stampare stringa di lunghezza massima immessa

    Ciao,
    prova a guardare queste poche righe di codice. Da qui non dovresti avere difficoltà a scrivere quello (poco) che è rimasto da fare.
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX 100
    
    /* funzione che ritorna la lunghezza di una stringa */
    /* ricorda che '\0' e' il terminatore della stringa */
    int stringSize(char * stringa)
    {
        int count = 0;
        while(stringa[count] != '\0') count++;
        return count;
    }
    
    int main()
    {
        int maxSize=0;
        char maxString[MAX];
        int size;
        char stringa[MAX];
        /* ciclo infinito */
        while(1)
        {
            printf("Inserire la prossima stringa: ");
            fgets(stringa, MAX, stdin);          /* acquisizione della stringa (anche con spazi) */
            size = stringSize(stringa);
            if(size > maxSize)
            {
                /* prende il posto della piu' lunga */
                maxSize = size;
                strcpy(maxString, stringa);
    
                printf("La piu\' lunga e\' %s\n", stringa);
            }
        }
    
        return 0;
    }
    
  • Re: Stampare stringa di lunghezza massima immessa

    Credo proprio di aver capito male la consegna dell'esercizio... Avevo intenzione di trovare, dopo aver immesso la mia stringa con scanf, una sorta di sottostringa formata unicamente dalla parola più lunga della my_string e di conseguenza stamparla. Ma a questo punto penso non si tratti di questo, dico bene?
  • Re: Stampare stringa di lunghezza massima immessa

    Ah in effetti potrebbe anche essere così... Allora io ho risolto un altro esercizio!

    Per quanto riguarda il programma che devi scrivere tu, ti consiglio di leggere qui.

Devi accedere o registrarti per scrivere nel forum
3 risposte