Prima di tutto grazie mille, perdonami se sono ripetitivo, ma se (esempio idiota) oltre A creavi B, serviva una friend per fare A+B?
Visualizzazione Stampabile
In informatica non esiste un solo modo per fare qualcosa.
Premesso questo, se hai veramente bisogno di utilizzare dei membri/attributi privati sì ti serve dichiarare una funzione friend.
Mettiamo il caso di questa classe:
Per sommare due oggetti di A, in questo caso sarebbe a1.a+a2.a, non avendo metodi che ti ritornano a non è possibile non utilizzare una funzione friend:Codice:class A {
int a;
public:
A(int i) { a = i};
}
Con A che diventa:Codice:A operator+(A a1, A a2) {
return A(a1.a + a2.a);
}
Codice:class A {
int a;
public:
A(int i) { a = i};
friend A operator+(A, A);
}
Torno per chiedervi ancora una mano, ma a sto giro porto anche una lieta novella
Vi comunico con gioia che mi hanno ammesso alle regionali delle olimpiadi di informatica :alesisi:
Il livello di difficoltà però, è aumentato e supera la formazione scolastica (almeno del mio anno). Molto probabilmente sarà richiesto l'utilizzo di file tramite comandi quali
fr = forpen("input.txt","r");
fw = fopen("output.txt","w");
Se mi aiutaste a capirne il funzionamento e la gestione vi sarei molto grato
Intanto leggiti la documentazione a proposito.
http://www.cplusplus.com/reference/cstdio/fopen/
Btw, complimenti ;)
Inviato dal mio Nexus 4
Thanks
Ho letto tutto ma non ho afferrato come fare ad utilizzare dentro al programma i valori inseriti in un file
Praticamente dovrei passare i valori contenuti alle variabili
Devi scriverti un simil-parser in modo che legga il contenuto del file di testo e assegna i vari valori alle variabili.
Oppure potresti usare un parser xml per semplificarti la vita ( e saltar la rogna di scrivertelo da solo), ad esempio tinyxml è buono, ma se cerchi in internet ne trovi svariati :sisi:
http://www.grinninglizard.com/tinyxml/index.html
Poi sta a te, se il file di testo contiene poca roba allora puoi scrivertene uno da solo ad hoc, è anche un buon esercizio sull'utilizzo delle stringhe :sisi:, se vuoi risparmiare tempo vai di qui sopra :sisi:
Usando fgets puoi "bufferizzare" un tot di caratteri.
A quel punto hai una stringa che puoi gestire come vuoi. Se i valori sono dei numeri devi fare la solita menava del -48*10^x per ricavarti l'integer.
Stai attento a non troncare accidentalmente qualche strina/numero significativo.
http://www.cplusplus.com/reference/cstdio/fgets/
Con fgetc invece leggi un carattere solo.
Inviato dal mio Nexus 4
Grazie ancora, e, chiedo venia, ma se volessi inizializzare un vettore con gli elementi di un file?
silenzio radio?
Troppo vago. Comunque normalmente gli elementi nel file sono divisi da un carattere ben definito tipo il ; nei file CSV oppure un semplice spazio. Se fosse così anche nel tuo caso devi continuare a leggere un carattere alla volta fino a che questo non sia diverso dal carattere 'speciale'. A questo punto sei nella condizione di poter leggere un elemento significativo quindi leggendo un carattere alla volta te lo salvi nel vettore come meglio si adatta alle specifiche dell'esercizio. Se re incontri il carattere speciale o delimitatore ricadi nel ciclo esterno.
Assicurati di controllare la fine del file in modo opportuno.
Sent from my Nexus 4