Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-09-2007, 10:46   #1
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
[C++]Scrittura su file AIUTO PROBLEMA ESAME... è facile...

Ciao ragazzi... sto diventando matto... sto ***** di prof ci ha penalizzato a tutti perchè non abbiamo seguito i suoi corsi, e ci ha messo l'input/output su file quando la cosa non doveva entrare nell'esame...

Dunque il programma mi fa inserire gli elementi di una matrice, e me li stampa su un file.txt in formato CSV, e dopo ogni riga va a capo, e fin qui tutto ok.

Ora devo creare un sottoprogramma che leggendo gli elementi dal file mi crea un vettore che ha per elementila somma dei numeri ricavati da ciascuna riga del file, non ci riesco.


ogni aiuto è apprezzatissimo... lo scritto ormai è andato... ora vorrei che funzionasse per l'orale...

Programma completo, corretto ore 12.38
Spoiler:
Codice:
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;

void input_matrice (int n);
void calcola_vettore_somma (int V[]);
void output (int V[], int n);

int main ()
{   int n, *V;
    cout<<"Inserire il riemp: ";cin>>n;

    V = new int [n];

    input_matrice(n);
    calcola_vettore_somma(V);

    output(V, n);
    
    system ("PAUSE");
    return 0;
}    




void input_matrice (int n)
{    
     int j = 0;
     int temp;
     
     ofstream out;
     out.open ("elementi_matrice.txt", ios::out);
     out<<n<<"\n";
     
     while (j<n)
     {     
           for (int i=0; i<n-1; i++)
           {
               cout<<"Inserire l'elemento della riga "<<j+1<<" colonna "<<i+1<<": ";
               cin>>temp;
               out<<temp<<", ";
           }
           
           cout<<"Inserire l'elemento della riga "<<j+1<<" colonna "<<n<<": ";
           cin>>temp;
           out<<temp<<"\n";
           j++;
     }
     out.close();
}

void calcola_vettore_somma (int V[])
{    
     int n;
     int temp;
     
     ifstream in;
     in.open ("elementi_matrice.txt", ios::in);
     
     in>>n;
     
     while(in>>temp)
     {    cout<<temp;
          for (int i=0; i<n; i++)
          V[i]=temp+V[i];               
     }
     in.close();
}

void output (int V[], int n)
{
     system ("cls");
     cout<<"(";
     for (int i=0; i<n-1; i++)
         cout<<V[i]<<", ";
         cout<<V[n]<<")";
}


