Esercizio su vettori di caratteri

di il
86 risposte

Esercizio su vettori di caratteri


#include <stdio.h>
#define MAXLINE 1000 // massima lunghezza di una riga in input
/*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[]);

// 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)//condizioni riga
		s[i] = c;
	if (c == '\n')
	{
		s[i] = c;
		++i;
	}
	s[i] = '\0';
	return i;
} 

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

// 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')//("\0")-->questo carattere non fa parte del testo normale
		++i;
}
Ciao forum, potete darmi consigli per questo esercizio?:

si riveda la funzione main del programma presentato qua sopra, affinchè visualizzi correttamente la lunghezza di righe arbitrariamente lunghe, e ne mostri la maggior parte di testo possibile.

L' esercizio dice di rivedere la funzione main ma non capisco se c'è da aggiungere solo una condizione oppure una cosa più grande

86 Risposte

  • Re: Esercizio su vettori di caratteri

    Qualcuno ha qualche idea in mente?
  • Re: Esercizio su vettori di caratteri

    Non si capisce cosa si intenda con la frase "si riveda la funzione...." ... non è affatto chiara ...
  • Re: Esercizio su vettori di caratteri

    Forse intende dire che se len è proprio uguale a MAXLINE e l'ultimo carattere non è il terminatore, allora bisogna richiamare nuovamente getline() e andare avanti a sommare tutti i len parziali fin quando non arrivi a un terminatore

    Comunque non è chiaro
  • Re: Esercizio su vettori di caratteri

    Si anch'io non ho ben capito cosa si deve fare
  • Re: Esercizio su vettori di caratteri

    La costante MAXLINE vale 1000 quindi una riga può essere al massimo di 1000 caratteri. Provate a mettere MAXLINE 100 per comodità, se una frase è di 150 caratteri ne stampa solo 100 perchè MAXLINE vale 100, questo esercizio chiede di modificare la main in modo che si riesca a visualizzare di quella riga tutti i 150 caratteri oppure più caratteri possibile. Provate il programma però prima altrimenti non si riesce a capire.
  • Re: Esercizio su vettori di caratteri

    Credo che dice apposta 'si riveda la funzione main' per alzare il livello di difficoltà
  • Re: Esercizio su vettori di caratteri

    No non si capisce proprio ... la tua spiegazione non ha senso
  • Re: Esercizio su vettori di caratteri

    Devi fare in modo che le righe con più caratteri del massimo per riga(valore indicato da MAXLINE) vengono visualizzate con tutti i loro caratteri anche se MAXLINE ha un valore minore del numero di caratteri della riga.
  • Re: Esercizio su vettori di caratteri

    Non puoi perché l'input e la copia non possono superare MAXLINE

    A meno che non rifai tutto con l'allocazione dinamica (i VLA non li prendi in considerazione)
  • Re: Esercizio su vettori di caratteri

    Ma lo dice l' esercizio come non posso!?
  • Re: Esercizio su vettori di caratteri

    Quello che dice l'esercizio è confuso
    Quello che dici tu pure... quindi? Forse bisogna qualche chiarimento in più
  • Re: Esercizio su vettori di caratteri

    Quindi dovrei fare l' allocazione non in main ma nelle funzioni?
  • Re: Esercizio su vettori di caratteri

    No, nel main
  • Re: Esercizio su vettori di caratteri

    Bho allora abbandono l' esercizio tanto è confuso giusto?
Devi accedere o registrarti per scrivere nel forum
86 risposte