Discussion:Programmation C++/Les types de base et les déclarations/Exercices

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Vos commentaires sur le chapitre 2[modifier le wikicode]

Soyez indulgents je débute en wiki !! Bonjour, je pense qu'il y a une petite erreur au niveau de l exemple 7 je mets en commentaire mes propositions

Exemple 7 : mettre un int dans un double

#include <iostream>
using namespace std;

int main()
{
int a;
double b;
cout<<"Tapez une valeur réelle : "; cin>>a;

b=a;

cout<<"La valeur de b vaut : "<<b<<endl;

return 0;
}
   * Dans ce programme, on déclare une variable entière (de type int) a et une variable réelle (de type double) b.
   * On demande à l'utilisateur de saisir la valeur de a.
   * On met la valeur de a dans la variable b : cette opération s'effectue sans cast.
   * On affiche ensuite la valeur de b.
   * Exécution de l'exemple 7
     Lorsqu'on exécute notre programme, il s'affiche à l'écran :
     Tapez une valeur entière : 18
     La valeur de b vaut : 18

C'est corrigé merci ![modifier le wikicode]

Petit probleme[modifier le wikicode]

Bonjour, j'utilise dev C++ et impossible de compiler un fichier source lorsqu'il est dans un projet, j'ai l'erreur : "C:\Dev-Cpp\Makefile.win [Build Error] [int.o] Error 1". Alors que sans créer de projet ça fonctionne.

Une alternative à la solution de l'exercice 3[modifier le wikicode]

Je poste ici mon alternative à l'exercice 3

#include <iostream>
using namespace std;

int main()
{
int a, b;

cout << "Entrez un entier A : "; cin >> a;
cout << "Entrez un entier B : "; cin >> b;

a = a+b;
b = a-b;
a = a-b;

cout << "A vaut : " << a << " et B vaut : " << b << endl;

return 0;
}
Bonjour. Cette alternative est également correcte. Il existe également la variante suivante utilisant le ou exclusif :
a ^= b;
b ^= a;
a ^= b;
--DavidL 30 janvier 2007 à 11:27 (CET)

82.126.146.235 10 août 2007 à 22:29 (CEST)il i a une erreur dans l'exercice 1 du chapitre 2[modifier le wikicode]

bonjour: la solution de exercice 1 ne fonction pa ,jet une otre solution exemple:

#include<iostream>
using namespace std;
int main()
{
cout<<"//calcule de surface et du perimetre//:";
 
int lar;
cout<<"tapez la largeur:";
cin>>lar;
int log ;
cout<<"tapez la longeur:";
cin>>log;
int sur=lar*log;
sur=(int)lar*(int)log;
cout<<"la surface et de:"<<sur<<endl;
int peri=lar+lar+lar+lar;
peri=(int)lar+(int)lar+(int)lar+(int)lar;
cout<<"le perimetre et de:"<<peri<<endl;
system("pause");
return 0;
}

merci au redacteur du book pour les cour de c++ ce mieu que les livre du commerce

précisions et erreurs[modifier le wikicode]

Section "Le type int" "Le nombre de bits et le système de représentation des données n'est pas déterminée en C++" C'est pour ça que, personnellement, j'encourage l'usage des types "short", "long" et "long long" (ce dernier à été ajouté dans C++11). Pour avoir encore moins d'ambiguïtés, il y a aussi les types du header (standard du C99, également présent en C++) stdint.h.

Les types inclus dans stdint.h donnent des garanties en terme de nombre de bits avec plusieurs jeux de types: les types à nombre de bits fixe, ceux qui sont optimisés pour la vitesse sur l'architecture de la machine du compilateur, ceux qui contiennent au moins N bits... des outils bien pratiques, et indispensables quand on programme de façon portable.