Il problema è qui
Codice:
void calcola_vettore_somma (int V[])
{    
    void calcola_vettore_somma (int V[])
{    
     int n;
     int temp;
     
     ifstream in;
     in.open ("elementi_matrice.txt", ios::in);
     
     in>>n;
     
     while(in>>temp)
     {    cout<<temp;
          for (int i=0; i<n; i++)
          V[i]=temp+V[i];               
     }
     in.close();
}

Ultima modifica di Rageh : 19-09-2007 alle 12:35.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 10:53   #2
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
for (int i=0; i<n; i++)
somma+=V[i];
okay è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:06   #3
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
Cosa mi cambia così?
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:11   #4
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Rageh Guarda i messaggi
Cosa mi cambia così?
su somma addizioni il valore diV(i)

somma=0
v(0)=3
v(1)=5
v(2)=2

somma=somma+v(0) = 3
somma=somma+v(1) = 8
somma=somma+v(2) = 10

print somma = 10

edit: naturalmente se i tuoi calcoli sono giusti... e questo non mi và di verificarlo.
"...ottenere la somma degli elementi..."

Ultima modifica di okay : 19-09-2007 alle 11:13.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:20   #5
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
No aspetta okay... il problema non è questo


il problema è che devo prendere un numero alla volta da un file txt...

Sommare tutti quelli che si trovano su una stessa riga...

e costruire un vettore che ha per elementi le varie somme...

come faccio ad usare il costrutto getline... ifstream... mi serve capire questo... la somma la so fare.... soprattutto perchè i numeri sono CSV............ GRAZIE MILLE A TUTTI
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:22   #6
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Codice:
void calcola_vettore_somma (int V[])
...
in.getline(V[i],256,',');
...
cosa ti stai inventando ?

le uniche 2 getline hanno char* come primo parametro ...
Codice:
istream& getline( char* buffer, streamsize num );
istream& getline( char* buffer, streamsize num, char delim );
non ho visto il resto


EDIT: forse ho capito, hai sbagliato alla getline, devi mettere
Codice:
in.getline(temp,256,',');
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve

Ultima modifica di trallallero : 19-09-2007 alle 11:25.
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:25   #7
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
Hai detto proprio la parola giusta... inventando


alla fin fine...
come faccio a prendere un numero alla volta da una riga,soprattutto quando fra un numero e l'altro c'è una "Virgola"... e a fine riga andare a capo?
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:28   #8
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Rageh Guarda i messaggi
No aspetta okay... il problema non è questo


il problema è che devo prendere un numero alla volta da un file txt...

Sommare tutti quelli che si trovano su una stessa riga...

e costruire un vettore che ha per elementi le varie somme...

come faccio ad usare il costrutto getline... ifstream... mi serve capire questo... la somma la so fare.... soprattutto perchè i numeri sono CSV............ GRAZIE MILLE A TUTTI

e come è fatto il file testo elementi_matrice.txt scrivi come è fatto il txt da leggere
okay è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:30   #9
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
subito!! se io inserisco come riga/colonna 3 e come numeri 1 2 3 4 5 6 7 8 9...

mi crea:

3
1, 2, 3
4, 5, 6
7, 8, 9

e fin qui ci siamo, perchè sono CSV

poi...
mi dovrebbe restituire il vettore:

V = (6,20,24)

ma niente!

Ultima modifica di Rageh : 19-09-2007 alle 11:34.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:33   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Rageh Guarda i messaggi
Hai detto proprio la parola giusta... inventando


alla fin fine...
come faccio a prendere un numero alla volta da una riga,soprattutto quando fra un numero e l'altro c'è una "Virgola"... e a fine riga andare a capo?
io ultimamente sto lavorando in C e comunque non sono forte in STL del C++.
Ma vedo un po di errori:

Codice:
in.getline(V[i],256,',');
deve diventare
Codice:
in.getline(temp,256,',');
Codice:
V[i] += temp;
deve diventare
Codice:
V[i] += atoi(temp);
(ma qui usi C ? non e´ meglio string del C++? )

Codice:
in.getline(temp);
oltre a essere sbagliata (al limite
Codice:
in.getline(temp, 256);
) non capisco a cosa serva.

Questio non sono errori logici, quelli non li ho cercati
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:37   #11
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
lascia stare il getline...
usa semplicemente l'operatore >> che si ferma ad ogni spazio ed ignora le virgole.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:40   #12
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
Ho corretto quella parte con quegli orrendi getline
(il prof ci ha dato string come libreria quindi ci ha tratto in inganno)

void calcola_vettore_somma (int V[])
{
int n;
int i = 0;
int temp;

ifstream in;
in.open ("elementi_matrice.txt", ios::in);

in>>n;

while (i<n)
{
V[i] = 0;
for (int j=0; j<n; j++)
{
in>>temp;

V[i] += temp;


}
}
in.close();
}

void output (int V[], int n)
{
system ("cls");
cout<<"(";
for (int i=0; i<n; i++)
cout<<V[i]<<", ";
cout<<")";
}

il programma si blocca.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:48   #13
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
while (i<n) ... se non incrementi i la vedo difficile uscire dal ciclo
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 11:53   #14
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
Avevo dimenticato i++ nel ciclo while,

comunque mi dà dei valori sbagliati...
Codice:
void calcola_vettore_somma (int V[])
{    
     int n;
     int i = 0;
     int temp;
     
     ifstream in;
     in.open ("elementi_matrice.txt", ios::in);
     
     in>>n;
     
     while (i<n)
     {    
          V[i] = 0;
          for (int j=0; j<n; j++)
          {
              in>>temp;
             
              V[i] = temp + V[i];
             
              
          }
          i++;
     }
     in.close();
Mi legge sempre e solo il primo elemento e non gli altri!
Allegati
File Type: txt compito corretto.txt (1.7 KB, 2 visite)

Ultima modifica di Rageh : 19-09-2007 alle 12:29.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 14:11   #15
Rageh
Member
 
Iscritto dal: Aug 2006
Messaggi: 42
PROBLEMA RISOLTO!!!!
Codice:
 for (int i=0; i<n; i++)
     { V[i] = 0;
       for (int j=0; j<n-1; j++)
       {
         in.getline(temp,100,',');
         V[i]+=atoi(temp);
       }
       in.getline(temp,100);
       V[i]+=atoi(temp);
     }
     in.close();
}

Grazie a tutti.
Rageh è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
ESA: rilevati 40 mila asteroidi vicino a...
La batteria salva fabbriche di EQORE ott...
SpaceX Starship: iniziati i test della t...
Datacenter IA nello spazio entro 5 anni,...
Telescopio spaziale James Webb: rilevato...
Ericsson Mobility Report: nel 2025 il 5G...
PLAI DEMO DAY: si chiude il secondo cicl...
Google rilascia Nano Banana Pro: il nuov...
ChatGPT si rinnova ancora: disponibile l...
Ring lancia super sconti di Black Friday...
Black Friday 2025: 450 euro di sconto su...
Tutte le offerte Blink in un unico posto...
OpenAI e Foxconn uniscono le forze per r...
Ricarica delle auto elettriche in 3 minu...
Lucid presenta Gravity Touring, il SUV e...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v