Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-08-2011, 08:46   #1
icecube1
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");
}
forse alcune cose potevano essere fatte diversamente per facilitare le cose ma le ho fatte in questo modo o perchè sono inesperto o perchè volevo complicarle un po' per esercitarmi meglio (tipo le variabili in private),..

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?
icecube1 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 10:44   #2
adgatinni
Junior Member
 
Iscritto dal: Aug 2011
Città: Francia
Messaggi: 5
Ma il tuo codice ha dei problemi :

Codice:
#include <stdafx.h>
Con questo, il tuo codice non è portabile.

Codice:
#include <string.h>
Se tu programmi in C++, devi utilizzare std::string. string.h e char* sono per il linguaggio C.

Codice:
void main()
main() deve ritornare un int !

Poi,
Quote:
come potrei fare?
Con un array, un std::vector o un std::list ... ci sono molti modi di fare !

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;
}
adgatinni è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 12:15   #3
icecube1
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...
icecube1 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 13:14   #4
adgatinni
Junior Member
 
Iscritto dal: Aug 2011
Città: Francia
Messaggi: 5
Quote:
ma <stdafx.h> è l'header che c'è, senza quello mi dà errore...
Sì perché hai creato un progetto con headers precompilati. Quando crei un progetto con Visual Studio, devi creare un progetto "vuoto".

Quote:
ah quindi <string> sarebbe di c++ mentre <string.h> C giusto?
pensavo che il c++ integrasse molte funzioni del c
Tu puoi utilizzare le funzioni del C ma è meglio utilizzare oggetti del C++ perché sono più facile da utilizzare.

Quote:
ma il main perchè non posso lasciarlo void
perché non è corretto, la norma del C++ dice che main deve ritornare un numero intero.

Quote:
e ultima cosa, ma non è meglio se inserisco using namespace std, almeno non mi tocca riscriverlo per ogni funzione...
Sì tu puoi ma non mi piace perché se lo facciamo, il namespace non serve a niente.
adgatinni è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2011, 14:59   #5
ESSE-EFFE
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.
__________________
ESSE-EFFE.com
Sviluppo software e Web
Creazione loghi - Bergamo
ESSE-EFFE è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 04:41   #6
icecube1
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:
Visto che si parlava di OOP, suggerirei, tanto per cominciare, di spostare anche la parte di acquisizione dei dati all'interno della classe Persona.
Hai ragione, non mi è venuto in mente, come ho detto sono agli inizi, grazie mille!!

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");
}
questo mi fa strani scherzi
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
icecube1 è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 04:43   #7
icecube1
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:
Visto che si parlava di OOP, suggerirei, tanto per cominciare, di spostare anche la parte di acquisizione dei dati all'interno della classe Persona.
Hai ragione, non mi è venuto in mente, come ho detto sono agli inizi, grazie mille!!

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");
}
questo mi fa strani scherzi
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
icecube1 è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2011, 04:45   #8
icecube1
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:
Visto che si parlava di OOP, suggerirei, tanto per cominciare, di spostare anche la parte di acquisizione dei dati all'interno della classe Persona.
Hai ragione, non mi è venuto in mente, come ho detto sono agli inizi, grazie mille!!

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");
}
questo mi fa strani scherzi
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
icecube1 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Il nuovo Snapdragon 8 Elite Gen 6 sar&ag...
Nintendo Switch 2: risultati sotto le at...
Weekend con tante sorprese su Amazon: to...
HONOR non si ferma più: il 2025 &...
Speciale best seller: EUREKA J15 Evo Ult...
Roborock Q10 X5+ da 10.000 Pa a 199€ &eg...
E-mail reset password di Instagram: la c...
La NASA ha discusso le problematiche del...
Il razzo spaziale NASA SLS e la capsula ...
Stazione Spaziale Internazionale: Crew-1...
Samsung Galaxy S26 Ultra: la ricarica de...
Apple ha un nuovo partner per la sua App...
Trenitalia introduce il prezzo dinamico ...
OnePlus non si ferma più: c'&egra...
DAZN sconta il piano Full per 6 mesi, se...
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: 19:02.


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