|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2010
Messaggi: 12
|
[C++] nome classe variabile
in questi giorni ho iniziato a programmare ad oggetti quindi se scrivo cretinate(per non essere volgari) perdonatemi
, usavo il c++ come linguaggio procedurale(colpa del profe ) e ora sono passato ai programmi oop, la logica è diversa non ho ancora capito bene come funziona, ho letto moltissime guide, libri, tutorial online ecc.. ma purtroppo ancora non riesco ad entrare completamente nella logica...comunque ho iniziato a scrivere qualcosina, ho creato una classe persona che permette di inserire diverse informazioni riguardo ad una persona, funziona tutto bene, però ora vorrei aggiungere un po' di cose, pensavo di chiedere all'inizio all'utente quante persone volesse creare quindi fargliele inserire, ho in mente un metodo ma dubito che funzioni comunque posto il codice: Codice:
#include <stdafx.h>
#include <iostream>
#include <string.h>
using namespace std;
class Persona
{
private:
char nome[20];
char cognome[20];
int eta;
char sesso;
public:
Persona()
{
strcpy(nome, "nome");
strcpy(cognome, "cognome");
eta=18;
sesso='n';
}
Persona(char nom[], char cognom[], int et, char sex)
{
strcpy(nome, nom);
strcpy(cognome, cognom);
eta=et;
sesso=sex;
}
void visualizza()
{
cout<<"______________________________________________________________________________";
cout<<"\nNome: "<<nome<<"\nCognome: "<<cognome<<"\nEta: "<<eta<<"\nSesso: "<<sesso<<"\n";
cout<<"_______________________________________________________________________________\n";
}
};
void main()
{
char nom[20];
char cognom[20];
int et, num;
char sex;
cout<<"quante persone vuoi creare? ";cin>>num;
cout<<"inserisci il nome: ";cin>>nom;
cout<<"\ninserisci il cognome: ";cin>>cognom;
cout<<"\ninserisci l'eta': ";cin>>et;
cout<<"\ninserisci il sesso (m/f): ";cin>>sex;
Persona Persona1(nom, cognom, et, sex);
Persona1.visualizza();
system("pause");
}
riguardo al problema di più persone pensavo di fare una cose del genere ma ho forti dubbi che funzioni, è l'unica cosa che mi è venuta in mente: 1-chiedo quante persone; 2-creo ciclo per n persone: 2.1-creo stringa=persona+(indice contatore); (so che con il + con si fa 2.2-creo oggetto con il nome della stringa; fine ciclo come potrei fare? |
|
|
|
|
|
#2 | |
|
Junior Member
Iscritto dal: Aug 2011
Città: Francia
Messaggi: 5
|
Ma il tuo codice ha dei problemi :
Codice:
#include <stdafx.h> Codice:
#include <string.h> Codice:
void main() Poi, Quote:
Per esempio: Codice:
#include <iostream>
#include <string>
class Persona
{
private:
std::string m_nome;
std::string m_cognome;
unsigned int m_eta;
std::string m_sesso;
public:
Persona()
{
m_nome = "nome";
m_cognome = "cognome";
m_eta = 18;
m_sesso = "n";
}
Persona(std::string nome, std::string cognome, int eta, std::string sesso) : m_nome(nome), m_cognome(cognome), m_eta(eta), m_sesso(sesso)
{
}
void visualizza()
{
std::cout << "\nNome: " << m_nome << "\nCognome: " << m_cognome << "\nEta: " << m_eta << "\nSesso: " << m_sesso << std::endl;
}
};
int main(void)
{
int num = 0, et = 0;
std::string nom, cognom, sex;
Persona* persona = 0;
std::cout << "quante persone vuoi creare? ";
std::cin >> num;
persona = new Persona[num];
for (int i = 0; i < num; ++i)
{
std::cout << "inserisci il nome: ";
std::cin >> nom;
std::cout << "\ninserisci il cognome: ";
std::cin >> cognom;
std::cout << "\ninserisci l'eta': " ;
std::cin >> et;
std::cout<<"\ninserisci il sesso (m/f): ";
std::cin >> sex;
persona[i] = Persona(nom, cognom, et, sex);
}
for (int i = 0; i < num; ++i)
persona[i].visualizza();
delete[] persona;
return 0;
}
|
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Apr 2010
Messaggi: 12
|
ora i miei dubbi si sono aumentati esponenzialmente ma <stdafx.h> è l'header che c'è, senza quello mi dà errore... ah quindi <string> sarebbe di c++ mentre <string.h> C giusto? pensavo che il c++ integrasse molte funzioni del c ma il main perchè non posso lasciarlo void, anche se lo metto come int main()....return 0;... non è che poi mi serva a molto e ultima cosa, ma non è meglio se inserisco using namespace std, almeno non mi tocca riscriverlo per ogni funzione... |
|
|
|
|
|
#4 | ||||
|
Junior Member
Iscritto dal: Aug 2011
Città: Francia
Messaggi: 5
|
Quote:
Quote:
Quote:
Quote:
|
||||
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2009
Messaggi: 186
|
Visto che si parlava di OOP, suggerirei, tanto per cominciare, di spostare anche la parte di acquisizione dei dati all'interno della classe Persona.
|
|
|
|
|
|
#6 | |
|
Junior Member
Iscritto dal: Apr 2010
Messaggi: 12
|
grazie mille per le risposte, ho fatto anche qualche ricerca a riguardo e ho scoperto un sacco di cose interessanti, tipo il motivo per il quale il main deve ritornare un valore (per seganlare un errore)
Quote:
ho un'altra quesito da proporre, scrivo qui perchè non vorrei intasare il forum Codice:
#include <iostream>
#include <string>
using namespace std;
void main()
{
struct dipendente
{
char nome[30];
char cognome[30];
int eta;
int stipendio;
};
int num, chi;
struct dipendente lista[100];
cout<<"Quanti dipendenti ha l'azienda? ";cin>>num;
for(int i=0; i<num; i++)
{
cout<<"\nInserisci il nome del dipendente num "<<i+1<<": ";cin.getline(lista[i].nome, 30, '\n');
cout<<"\nInserisci il cognome: ";cin.getline(lista[i].cognome, '\n');
cout<<"\nInserisci l'eta': ";cin>>lista[i].eta;
cout<<"\nInserisci lo stipendio che percepisce: ";cin>>lista[i].stipendio;
}
cout<<"\n\nQuale dipendente vuoi vedere? ";cin>>chi;
cout<<"\n\nNome: "<<lista[chi].nome;
cout<<"\nCogmone: "<<lista[chi].cognome;
cout<<"\nEta: "<<lista[chi].eta;
cout<<"\nStipendio: "<<lista[chi].cognome;
cout<<endl;
system("pause");
}
allora quano lo faccio partire i chiede quanti dipendenti voglio inserire poi dovrebbe chiedermi il nome del dipendente ma non lo fa, mi scrive: inserisci nome dipendente..... inserisci il cognome:_ nel senso che scrive il cout del nome ma non me lo lascia inserire e passa subito al cognome e quello me lo lascia inserire, non riesco a capire quale si ail problema, ho fatto dei tentativi modificando cose "collegate" ma come mi aspettavo è stato tutto inutile ops, ho sbagliato e ho risposto 3 volte con la stessa cosa non eramia intenzione
|
|
|
|
|
|
|
#7 | |
|
Junior Member
Iscritto dal: Apr 2010
Messaggi: 12
|
grazie mille per le risposte, ho fatto anche qualche ricerca a riguardo e ho scoperto un sacco di cose interessanti, tipo il motivo per il quale il main deve ritornare un valore (per seganlare un errore)
Quote:
ho un'altra quesito da proporre, scrivo qui perchè non vorrei intasare il forum Codice:
#include <iostream>
#include <string>
using namespace std;
void main()
{
struct dipendente
{
char nome[30];
char cognome[30];
int eta;
int stipendio;
};
int num, chi;
struct dipendente lista[100];
cout<<"Quanti dipendenti ha l'azienda? ";cin>>num;
for(int i=0; i<num; i++)
{
cout<<"\nInserisci il nome del dipendente num "<<i+1<<": ";cin.getline(lista[i].nome, 30, '\n');
cout<<"\nInserisci il cognome: ";cin.getline(lista[i].cognome, '\n');
cout<<"\nInserisci l'eta': ";cin>>lista[i].eta;
cout<<"\nInserisci lo stipendio che percepisce: ";cin>>lista[i].stipendio;
}
cout<<"\n\nQuale dipendente vuoi vedere? ";cin>>chi;
cout<<"\n\nNome: "<<lista[chi].nome;
cout<<"\nCogmone: "<<lista[chi].cognome;
cout<<"\nEta: "<<lista[chi].eta;
cout<<"\nStipendio: "<<lista[chi].cognome;
cout<<endl;
system("pause");
}
allora quano lo faccio partire i chiede quanti dipendenti voglio inserire poi dovrebbe chiedermi il nome del dipendente ma non lo fa, mi scrive: inserisci nome dipendente..... inserisci il cognome:_ nel senso che scrive il cout del nome ma non me lo lascia inserire e passa subito al cognome e quello me lo lascia inserire, non riesco a capire quale si ail problema, ho fatto dei tentativi modificando cose "collegate" ma come mi aspettavo è stato tutto inutile |
|
|
|
|
|
|
#8 | |
|
Junior Member
Iscritto dal: Apr 2010
Messaggi: 12
|
grazie mille per le risposte, ho fatto anche qualche ricerca a riguardo e ho scoperto un sacco di cose interessanti, tipo il motivo per il quale il main deve ritornare un valore (per seganlare un errore)
Quote:
ho un'altra quesito da proporre, scrivo qui perchè non vorrei intasare il forum Codice:
#include <iostream>
#include <string>
using namespace std;
void main()
{
struct dipendente
{
char nome[30];
char cognome[30];
int eta;
int stipendio;
};
int num, chi;
struct dipendente lista[100];
cout<<"Quanti dipendenti ha l'azienda? ";cin>>num;
for(int i=0; i<num; i++)
{
cout<<"\nInserisci il nome del dipendente num "<<i+1<<": ";cin.getline(lista[i].nome, 30, '\n');
cout<<"\nInserisci il cognome: ";cin.getline(lista[i].cognome, '\n');
cout<<"\nInserisci l'eta': ";cin>>lista[i].eta;
cout<<"\nInserisci lo stipendio che percepisce: ";cin>>lista[i].stipendio;
}
cout<<"\n\nQuale dipendente vuoi vedere? ";cin>>chi;
cout<<"\n\nNome: "<<lista[chi].nome;
cout<<"\nCogmone: "<<lista[chi].cognome;
cout<<"\nEta: "<<lista[chi].eta;
cout<<"\nStipendio: "<<lista[chi].cognome;
cout<<endl;
system("pause");
}
allora quano lo faccio partire i chiede quanti dipendenti voglio inserire poi dovrebbe chiedermi il nome del dipendente ma non lo fa, mi scrive: inserisci nome dipendente..... inserisci il cognome:_ nel senso che scrive il cout del nome ma non me lo lascia inserire e passa subito al cognome e quello me lo lascia inserire, non riesco a capire quale si ail problema, ho fatto dei tentativi modificando cose "collegate" ma come mi aspettavo è stato tutto inutile |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:31.










) e ora sono passato ai programmi oop, la logica è diversa non ho ancora capito bene come funziona, ho letto moltissime guide, libri, tutorial online ecc.. ma purtroppo ancora non riesco ad entrare completamente nella logica...








