Esercizio su vettori di caratteri

di Anonimizzato28411 il
86 risposte

86 Risposte - Pagina 4

  • La parte più importante del mestiere del programmatore (oggi) è spremersi le meningi per scovare un metodo, un algoritmo per risolvere un problema, non tanto scrivere le righe che lo fanno.

    Se qualcuno ti dice come fare, scrivere il codice non è importante.

    Prova tu a spremerti il cervello per riuscire a trovare un metodo, se ti affidi agli altri non impari nulla.
  • SuperManPC ha scritto:


    Quell' esercizio l' ho provato a fare, ho aggiunto una condizione e basta, non ho altre idee da sperimentare ma 0, non è che non voglio provarci.
    Che condizione hai aggiunto, e perché?

    Questo è il lavoro del programmatore, confermo
    Capire cosa serve fare
    Capire come farlo al meglio
    Solo dopo cominciare a buttare giù righe di codice


    Mettere condizioni in maniera incontrollata è la strada sbagliata

    Se imbocchi la strada sbagliata alla pagina 29 non ci arrivi mica in fondo al libro

    Se abbandoni senza provare 'seriamente' non arrivi nemmeno alla pagina 30
  • OK ma mi sono accorto che non capisco cosa chiede l' esercizio di fare, forse per questo ho chiesto aiuto subito senza modificare quasi niente.
    La funzione main che intende comunque è la funzione principale giusto?
  • Con 'righe arbitrariarmente lunghe' l' esercizio come fa ad intendere tutte le righe in ingresso? Non intende semmai solo alcune righe? Ad esempio le righe più linghe di MAXLINE?
  • Intende dire che MAXLINE non deve essere più un limite ma devi poter inserire una linea di lunghezza qualsiasi. Ma ATTENTO dice solo di contarne la lunghezza, NON devi per forza memorizzare tutti i caratteri da qualche parte ...
  • Più lo leggo meno ci capisco, proverò ad interpretarlo...
    quindi con 'visualizzi correttamente la lunghezza di righe arbitrariarmente lunghe' l' esercizio intende che devo visualizzare un numero intero per esempio a fine riga che indica il numero dei caratteri?
  • Quello che non capisco è cosa intende con la parola 'lunghezza'. Intende un numero intero che sarebbe il conteggio dei caratteri della riga oppure la lunghezza del testo corretta?
  • Ovviamente il numero di caratteri (cosa è la lunghezza del testo corretta???)
  • Si ma non è così ovvio se poi continui a leggere con 'e ne mostri la maggior parte di testo possibile'.
    Potrebbe significare anche qualcos' altro
  • Ti ho detto di lasciare stare adesso la seconda parte e fare solo la prima. E la prima è chiara.

    (non hai detto che intendi con "la lunghezza del testo corretta")
  • Ok
  • SuperManPC ha scritto:


    L' italiano l' ho capito io(quello dell' esercizio), quindi lo potete capire anche voi. L' ho anche reso capibile se poi non si vuole capire allora dimmelo in modo chiaro: non ho voglia di guardare il tuo esercizio.

    SuperManPC ha scritto:


    Quello che non capisco è cosa intende con la parola 'lunghezza'. Intende un numero intero che sarebbe il conteggio dei caratteri della riga oppure la lunghezza del testo corretta?
    Ma quindi riassumendo
    Hai capito oppure no il testo dell'esercizio?

    Perché io finora ho capito che non rispondi alle domande dirette
  • Senti ora provo a fare la prima parte dell' esercizio poi il resto non conta più
  • Ho modificato qualcosa nel main, ho messo le graffe altrimenti considera solo la prima istruzione, ed ho messo la condizione che qualunque valore abbia len (lunghezza della riga) deve essere visualizzata ma mi mette numeri a caso, penso forse a causa di lim.
    
    #include <stdio.h>
    #define MAXLINE 10
    /*getline legge la riga succesiva del testo in ingresso;
    deve segnalare l' eventuale fine del file (EOF)
    deve restituire la lunghezza della riga letta o 0 se non vi sono altri dati in ingresso*/
    int getline(char line[], int maxline);
    void copy(char to[], char from[]);
    
    int main()
    {
    	int len;		// lunghezza della riga corrente1
    	int max;		// lunghezza massima riscontrata finora2
    	char line[MAXLINE];	// riga corrente1
    	char longest[MAXLINE]; // contiene la riga più lunga trovata2
    
    	max = 0;
    	while ((len = getline(line, MAXLINE)) > 0) {
    		if(len <= MAXLINE || len >= MAXLINE) printf("%d", len);
    		if (len > max) {
    			max = len; // lunghezza massima riscontrata finora = lunghezza della riga corrente
    			copy(longest, line);
    		}
    	}
    	if (max > 0) // c' era almeno una riga in ingresso
    		printf("%s", longest);
    	return 0;
    }
    
    // getline: legge una riga in ingresso, la assegna a s, ne restituisce la lunghezza
    int getline(char s[], int lim)
    {
    	int c, i;
    
    	for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) {
    		s[i] = c;
    	}//le graffe del for sono solo indicative e si possono togliere
    		if (c == '\n')
    		{
    			s[i] = c;
    			++i;
    		}
    		s[i] = '\0';
    	return i;
    }
    
    // copy: copia la stringa 'from' sulla stringa 'to'; assume che 'to' sia sufficientemente lunga
    void copy(char to[], char from[])
    {
    	int i;
    
    	i = 0;
    	while ((to[i] = from[i]) != '\0')
    		++i;
    }
    
  • “La condizione che qualunque valore abbia len deve essere visualizzata”? Cioè seriamente la tua modifica consiste in quella condizione?
    Ti sembra utile?
Devi accedere o registrarti per scrivere nel forum
86 risposte