A noter cela dis que le compilateur de visual studio ne respecte pas la norme C99 aux dernières nouvelles (sans vouloir faire le troll... c'est toujours la même boîte qui fout la merde) mais il n'empêche qu'il s'agit bel et bien de code standard: https://fr.wikipedia.org/wiki/Bibliothèque_standard_du_C#Normes_ANSI_et_ISO

Section "Exemple 2 : incrémentation d'une variable" "A la place de a=a+1; , on peut également écrire a++;." Il serait plus approprié de parler de l'autre opérateur d'incrémentation: ++a Pourquoi? Parce que si en C la seule différence entre les deux est la priorité, en C++ il y a une différence de performance quand on utilise pas les types natifs (int, float, char, double...). Cette différence de performance est due au fait que dans le cas de a++ on appelle le constructeur par copie de l'objet a avant de l'incrémenter. ++a n'a pas ce problème. Certes, ça n'a d'influence que pour les types utilisateurs, mais il faut mieux prendre le réflexe le plus tôt possible: tôt ou tard, un dev c++ utiliseras les itérateurs, et si il utilise it++, il aura une perte de performance. Donc, autant donner les bons réflexes dès le début.

Section "Différentes opérations" Je pense qu'il serait approprié de citer également les opérateurs de type += -= .

Section "Le type double" "Chaque opération peut être entachée " Chaque opération EST entachée. L'erreur à toujours lieu, voila pourquoi il n'est pas trop recommandé au fil du net d'utiliser l'opérateur == sur des flottants.


Section "Compatibilité int-double" "a=(int)b;" Non!!! Surtout pas de cast C-style! Avec ce cast on pourrait aussi écrire un truc comme ceci:

int a;
float *b;
a=(int)b;

Le compilateur ne bronchera pas forcément! Il faut mieux utiliser "static_cast<int>(b)" qui n'a aucune influence sur les performance d'exécution mais qui ne peut être contourné. Un autre exemple de dangerosité du cast C:

int a;
void *b=&std::cout;
a=*(int*)b;

J'espère avoir été convainquant avec ce dernier exemple. Sauf si c'est un cours sur le C, ce genre de cast est à bannir. Donc, merci de corriger également "Exemple 8 : mettre un double dans un int"

Section "Exemple 7 : mettre un int dans un double" "On met la valeur de a dans la variable b : cette opération s'effectue sans cast." FAUX! Il y a un cast implicite. C'est d'ailleurs un des dangers du C et du C++, qui font que ces langages sont dits à typage faible d'ailleurs. Typés, oui, mais pas trop. Un langage fortement typé interdirait un cast implicite de ce genre (et vu comment ça peut être pénible de résoudre certains bugs liés à ça, ce ne serait pas plus mal que les cast implicite deviennent non standards... ce qui n'arrivera sûrement jamais).

Bmorel (discussion) 11 octobre 2012 à 14:09 (CEST)

PLUS DE COMPREHENSIONS SUR L'EXERCICE NUMERO 5 NOTIONS SUR LES VARIABLES[modifier le wikicode]

Bonjour à tous j'ai besoin de votre aide car j'ai un probleme suite à l'exercice numero 5 sur la notion des variable, dont par tout les moyens je n'arrive pas à comprendre l'obtention de la parenthese du total [total = (1 + tva/100 )*prixtht*pods] l'exercice concerne a Écrire un programme qui demande à l'utilisateur de taper le prix HT d'un kilo de tomates, le nombre de kilos de tomates achetés, le taux de TVA (Exemple 5.5, 19.6,...). Le programme affiche alors le prix TTC des marchandises.


  1. include<iostream>

using namespace std; int main() {

   double prixht, poids, tva, total;

   cout << "Tapez le prix HT d'un kilo de tomates : "; cin>>prixht;
   cout << "Combien de kilos avez-vous achetes : "; cin>>poids;
   cout << "Quel est le taux de TVA : "; cin>>tva;

   total = (1 + tva / 100) * prixht * poids;

   cout << "Le prix TTC est : " << total << endl;

   return 0;

}

MERCI À TOU CEUX QUI PEUVENT M'AIDER.

Il s'agit de l’exercice 4.
J'ai ajouté des commentaires d'explications sur la page.
-- ◄ David L • discuter ► 16 mars 2013 à 23:26 (CET)