Commit 06f066b5 authored by Benoit AUGER--DUBOIS's avatar Benoit AUGER--DUBOIS
Browse files

les exo du tp2

parent cac067df
#include <iostream>
using namespace std;
int main ( )
{
int a = 1, b = 2, c = 3;
int *p1, *p2;
p1 = &a;
cout << "valeur de p1 ligne 3:" << *p1 << endl;
cout << "Adresse de p1 ligne 3:" << &p1 << endl;
p2 = &c;
cout << "valeur de p2 ligne 4:" << *p2 << endl;
cout << "Adresse de p2 ligne 4:" << &p2 << endl;
*p1 = ( *p2 )++;
cout << "valeur de p1 ligne 5:" << *p1 << endl;
cout << "Adresse de p1 ligne 5:" << &p1 << endl;
cout << "valeur de p2 ligne 5:" << *p2 << endl;
cout << "Adresse de p2 ligne 5: " << &p2 << endl;
p1 = p2;
cout << "valeur de p1 ligne 6:" << *p1 << endl;
cout << "Adresse de p1 ligne 6: " << &p1 << endl;
p2 = &b;
cout << "valeur de p2 ligne 7:" << *p2 << endl;
cout << "Adresse de p2 ligne 7: " << &p2 << endl;
*p1 -= *p2;
cout << "valeur de p1 ligne 8:" << *p1 << endl;
cout << "Adresse de p1 ligne 8: " << &p1 << endl;
++( *p2 );
cout << "valeur de p2 ligne 9:" << *p2 << endl;
cout << "Adresse de p2 ligne 9: " << &p2 << endl;
*p1 *= *p2;
cout << "valeur de p1 ligne 10:" << *p1 << endl;
cout << "Adresse de p1 ligne 10: " << &p1 << endl;
a = ( ++( *p2 ) ) * *p1;
cout << "valeur de a ligne 11:" << a << endl;
p1 = &a;
cout << "valeur de p1 ligne 12:" << *p1 << endl;
cout << "Adresse de p1 ligne 12: " << &p1 << endl;
*p2 = *p1 /= *p2 ;
cout << "valeur de p2 ligne 13:" << *p2 << endl;
cout << "Adresse de p2 ligne 13: " << &p2 << endl;
return 0;
/* on remarque que les adresses de p1 et p2 ne change jamais une fois affectés,
seulement le contenu de ces adresses change contrairement a notre éxécution a la main.*/
}
\ No newline at end of file
#include <iostream>
using namespace std;
typedef char T_chaine[50];
struct T_date {
T_chaine jour;
T_chaine mois;
T_chaine annee;
};
struct T_personne {
T_chaine nom;
T_chaine prenom;
T_date naiss;
T_chaine age;
T_chaine adresse;
};
void affPers(T_personne pers){
cout << "nom :" << pers.nom << " prenom :" << pers.prenom
<< endl << " Date de naissance : " << pers.naiss.jour << "/" << pers.naiss.mois <<
"/" << pers.naiss.annee << endl << " age :" << pers.age
<< endl << " adresse :" << pers.adresse << endl;
}
void affPers2(T_personne* pers){
cout << "nom,prenom : " << pers->nom << " " << pers->prenom << endl
<< "date de naissance : " << pers->naiss.jour << "/"
<< pers->naiss.mois << "/" << pers->naiss.annee << endl
<< "age : " << pers->age << endl
<< "adresse : " << pers->adresse << endl;
}
// Avantage moins long, désaventage efface les valeurs précedente du T_personne.
void saisieP (T_personne &pers){
cout << "entre le nom de la personne : ";
cin >> pers.nom;
cout << "entre le prenom de la personne : ";
cin >> pers.prenom;
cout << "entrer l'adresse de la personne : ";
cin >> pers.adresse;
cout << "entrer l'age de la personne : ";
cin >> pers.age;
cout << "entrer l'année de naissance : ";
cin >> pers.naiss.annee;
cout << "entrer le mois de naissance : ";
cin >> pers.naiss.mois;
cout << "entrer le jour de naissance : ";
cin >> pers.naiss.jour;
}
// Avantage crée une nouvelle variable, désaventage plus long;
T_personne saisieP2(){
T_personne P;
cout << "entre le nom de la personne : ";
cin >> P.nom;
cout << "entre le prenom de la personne : ";
cin >> P.prenom;
cout << "entrer l'adresse de la personne : ";
cin >> P.adresse;
cout << "entrer l'age de la personne : ";
cin >> P.age;
cout << "entrer l'année de naissance : ";
cin >> P.naiss.annee;
cout << "entrer le mois de naissance : ";
cin >> P.naiss.mois;
cout << "entrer le jour de naissance : ";
cin >> P.naiss.jour;
return P;
}
/* les saisies bug lorsque l'on met des espaces sinon cela fonctionne que ce soit
avec la variable string ou tableau de caractère*/
int main () {
T_personne humain;
//humain = saisieP2() variante
saisieP(humain);
//affPers(humain) variante
affPers2(&humain);
}
\ No newline at end of file
#include <iostream>
using namespace std;
typedef char T_chaine[50];
struct T_date {
T_chaine jour;
T_chaine mois;
T_chaine annee;
};
struct T_personne {
T_chaine nom;
T_chaine prenom;
T_date naiss;
T_chaine age;
T_chaine adresse;
};
void affPers2(T_personne* pers){
cout << "nom,prenom : " << pers->nom << " " << pers->prenom << endl
<< "date de naissance : " << pers->naiss.jour << "/"
<< pers->naiss.mois << "/" << pers->naiss.annee << endl
<< "age : " << pers->age << endl
<< "adresse : " << pers->adresse << endl;
}
void saisieP (T_personne &pers){
cout << "entre le nom de la personne : ";
cin >> pers.nom;
cout << "entre le prenom de la personne : ";
cin >> pers.prenom;
cout << "entrer l'adresse de la personne : ";
cin >> pers.adresse;
cout << "entrer l'age de la personne : ";
cin >> pers.age;
cout << "entrer l'année de naissance : ";
cin >> pers.naiss.annee;
cout << "entrer le mois de naissance : ";
cin >> pers.naiss.mois;
cout << "entrer le jour de naissance : ";
cin >> pers.naiss.jour;
}
/*
Le pointeur vers un T_personne est utile si il faut changer de binome pour ne pas avoir a réecrire
toutes les informations de la personnes.
Le T_pointeur est moins ergonomique si les binomes change au cours du temps.
*/
struct T_binome
{
T_personne* etu1;
T_personne* etu2;
bool isBinome; /* si les deux pointeurs sont affectés avec des valeurs différentes
isBinome est vrai sinon il est faux. */
};
/* les différents scenario sont pris en compte en amont lors
de l'affectation du booleen isBinome comme préciser dans le T_binome*/
void affBSuccinct(T_binome b){
if (b.isBinome){
cout << b.etu1->nom << " " << b.etu1->prenom << " est en binome avec : " <<
b.etu2->nom << " " << b.etu2->prenom << endl;
}else{
cout << "Le binome est incorrect";
}
}
void affBComplet(T_binome b){
if (b.isBinome){
affPers2(b.etu1);
cout << endl << "est en binome avec : " << endl;
affPers2(b.etu2);
}else{
cout << "Le binome est incorrect";
}
}
void addB(T_personne P1, T_personne P2,T_binome &B){
B.etu1 = &P1;
B.etu2 = &P2;
if (&P1 != &P2){
B.isBinome = true;
} else {
cout << "Entrer différents étudiants";
}
}
T_binome addB2(T_personne* P1, T_personne* P2){
T_binome B;
B.etu1 = P1;
B.etu2 = P2;
if (P1 != P2){
B.isBinome = true;
} else {
cout << "Entrer différents étudiants";
}
return B;
}
/* les saisies bug lorsque l'on met des espaces sinon cela fonctionne que ce soit
avec la variable string ou tableau de caractère*/
int main () {
T_binome B;
T_personne etu1,etu2;
saisieP(etu1),saisieP(etu2);
B = addB2(&etu1,&etu2); // addB(etu1,etu2,B); alternative
affBSuccinct(B); // affBcomplet(B); alternative
}
\ No newline at end of file
#include <iostream>
using namespace std;
typedef int T_nb[6];
void saisieGrille (T_nb tab) {
for (int y=1;y<7;y++){
tab[y]=-1;
}
int temp,verif;
int i = 1;
while (i<7) {
cout << "entrer un entier : " << endl;
cin >> temp;
verif = estPresent(temp,tab);
if (temp > 0 && temp < 50 && verif == 0){
tab[i] = temp;
i++;
}
}
cout << "Les 6 entiers sont entrées" << endl;
}
int estPresent(int n,T_nb tab){
int x = 0;
for (int i=1;i<7;i++){
if (tab[i] == n){
x = 1;
}
}
return x;
}
void affTab(T_nb T){
cout << "les tirages du loto sont : ";
for (int i=1;i<7;i++){
cout << T[i];
}
cout << endl;
}
int main() {
T_nb tirage,grille;
int compteur = 0;
saisieGrille(tirage);
saisieGrille(grille);
affTab(grille);
cout << endl;
for (int i=1;i<7;i++){
compteur = compteur + estPresent(tirage[i],grille);
}
if (compteur == 6){
cout << "Félicitation vous avez les 6 numéros gagant !" << endl;
} else {
cout << "Vous avez perdu avec " << compteur << " numéro gagnant" << endl;
}
return 0;
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment