cs_SniPi
Messages postés12Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention 3 février 2003
-
27 janv. 2003 à 12:13
tischon
Messages postés1Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention19 janvier 2005
-
19 janv. 2005 à 23:49
Voilà tout d'abord bonjour à tous, je viens de m'inscrire sur ce site et c'est ma première apparition ( mais pas la dernère).
En fait j'ai un problème avec le langage C, mon professeur d'IUT nous a demander de créer un tableau, or nous n'avons jamais eu de cours sur les tableaux, bref, c'est assez difficile de faire quelque chose que nous ne connaissons pas et c'est pourquoi j'aimerais un petit peu d'aide de votre part.
Voici le Tp que mon prof m'a donné, j'aimerais qu'on me donne de l'aide afin que je puisse faire ce TP, car je n'y comprends vraiment pas grand chose, je suis donc tout à votre écoute pour toutes informations ( en langage C ca serai sympa) concernant ce TP.
MERCI d'AVANCE
Cahier des charges du TP
Le but de ce TP est de remplir un tableau d'entiers ( de différentes façons), d'afficher différents paramètres issus du tableau, de rechercher unevaleur ds le tableau trié ds l'ordre croissant.
Le tableau aura une taille de 10.
Les différentes étapes ci-dessous se déroulent de façon séquentielle.
a/ Le remplissage.
L'utilisateur dispose de trois options pr remplir ce tableau :
1/ Saisir 10 valeurs.
2/Saisir une valeur max. , le prog remplit alors automatiquement le tableau avec des valeurs aléatoires inf ou égales à la valeur max. saisie. Il peut y avoir des doublons.
3/Remplir automatiquement le tableau avec tous les entiers compris entre 1 et 10 rangés ds un ordre aléatoire . Il ne peut donc pas y avoir de doublons.
Après le remplissage, le tableau est affiché.
b/Affichage de différentes paramètres.
On affichera la somme des éléments, le min, le max, ainsi que la racine de la sommee des carrés des composantes ( la norme d'un vecteur, en fait).
c/ Recherche d'une valeur.
L'utilisateur saisit une valeur entière et le programme lui dit si elle appartient au tableau et si oui, à quel indice elle se trouve.
En cas de doublons, elle donne tous les indices.
d/Tri.
Ensuite, le tableu est trié ds l'ordre croissant et affiché.
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 27 janv. 2003 à 21:37
Salut, bon, comme toi je suis étudiant en IUT informatique, j'ai pas encore vu les tableaux en C++ , ce sera en deuxièe année, nous on utilise la STL, c beaucoup mieux. Mais pour le fun je me suis penché sur ce petit prog.
Voici ce que j'ai tapé.
#include
#include <stdio.h>
#include <stdlib.h>
int Somme(int Tab[]);
int Min(int Tab[]);
int Max(int Tab[]);
double Racine(int Tab[]);
void Affiche(int Tab[]);
void Trier(int Tab[]);
int main()
{
int TableauDesResultats[10];
unsigned int key;
cout << "TP sur les tableaux" << endl;
cout << "a -> Saisir 10 valeurs" << endl;
cout << "b -> Saisir une valeur max" << endl;
cout << "c -> Remplir automatiquement le tableau" << endl;
cout << "q -> Quitter" << endl;
cout << "Entrez un choix puis appuyez sur entree" << endl;
while((key=getchar())!='q')
switch(key)
{
case 'a':
for(int i=0; i<10; cin>>TableauDesResultats[i], ++i){}
cout << endl << "Voici les éléments du tableau";
Affiche(TableauDesResultats);
cout << "La Valeur Min du tableau est " << Min(TableauDesResultats) << endl;
cout << "La valeur Max du tableau est " << Max(TableauDesResultats) << endl;
cout << "La racine de la sommee des carrés des composantes est " << Racine(TableauDesResultats) << endl;
Trier(TableauDesResultats);
cout << "Voici le tableau trié" << endl;
Affiche(TableauDesResultats);
cout << "Appuyez sur \'q\' pour quitter"<< endl;
break;
case 'b':
int max;
cin>>max;
for(int i=0;i<10;TableauDesResultats[i]=random(max), ++i){}
cout << endl << "Voici les éléments du tableau";
Affiche(TableauDesResultats);
cout << "La Valeur Min du tableau est " << Min(TableauDesResultats) << endl;
cout << "La valeur Max du tableau est " << Max(TableauDesResultats) << endl;
cout << "La racine de la sommee des carrés des composantes est " << Racine(TableauDesResultats) << endl;
Trier(TableauDesResultats);
cout << "Voici le tableau trié" << endl;
Affiche(TableauDesResultats);
cout << "Appuyez sur \'q\' pour quitter"<< endl;
break;
case 'c':
for(int i=0; i<10;TableauDesResultats[i]=10, i++)
{}
int j;
for(int i=0; i<10;i++)
{
do
{
j=random(10);
}while(TableauDesResultats[j]!=10);
TableauDesResultats[j]=i;
}
cout << endl << "Voici les éléments du tableau";
Affiche(TableauDesResultats);
cout << "La Valeur Min du tableau est " << Min(TableauDesResultats) << endl;
cout << "La valeur Max du tableau est " << Max(TableauDesResultats) << endl;
cout << "La racine de la sommee des carrés des composantes est " << Racine(TableauDesResultats) << endl;
Trier(TableauDesResultats);
cout << "Voici le tableau trié" << endl;
Affiche(TableauDesResultats);
cout << "Appuyez sur \'q\' pour quitter"<< endl;
break;
}
return 0;
}
J'ai testé le code et ca marche normalement. La méthode de trie que j'ai utilisé est le trie itératif vu qu'il y a pas beaucoup de valeurs a trier. Au niveau clarté du code je me suis pas embetter, on pe alleger un pe ca au niveau des cout. Voila, j'espère que cela te convient, ne soit pas trop critique, j'ai écris ce code en un peu plus de 30 min. Au faut, t'es a quel IUT, moi j'suis de La Rochelle.
Alé bonne chance pour ton TP.
Bouba
cs_SniPi
Messages postés12Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention 3 février 2003 27 janv. 2003 à 22:05
Je ne vais pas être critiques, mais j'avoue ne pas trop comprendre ce que tu as fait car je travail en C, donc je ne comprends pas tout les case, switch..pourrai tu me dire par quoi je dois les remplacer afin que je puisse m'y retrouver.
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 27 janv. 2003 à 22:18
En fait switch n'est pas réservé au C++, d'ailleur c'est le C qui est originaire de cette instruction conditionelle.
En résumé si tu fé
unsigned int key;
switch(key)
{
case 'a':
break;
case 'b':
break;
case 'c':
break;
}
Ca équivaut a
unsigned int key;
if(key=='a)
{
}
if(key=='b')
{
}
if(key=='c')
{
}
Voila, tu devrais piger avec ca. Au fait, j'ai oublié de faire la fonction qui recherche une valeur et donne l'indice de la position a laquelle elle se trouve, si tu as du mal à la rédiger répond a mon msg et demande moi.
Alé, a+.
Bonne Prog.
Bouba.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_SniPi
Messages postés12Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention 3 février 2003 27 janv. 2003 à 22:28
Alors je n'y suis pas du tout..jsuis carement perdu ds cke tu as fait, car moi je viens de commencer ya pas lgtps le C, et donc je travail encor eavec les printf, scanf, getch(), et les boucles...
J'ai essayer de changer quelques truks histoire de m'y retrouver mais ca me sors une liste assez enorme d'erreurs.
int Somme(int Tab[]);
int Min(int Tab[]);
int Max(int Tab[]);
double Racine(int Tab[]);
void Affiche(int Tab[]);
void Trier(int Tab[]);
int main()
{
int TableauDesResultats[10];
unsigned int key;
printf("TP sur les tableaux\n");
printf("a -> Saisir 10 valeurs\n");
printf("b -> Saisir une valeur max\n");
printf("c -> Remplir automatiquement le tableau\n");
printf("q -> Quitter\n");
printf("Entrez un choix puis appuyez sur entree\n");
while((key=getch())!='q')
switch(key)
{
case 'a':
printf("\nEntrez 10 valeurs\n");
for(int i=0; i<10;scanf("%d",&TableauDesResultats[i]), ++i){}
printf("\nVoici les éléments du tableau\n");
Affiche(TableauDesResultats);
printf("La Valeur Min du tableau est %d",Min(TableauDesResultats));
printf("\nLa valeur Max du tableau est %d",Max(TableauDesResultats));
printf("\nLa racine de la sommee des carrés des composantes est %d",Racine(TableauDesResultats));
Trier(TableauDesResultats);
printf("\nVoici le tableau trié\n");
Affiche(TableauDesResultats);
printf("Appuyez sur \'q\' pour quitter\n");
break;
case 'b':
int max;
printf("\nEntrez la valeur max\n");
scanf("%d",&max);
for(int i=0;i<10;TableauDesResultats[i]=random(max), ++i){}
printf("\nVoici les éléments du tableau\n");
Affiche(TableauDesResultats);
printf("La Valeur Min du tableau est %d",Min(TableauDesResultats));
printf("\nLa valeur Max du tableau est %d",Max(TableauDesResultats));
printf("\nLa racine de la sommee des carrés des composantes est %d",Racine(TableauDesResultats));
Trier(TableauDesResultats);
printf("\nVoici le tableau trié\n");
Affiche(TableauDesResultats);
printf("Appuyez sur \'q\' pour quitter\n");
break;
case 'c':
for(int i=0; i<10;TableauDesResultats[i]=10, i++)
{}
int j;
for(int i=0; i<10;i++)
{
do
{
j=random(10);
}while(TableauDesResultats[j]!=10);
TableauDesResultats[j]=i;
}
printf("\nVoici les éléments du tableau\n");
Affiche(TableauDesResultats);
printf("La Valeur Min du tableau est %d",Min(TableauDesResultats));
printf("\nLa valeur Max du tableau est %d",Max(TableauDesResultats));
printf("\nLa racine de la sommee des carrés des composantes est %d",Racine(TableauDesResultats));
Trier(TableauDesResultats);
printf("\nVoici le tableau trié\n");
Affiche(TableauDesResultats);
printf("Appuyez sur \'q\' pour quitter\n");
break;
}
return 0;
}
cs_SniPi
Messages postés12Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention 3 février 2003 27 janv. 2003 à 23:06
En fait sur ce fichie il y a 4 erreurs que je n'arrive pas à corriger.
C'est a dire, qu'il me mets que INT_MAX et INT_MIN sont pas définis et pour case'b' ry case'c' il me dit : cases bypasses initialisation of a local variable...
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 27 janv. 2003 à 23:15
Bon, pour les INT_MAX et INT_MIN c'est que tu as du oublier le header
#include
Si ca marche pas fais ca au début de ton prog
#define INT_MAX 32768
#define INT_MIN -32768
La syntaxe du switch c'est
swicth(key)
{
case 'b' :
........
break;
............
...........
.........
}
Sinon, dis moi quelle compilateur tu utilises exactement.
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 27 janv. 2003 à 23:23
En bien moi j'utilise Borland C++ 5.5 alors ca devrait marcher!!!!!
Alé a+.
Encore une fois si tu as d'autres questions y'a pas de blem mais ce sera pour demain maintenant.
Bonne Prog.
Bouba