Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    1

    [C++] Programma di gestione di stringhe e vettori di stringhe, ricerca carattere massimo e stampa a video.

    Salve a tutti e grazie in anticipo. Voglio postarvi e mettere in discussione il mio programma. Allego traccia e programma. Non riesco a capire perchè non stampa a video. Compila ed esegue ma non stampa il vettore di caratteri più grandi (max_car). Sarei grato se mi risolveste il problema. Grazie ancora per l'attenzione.


    Sia dato un file di testo (come da esempio) che contiene una sequenza di parole.
    Si progettino (almeno) tre funzioni:
    - leggi_parole, che riceve in ingresso una stringa che contiene il nome di un file di testo e legge da questo file la sequenza di parole in esso contenuta, memorizzandola in un vettore di stringhe (vett_str);
    - crea_stringa_max che riceve in ingresso un vettore di stringhe (vett_str) ed il suo riempimento (riemp), e restituisce come parametro di uscita una nuova stringa (max_car) che contiene un carattere per ogni elemento del vettore vett_str. In particolare, ogni elemento di max_car dovrà essere il carattere più grande (nel senso lessicografico) contenuto nella corrispondente stringa di vett_str (vedi esempio che segue: il carattere più grande di ciascuna parola è visualizzato in grassetto). La funzione crea_stringa_max può utilizzare altre funzioni, opportunamente definite;
    - stampa_vett_str che stampa a video un vettore di stringhe (vedi esempio);
    e si scriva un programma che, dopo aver letto da tastiera il nome del file di testo e utilizzando la funzioni sopra descritte (ed eventuali altre), legga da questo file la sequenza di parole, la stampi a video, provveda a costruire la stringa max_car e la stampi a video.

    Il programma dovrà essere suddiviso in moduli, uno contenente prototipi e dichiarazioni, uno contenente le funzioni leggi_parole, crea_stringa_max, stampa_vett_str (ed eventuali altre funzioni) ed un terzo contenente il main.

    ---------------------------------------------------------------------------------------------------------------------------------
    Esempio
    INPUT (da file di testo):
    ogni
    tanto
    porta
    dei
    miei
    doni


    OUTPUT (a video):
    Parole lette da file:
    ogni tanto porta dei miei doni

    Stringa ottenuta:
    ottimo





    Ecco il mio programma:

    #include <iostream>
    #include <cstdlib>
    #include <fstream>
    #include "lib.h"
    #include <string.h>
    using namespace std;


    int main (){
    stringa nomefile;
    vettore v;
    int riemp;
    int lunghezza;
    stringa max_car;

    cout<< "Inserisci il nome del file da leggere:";
    cin >> nomefile;

    leggi_parole (v,riemp, nomefile);
    cout<<"Il file letto e':";
    stampa_parole (v,riemp);

    cout<<"\nLa stringa formata dalle lettere lessicograficamente più grandi è: ";
    crea_stringa_max (v, riemp,max_car, lunghezza);
    stampa_stringa_max (max_car, lunghezza);


    }








    #include <iostream>
    #include <cstdlib>
    #include <fstream>
    #include "lib.h"
    #include <string.h>
    using namespace std;


    void leggi_parole (vettore v,int&riemp, char* nomefile ){
    int i=0;


    ifstream input;
    input.open(nomefile);




    if (input.fail()){
    cout<< "File non trovato";
    system("PAUSE");
    exit(1);
    }

    while (input.good()){
    input>> v[i];
    i++;
    }
    riemp=i;

    input.close();
    }

    void stampa_parole (const vettore v,int&riemp){

    int i;

    for (i=0; i<riemp;i++){
    cout<<v[i]<<" ";
    }

    }


    void crea_stringa_max (const vettore v, int riemp, stringa& max_car, int&lung){
    int i, j;
    int k=0;

    for (i=0; i<riemp;i++){
    lung = strlen(v[i]);
    max_car [k]= v[i][0];
    for (j=1; j<lung; j++){
    if (v[i][j]>max_car[k]);
    max_car [k]=v[i][j];
    }max_car [k++];
    max_car [k+1] = '\0';

    }
    lung=k;

    }

    void stampa_stringa_max (stringa max_car, int lung){

    int i;
    while (i<lung && i != '\0'){
    cout<< max_car[i];

    }
    }












    const int MAX =100;
    typedef char stringa [MAX];
    typedef stringa vettore [MAX];




    void leggi_parole (vettore,int& riemp, char*nomefile);
    void stampa_parole (const vettore, int&riemp);
    void crea_stringa_max (const vettore, int riemp, stringa& max_car, int&lung);
    void stampa_stringa_max (stringa, int);

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il codice è illeggibile. Se non usi i tag CODE e non indichi come è diviso in file, non si capisce nulla.

    Comunque, a parte altre parti del codice non proprio chiaro, il problema mi sembra sia nella funzione stamp_strina_max che deve semplicemente essere

    codice:
    void stampa_stringa_max(stringa max_car, int lung){
    
    
    	cout << max_car;
    }
    Ultima modifica di oregon; 22-01-2016 a 11:52
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.