Si, alla fine le regole di condizioni rimangono invariate tra Python e C++.si ma quindi anche in c++ posso mettere il true nel while?
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Si, alla fine le regole di condizioni rimangono invariate tra Python e C++.si ma quindi anche in c++ posso mettere il true nel while?
import random
lista = []
print("Inserire numero studenti")
studenti = int(input())
for i in range (studenti):
lista.append(i+1)
while (True):
print("Selezionare \'*' per generare un' estrazione o 0 per uscire")
azione = input()
if (azione == '*'):
numero = random.choice(lista)
print(numero)
lista.remove(numero)
else:
break
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
void remove(typename std::vector<T>& vec, size_t pos)
{
typename std::vector<T>::iterator it = vec.begin();
advance(it, pos);
vec.erase(it);
}
int main(void){
int studenti;
cout << "Inserire numero studenti: ";
cin >> studenti;
cout << "Numero studenti: " << studenti << "\n";
vector<int> lista;
for(int i = 0; i < studenti; i++){
lista.push_back(i+1);
}
while(true){
cout << "Selezionare \'*\' per generare un\' estrazione o 0 per uscire\n";
char azione;
cin >> azione;
if(azione == '*'){
int random = rand()%(studenti); // accessi 0 a studenti - 1
int numero = lista[random];
cout << numero << "\n";
remove(lista, random);
studenti = studenti - 1;
} else break;
}
return 0;
}
non ho capito molto bene questa parte:Figurati! Se hai domande o non hai capito qualcosa fammi sapere
template <typename T>
void remove(typename std::vector<T>& vec, size_t pos)
{
typename std::vector<T>::iterator it = vec.begin();
advance(it, pos);
vec.erase(it);
}
Allora:non ho capito molto bene questa parte:
C++:template <typename T> void remove(typename std::vector<T>& vec, size_t pos) { typename std::vector<T>::iterator it = vec.begin(); advance(it, pos); vec.erase(it); }
grazie mille!Allora:
1. I vettori si scandiscono tramite iterator (un oggetto che scandisce i termini di una collezione, in questo caso del nostro vector)
2. advance è una built-in che va avanzare l'iterazione fino ad un determinato elemento determinato da pos, quindi quello che fa è avanzare fino ad una posizione data, un pò come si fa con il ciclo for fino ad una posizione x.
3. vec.erase(it) rimuove l'elemento puntato dal nostro iterator che, ricordiamo, era sul vettore vec passato al punto 1.
4. La funzione prende un tipo di dato generico (T) quindi può essere utilizzati su qualsiasi tipo di vettore (intero, floating point...), per farla generica, la funzione specifica un template che definisce il markup del tipo generico (ossia T).
In sostanza: Prende in input una lista di elementi e un indice (quello da cancellare), scandisce i termini fino ad arrivare a quell'indice, e lo elimina.
poi un altra roba... qua nel while perchè hai messo true?Allora:
1. I vettori si scandiscono tramite iterator (un oggetto che scandisce i termini di una collezione, in questo caso del nostro vector)
2. advance è una built-in che va avanzare l'iterazione fino ad un determinato elemento determinato da pos, quindi quello che fa è avanzare fino ad una posizione data, un pò come si fa con il ciclo for fino ad una posizione x.
3. vec.erase(it) rimuove l'elemento puntato dal nostro iterator che, ricordiamo, era sul vettore vec passato al punto 1.
4. La funzione prende un tipo di dato generico (T) quindi può essere utilizzati su qualsiasi tipo di vettore (intero, floating point...), per farla generica, la funzione specifica un template che definisce il markup del tipo generico (ossia T).
In sostanza: Prende in input una lista di elementi e un indice (quello da cancellare), scandisce i termini fino ad arrivare a quell'indice, e lo elimina.
while(true){ //perchè true?
cout << "Selezionare \'*\' per generare un\' estrazione o 0 per uscire\n";
char azione;
cin >> azione;
if(azione == '*'){
int random = rand()%(studenti); // accessi 0 a studenti - 1
int numero = lista[random];
cout << numero << "\n";
remove(lista, random);
studenti = studenti - 1;
} else break;
}
Perché te hai messo true nel while di Python e dato che volevi che il programma continuasse finché scrivi "*", ho mantenuto la tua logica... dato che la richiesta se non sbaglio era proprio quella di tradurre il programma da Python a C++.grazie mille!
Messaggio unito automaticamente:
poi un altra roba... qua nel while perchè hai messo true?
Codice:while(true){ //perchè true? cout << "Selezionare \'*\' per generare un\' estrazione o 0 per uscire\n"; char azione; cin >> azione; if(azione == '*'){ int random = rand()%(studenti); // accessi 0 a studenti - 1 int numero = lista[random]; cout << numero << "\n"; remove(lista, random); studenti = studenti - 1; } else break; }
si ma quindi anche in c++ posso mettere il true nel while?Perché te hai messo true nel while di Python e dato che volevi che il programma continuasse finché scrivi "*", ho mantenuto la tua logica... dato che la richiesta se non sbaglio era proprio quella di tradurre il programma da Python a C++