Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Google Pixel 10 Pro XL è il top di gamma della serie Pixel, presentando un ampio display Super Actua da 6.8 pollici insieme alle novità della serie, fra cui la ricarica wireless magnetica Pixelsnap e le nuove funzionalità AI avanzate. Il comparto fotografico include un sistema a tripla fotocamera con zoom Pro Res fino a 100x, mentre il processore Tensor G5 con 16GB di RAM garantisce prestazioni percepite molto elevate su Android.
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


Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
Offerta Amazon sugli Oral-B iO: due spaz...
iPhone 17, gli utenti vogliono il Pro e ...
A Milano il traffico aumenta, la propost...
3 SSD top in offerta su Amazon: con ques...
OPPO annuncia la nuova Serie Reno14 in I...
Rayman tornerà: arriva la conferm...
Stretta su YouTube Premium Family: ecco ...
Choice Day su AliExpress: sconti pazzesc...
Google Chrome non si ferma più: m...
Niente casco, niente giacca: la rivoluzi...
Volkswagen svela in anteprima lo stile d...
Volete una chitarra acustica Fender a ci...
HONOR Magic V5 integra il primo modello ...
Oggi si può comprare un Samsung Galaxy W...
AMD EPYC Venice: CPU Zen 6 fino a 256 co...
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: 10:58.


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