Ecrire un programme qui lit un caractère au clavier et affiche le caractère ainsi que son code numérique:
a) en employant getchar et printf,
b) en employant getch et printf.
Ecrire un programme qui lit un caractère au clavier et affiche le caractère ainsi que son code numérique :
a) en employant getchar et printf,
#include
main()
{
int C;
printf("Introduire un caractère suivi de 'Enter'\n");
C = getchar();
printf("Le caractère %c a le code ASCII %d\n", C, C);
return 0;
}
b) en employant getch et printf.
#include
#include
main()
{
int C;
printf("Introduire un caractère \n");
C = getch();
printf("Le caractère %c a le code ASCII %d\n", C, C);
return 0;
}
En vous référant aux exemples du chapitre 4.2, écrivez un programme qui lit la date du clavier et écrit les données ainsi que le nombre de données correctement reçues sur l'écran.
Exemple:
Introduisez la date (jour mois année): 11 11 1991
données reçues : 3
jour : 11
mois : 11
année : 1991
* Testez les réactions du programme à vos entrées. Essayez d'introduire des nombres de différents formats et différentes grandeurs.
* Changez la partie format du programme de façon à séparer les différentes données par le symbole '-' .
#include
main()
{
int JOUR, MOIS, ANNEE, RECU;
printf("Introduisez la date (JOUR, MOIS, ANNéE) : ");
RECU=scanf("%i %i %i", &JOUR, &MOIS, &ANNEE);
printf("\ndonnées reçues : %i\njour : %i\nmois :
%i\nannee : %i\n", RECU, JOUR, MOIS, ANNEE);
return 0;
}
Changez la partie format du programme de façon à séparer les différentes données par le symbole '-'.
. . .
RECU=scanf("%i-%i-%i", &JOUR, &MOIS, &ANNEE);
. . .
1. Ecrire un programme qui permute et affiche les valeurs de trois variables A, B, C de type entier qui sont entrées au clavier :
2. Ecrire un programme qui affiche le quotient et le reste de la division entière de deux nombres entiers entrés au clavier ainsi que le quotient rationnel de ces nombres.
#include
main()
{
int A, B, C, AIDE;
printf("Introduisez trois nombres (A, B, C) : ");
scanf("%i %i %i", &A, &B, &C);
/* Affichage à l'aide de tabulations */
printf("A = %i\tB = %i\tC = %i\n", A, B, C);
AIDE=A;
A=C;
C=B;
B=AIDE;
printf("A = %i\tB = %i\tC = %i\n", A, B, C);
return 0;
}
#include
main()
{
int A, B;
printf("Introduisez deux nombres entiers : ");
scanf("%i %i", &A, &B);
printf("Division entiere : %i\n", A/B);
printf("Reste : %i\n", A%B);
printf("Quotient rationnel : %f\n", (float)A/B);
return 0;
}
Remarque: Conversion des types
Pour obtenir un résultat rationnel, il faut qu'au moins l'une des deux opérandes soit d'un type rationnel. Si nous convertissons la valeur de l'opérande A en float à l'aide de l'opérateur de conversion forcée, alors la valeur de la deuxième opérande B est convertie automatiquement en float. Le résultat de la division est du type float et doit être représenté par le spécificateur de format %f (ou %e).
Remarquez bien que la conversion forcée concerne uniquement la valeur de la variable A ! La valeur de B est convertie automatiquement.
D'autre part, si nous écrivions:
(float)(A/B)
nous n'obtiendrions pas le résultat désiré, parce que la conversion se ferait seulement après la division !
1. Ecrire un programme qui affiche la résistance équivalente à trois résistances R1, R2, R3 (type double),
- si les résistances sont branchées en série:
Rsér = R1+R2+R3
- si les résistances sont branchées en parallèle:
2. Ecrire un programme qui calcule et affiche l'aire d'un triangle dont il faut entrer les longueurs des trois côtés. Utilisez la formule :
S2 = P(P-A)(P-B)(P-C)
où A, B, C sont les longueurs des trois côtés (type int) et P le demi-périmètre du triangle.
#include
main()
{
double R1, R2, R3, RRES;
printf("Introduisez les valeurs pour R1, R2 et R3 : ");
scanf("%lf %lf %lf", &R1, &R2, &R3);
RRES=R1+R2+R3;
printf("Resistance resultante serielle : %f\n", RRES);
RRES=(R1*R2*R3)/(R1*R2+R1*R3+R2*R3);
printf("Resistance resultante parallele : %f\n", RRES);
return 0;
}
En affichant immédiatement le résultat du calcul, nous n'avons pas besoin de la variable d'aide RRES:
#include
main()
{
double R1, R2, R3;
printf("Introduisez les valeurs pour R1, R2 et R3 : ");
scanf("%lf %lf %lf", &R1, &R2, &R3);
printf("Resistance resultante serielle : %f\n",
R1+R2+R3);
printf("Resistance resultante parallele : %f\n",
(R1*R2*R3)/(R1*R2+R1*R3+R2*R3));
return 0;
}
#include
#include
main()
{
/* Pour ne pas perdre de précision lors de la division, */
/* déclarons P comme rationnel. */
int A, B, C;
double P; /* ou bien: float P; */
printf("Introduisez les valeurs pour A, B et C : ");
scanf("%i %i %i", &A, &B, &C);
/* En forçant la conversion de A, les autres opérandes */
/* sont converties automatiquement. */
P=((double)A+B+C)/2;
printf("Surface du triangle S = %f\n",
sqrt(P*(P-A)*(P-B)*(P-C)));
return 0;
}
Ecrire un programme qui affiche les codes ASCII des lettres et des chiffres sous la forme suivante :
Affichez un triangle isocèle formé d'étoiles de N lignes (N est fourni au clavier):
Nombre de lignes : 8
*
***
*****
*******
*********
***********
*************
***************
#include
main()
{
int LIG; /* nombre de lignes */
int L; /* compteur des lignes */
int ESP; /* nombre d'espaces */
int I; /* compteur des caractères */
do
{
printf("Nombres de lignes : ");
scanf("%d", &LIG);
}
while (LIG20);
for (L=0 ; L
{
ESP = LIG-L-1;
for (I=0 ; I
putchar(' ');
for (I=0 ; I<2*L+1 ; I++)
putchar('*');
putchar('\n');
}
return 0;
}
Cet exercice a pour but de vérifier les points techniques suivants :
Travail à Faire:
Ecrire un programme qui demande à l'utilisateur de taper un entier et qui affiche GAGNE si l'entier est entre 56 et 78 bornes incluses PERDU sinon.
#include
using namespace std;
int main()
{
int a;
cout"Tapez un entier : ";cin>>a;
if((a>=56)&&(a<=78))cout"GAGNE"endl; else cout"PERDU"endl;
cout "Appuyez sur une touche pour continuer ..." endl;
cin.ignore();
cin.get();
return EXIT_SUCCESS;
}
Cet exercice a pour but de vérifier les points techniques suivants :
Travail à Faire :
Ecrire un programme qui demande à l’utilisateur de taper 10 entiers et qui affiche le plus petit de ces entiers.
#include
using namespace std;
int main()
{
int i,ppt,x;
for(i=0;i<10;i++)
{
cout<<"Tapez un entier : ";cin>>x;
if(i==0)ppt=x;else if(x<ppt)ppt=x;
}
cout<<"Le plus petit vaut vaut : "<<ppt<<endl;
return 0;
}
Une pile est un ensemble dynamique d’éléments où le retrait se fait d’une façon particulière. En effet, lorsque l’on désire enlever un élément de l’ensemble, ce sera toujours le dernier inséré qui sera retiré. Un objet pile doit ré pondre aux fonctions suivantes:
Pour cela nous allons supposer que les éléments à empiler sont de type int.
Le programme main comprend la définition d'une classe pile et un programme de test qui crée deux piles p1 et p2, empile dessus des valeurs entières et les dépiler pour vérifier les opérations push et pop.
Découverte et travail des classes. Utilisation d'un constructeur et d'un destructeur.
#include
class pile
{
int *tab;
int k; //indice de la 1er position vide
int max;
pile (int taille =100);
~pile();
int push int x; //empiler X
int full();
int empty ();
int pop; int &x; //dépiler le dernier éllement
.
.
.
.
}
Cet exercice a pour but de vérifier les points techniques suivants :
Travail à Faire :
Ecrire un programme qui demande à l'utilisateur de taper un entier N et qui calcule u(N) défini par :
u(0)=1
u(1)=1
u(n+1)=u(n)+u(n-1)
#include
using namespace std;
int main()
{
int i,u=1,v=1,w,N;
cout<<"Tapez N : ";cin>>N;
w=1;
for(i=2;i<=N;i++)
{
w=u+v;
u=v;
v=w;
}
cout<<"u("<<N<<")="<<w<<endl;
return 0;
}
Cet exercice a pour but de vérifier les points techniques suivants :
Travail à Faire :
On considère la suite hongroise : u(0)=a (a entier)
si u(n) pair alors u(n+1)=u(n)/2 sinon u(n+1)=3*u(n)+1
Pour toutes les valeurs a, il existe un entier N tel que u(N)=1 (conjecture admise).
a) Ecrire un programme qui demande à l'utilisateur de taper a et qui affiche toutes les valeurs de u(n) de n=1 à n=N.
#include
using namespace std;
int main()
{
int a,n,u;
cout<<"Tapez la valeur de a : ";cin>>a;
n=0;
u=a;
while(u!=1)
{
if(u%2==0)u=u/2; else u=3*u+1;
n++;
cout<<"u("<<n<<")="<<u<<endl;
}
return 0;
}
Cet exercice a pour but de vérifier les points techniques suivants :
Travail à Faire :
Ecrire un programme qui demande à l'utilisateur de taper un entier N et qui calcule la somme des cubes de 5^3 à N^3.
#include
using namespace std;
int main()
{
int N;
double somme;
cout << "Entrer un entier : "; cin >> N;
if (N>=5) {
for (int i=5; i<=N; i++) somme += i*i*i;
}
cout << "Somme des cubes de 5^3 a " << N << "^3 = " << somme << endl;
cin.ignore();
cin.get();
return EXIT_SUCCESS;
}
Cet exercice a pour but de vérifier les points techniques suivants :
Travail à Faire :
Écrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau.
Le programme doit afficher le nombre d'entiers supérieurs ou égaux à 10.
#include
using namespace std;
const int N=10;
int main()
{
int t[10],i,nb=0;
for(i=0;i<N;i++){cout<<"Tapez un entier ";cin>>t[i];}
for(i=0;i<N;i++)if(t[i]>=10)nb++;
cout<<"Le nombre d'entiers supérieurs ou égaux à 10 est : "
<<nb<<endl;
return 0;
}
Calculer pour une valeur X donnée du type float la valeur numérique d'un polynôme de degré n:
Les valeurs des coefficients An, ... , A0 seront entrées au clavier et mémorisées dans un tableau A de type float et de dimension n+1.
a) Utilisez la fonction pow() pour le calcul.
b) Utilisez le schéma de Horner qui évite les opérations d'exponentiation:
#include
#include
main()
{
float A[20];/* tableau des coefficients de P */
int I; /* indice courant */
int N; /* degré du polynôme */
float X; /* argument */
float P; /* résultat */
/* Saisie du degré N et de l'argument X */
printf("Entrer le degré N du polynôme (max.20) : ");
scanf("%d", &N);
printf("Entrer la valeur X de l'argument : ");
scanf("%f", &X);
/* Saisie des coefficients */
for (I=0 ; I
{
printf("Entrer le coefficient A%d : ", I);
scanf("%f", &A[I]);
}
/* a) Calcul à l'aide de pow
for (P=0.0, I=0 ; I
P += A[I]*pow(X,I); */
/* b) Calcul de Horner */
for (P=0.0, I=0 ; I
P = P*X + A[I];
/* Edition du résultat */
printf("Valeur du polynôme pour X = %.2f : %.2f\n", X, P);
return 0;
}