PDA

Visualizza la versione completa : Problema di scelta c++


luxx91
17-01-2010, 15:09
Salve a tutti,
è la prima volta che scrivo in questo forum... però grazie a voi ho potuto risoleve vari problemi già in passato... spero possiate aiutarmi anche adesso...
Allora il problema è che volevo creare un programma che mi permettesse di scegliere tra 2 possibilità, e ho scritto questo nel main:
------------------------------------------------------------------------
cout<<"Vuoi inserire nel file il minimo o il massimo? "<<endl;
cin>>scelta;

if(scelta=="Min" || scelta=="min")

scriviSuFile(Min);
else
scriviSuFile(Max);
-------------------------------------------------------------------------
L'errore che esce è: ISO C++ forbids comparison between pointer and integer

Come potrei risolvere questo problema????

oregon
17-01-2010, 15:21
Ma

scelta

che tipo di variabile è ?

luxx91
17-01-2010, 15:53
ho definito un tipo stringa "typedef char stringa"
e scelta è di tipo stringa....

oregon
17-01-2010, 16:00
No ... cosi' scelta è un semplice char ...

In C++, puoi dichiararla di tipo string ...

string scelta;

luxx91
17-01-2010, 18:51
Grazie... avevi ragione... ora però mi è sorto un'ulteriore problema....:
questo è quello ke ho scritto nel main:

-------------------------------------------------------------------------------
cout<<"Vuoi inserire il minimo o il massimo? "<<endl;
cin>>scelta;

if(scelta=="Max" || scelta=="max")
scriviSuFile(Max);

else
scriviSuFile(Min);

------------------------------------------------------------------------------
Max e Min vengono passati per riferimento da un'altra funzione ke ho ommesso...
Il problema è che fa partire sempre la funzione "ScriviSuFile(Min)" anche se la mia scelta non è uguale a Max....
Com'è possibile??????

oregon
17-01-2010, 18:57
Mah ... mi sembra strano quello che dici ...

Proponi *tutto* il codice compilabile e vediamo ... (utilizza i tag CODE per postare il codice nel forum, altrimenti si fa fatica a capirlo) ...

luxx91
17-01-2010, 19:01
Questo è il main:


int x, r1;

stringa scelta, Min, Max;
vett v1;



leggiDaFile(v1, r1);
cout<<"\n QUESTA E' LA LISTA PRESENTE NEL FILE\n\n";
stampa(v1, r1);
cout<<"-------------------------------------------"<<endl;
nomeMinimo(v1, r1, Min);
nomeMax(v1, r1, Max);

cout<<"Vuoi inserire questi nomi in un nuovo file?\n";
cout<<"Se si, digita 1; altrimenti digita 2 e il programma verra' terminato: ";
cin>>x;

if(x==1){
cout<<"Vuoi inserire il minimo o il massimo? "<<endl;
cin>>scelta;

if(scelta=="Max" || scelta=="max")
scriviSuFile(Max);

else
scriviSuFile(Min);

}
else
cout<<"Il programma e' terminato!"<<endl;

oregon
17-01-2010, 19:08
Ma scusa ... cosa è

stringa

?

Ti avevo detto di usare la classe "string" del C++ ma non l'hai fatto ...

luxx91
17-01-2010, 19:11
Questo è la libreria ke includo "Header.h"



#ifndef header_h
#define header_h
#include <iostream>
#include <string.h>
#include <fstream>
#include <stdlib.h>

#define m 30

typedef char stringa[m];
typedef stringa vett[20];

using namespace std;

void leggiDaFile(vett v, int &r);
void stampa(vett v, int r);
void nomeMinimo(vett v, int r, stringa &Min);
void nomeMax(vett v, int r, stringa &Max);
void scriviSuFile(stringa x);





#endif



definendo il tipo "typedef char stringa [m]" con la cardinalità "m" non mi da problemi...

oregon
17-01-2010, 19:17
Beh ... se ti si da' un consiglio, non puoi far capire che l'hai seguito e poi non e' vero ...

Con una stringa C (come hai fatto tu) non puoi confrontare le stringhe con un == come hai fatto nella

if(scelta=="Max" || scelta=="max")

mentre lo puoi fare con la classe string del C++ (dato che usi C++).

Quindi dovrai scrivere

#include <string>

using namespace std;

e quindi

string scelta;

Solo a questo punto potrai usare quella if ...

Loading