Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
Abbiamo messo alla prova la nuova AORUS GeForce RTX 5080 INFINITY WOOD 16G, una delle interpretazioni più particolari della GPU NVIDIA Blackwell. Prestazioni, frequenze operative, temperature, consumi e margini di overclock sono stati confrontati con altre RTX 5080 custom e con la Founders Edition. Il design in legno è solo uno degli elementi distintivi di una scheda che punta a ritagliarsi uno spazio nella fascia più alta del mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-09-2007, 09: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 11:35.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 09: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, 10: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, 10: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 10:13.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 10: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, 10: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 10:25.
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 10: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, 10: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, 10: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 10:34.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 10: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, 10: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, 10: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, 10: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, 10: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 11:29.
Rageh è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 13: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


Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
Il nuovo Samsung Galaxy S26 FE non ha pi...
Anthropic firma 9,1 miliardi con un mine...
Reflect Orbital ammette: un telescopio d...
Meta ha lanciato la nuova app Facebook C...
Offerta lancio pazzesca per Pixel 11 Pro...
Questa è l'auto del futuro che so...
Google lancia i Pixel 11, Pixel Watch 5 ...
Microsoft sfida i cinesi: il nuovo model...
XPeng esagera: ecco la G9L, 5,1 m di lun...
SpaceX potrebbe tornare a utilizzare pia...
Quando l'IA allucina nei campi: il model...
La pubblicità di iPhone che indig...
NVIDIA prepara un LLM gigante da oltre m...
ESA e Arianespace avrebbero cancellato l...
I fari di alcune Tesla sono troppo lumin...
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: 01:49.


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