Page 1 sur 2

Exercices,langage C

Publié : 06 déc. 2014 16:46
par Marvin45
Bonjour,j'ai fais des exercices en C et je voulais savoir si ce que j'ai fait est bon .
Les voici :
1)Ecrire un programme qui saisit 6 entiers et les stocke dans un tableau, puis affiche le contenu de
ce tableau une fois qu’il est rempli.
b)Reprendre la partie saisie du programme précédent pour écrire un nouveau programme qui recherche
et affiche le plus grand élément du tableau.
2)
Ecrire un programme qui saisit un tableau de 6 entiers puis calcule la moyenne de ces six entiers.
Attention, la moyenne des entiers n’est pas un entier

Et voici ce que j'ai écris :
1)
#include<stdio.h>
main()
{
int tab[6],i
for(i=0,i<6,i++);
{
printf("Entrer un nombre ");
scanf("%d",tab);
for(i=0,i<6,i++)
printf("voici le tableau :"%d\n",tab);

b)
On appellera le maximum max.
#include<stdio.h>
main()
{
int tab[6],i,max
max=tab[0];
for(i=0,i<6,i++);
{
printf("Entrer un nombre ");
scanf("%d",tab);

for (int i =1; i<6; i++){
if (table > max){
max = table;
printf(" le maximum est :"%d\n",max);

2)
#include<stdio.h>
main()
{
int tab[6],i,M,S
M=tab[0]
S=tab[0]
for(i=0,i<6,i++);
{
printf("Entrer un nombre ");
scanf("%d",tab);
for (int i = 0; i<6; i++)
{
S=S+tab;
M=S/6;
printf(" la somme est :"%d\n",S);
printf(" la moyenne est :"%d\n",M);

Re: Exercices,langage C

Publié : 06 déc. 2014 16:55
par Taupelvl
a) il te manque les & dans les fonctions scanf il me semble et n'oublie pas de fermer toutes tes boucles sinon ton programme plante.(valable aussi pour les autres programmes)
b)il faudra fermer ta boucle for, ensuite afficher le max.
2/Même chose que ce qui précède en plus du fait que M doit être défini en tant que long ( pas forcément entier comme indiqué)

ps: le C n'est pas au programme des prépas au cas où tu ne saurais pas.
Bonne chance!

Re: Exercices,langage C

Publié : 06 déc. 2014 19:22
par Marvin45
Ah oui merci,j'ai oublié les & mince,mais je suivrais tes conseils.
Ah bon,mon profs ne nous a pas expliqué ce que c'est qu'un long,un short ou...
Je ne vois jamais ça dans les programmes qu'on fais en cours ,mais souvent sur le net.

Pour le b) je pensais que le max s'affichait avec : printf(" le maximum est :"%d\n",max); c'est bizarre.
Ce forum est uniquement réservé aux prépas?

Re: Exercices,langage C

Publié : 06 déc. 2014 19:32
par Taupelvl
Marvin45 a écrit : Ah bon,mon profs ne nous a pas expliqué ce que c'est qu'un long,un short ou...
http://www.commentcamarche.net/contents ... de-donnees
Tu peux utiliser un "long" ou "float" pour définir ta variable M puisqu'elle ne contiendra pas toujours un entier .
Pour le b) je pensais que le max s'affichait avec : printf(" le maximum est :"%d\n",max); c'est bizarre.
en effet, tu n'as pas tort; je précisais juste qu'il fallait d'abord fermer la boucle for, ensuite mettre le printf ( on cherche le max et à la fin on l'affiche mais seulement à la fin).
Ce forum est uniquement réservé aux prépas?
Non,pas du tout, mais je fais la remarque au cas où tu serais en prépa ( ce qui ne semble pas être le cas à priori) ou qu'un taupin passe par ici. ( sisi ça arrive)

Voilà, bonne chance.

Re: Exercices,langage C

Publié : 06 déc. 2014 21:40
par marredeminorer
Je pense qu'il y'a aussi une petite erreur dans 1.b :) il faut écrire max=tab[0] après la saisie du tableau :

#include<stdio.h>
void main(){
int tab[6],i,max;
for(i=0;i<6;i++){
printf("Entrer un nombre ");
scanf("%d",&tab)}
max=tab[0];
for ( i =1; i<6; i++){
if (tab > max){
max = tab;}}
printf(" le maximum est :%d \n",max);
}

Re: Exercices,langage C

Publié : 06 déc. 2014 22:04
par Marvin45
Ahh ok,merci beaucoup pour tes conseils Taupelvl et pour ce lien intéressant :)

Re: Exercices,langage C

Publié : 07 déc. 2014 04:13
par Taupelvl
Yodsanklai a écrit : Le C est quand même un mauvais langage pour apprendre la programmation. Je me demande pourquoi certaines fac/écoles s'obstinent à faire ce choix.
C'est un peu hors sujet mais pourquoi ? Je pense au contraire qu'il est beaucoup mieux structuré que certains langages dits 'pédagogiques' type Python et autres où la gestion des types et le contrôle de mémoire laisse quand un peu à désirer. M'enfin c'est un autre débat. Pour clore ce sujet voici un compilateur en ligne ( gratuit) si tu ne voulais pas installer un compilateur :http://ideone.com/
Comme dit plus haut, c'est plus simple de vérifier soit-même si son programme marche ou pas du coup.

Re: Exercices,langage C

Publié : 07 déc. 2014 16:11
par Marvin45
marredeminorer a écrit :Je pense qu'il y'a aussi une petite erreur dans 1.b :) il faut écrire max=tab[0] après la saisie du tableau :

#include<stdio.h>
void main(){
int tab[6],i,max;
for(i=0;i<6;i++){
printf("Entrer un nombre ");
scanf("%d",&tab)}
max=tab[0];
for ( i =1; i<6; i++){
if (tab > max){
max = tab;}}
printf(" le maximum est :%d \n",max);
}


Effectivement marredeminorer ,tu étais réveillé là,c'est sûr^^,merci en tout cas.

Re: Exercices,langage C

Publié : 08 déc. 2014 13:48
par fakbill
Apprendre le C sur papier c'est predre son temps.
Il faut absolument tenter de compiler ses programmes et comprendre les erreurs renvoyées par le compilateur pour progresser.
Soit on fait ca soit on fait du pseudocode. Un truc "sur papier entre les deux" n'a aucun sens.

Le choix du lanage est limite un troll.
****Ca dépend de ce qu'on veut enseigner*****
Si on veux ensegner à qlqn une facon rapide de traiter des données de tous types de facon raisonnable alors python ou matlab ou un truc du genre est un BON choix. http://matplotlib.org/gallery.html#

Si on veut former des gens capable de comprendre comment un system embarqué marche dans le détail et comment, par exemple, python ou un OS simple fonctionne alors là oui il faut faire du C.

Pour ce qui est du typage, python a une approche *pragmatique* (comme toujours avec ce langage) :
Si l'objet passé en paramètre offre les bonnes méthodes alors c'est ok. On se fiche de son type exact. C'Est ce qu'on appelle le "Duck-Typing" et c'est une approche tout aussi valable que les templates à la C++ typé fort.

Pour ce qui est de la gestion de la mémoire c'est pareil : Ca dépend du but. Si on est sur un petit système embarqué, on va vouloir, le plus souvent, avoir une gestion fine de la mémoire. Cependant, on envoie des robots sur mars qui fonctionne avec un sous ensemble de JAVA. L'idée étant qu'on fait plus confiance dans un JRE simple que dans l'humain (+outils pour vérifier) pour gérer la mémoire. Là encore, c'est une question de choix en fonction de ce qu'on veut faire.

Re: Exercices,langage C

Publié : 08 déc. 2014 19:46
par fakbill
Oui, mais ici on veut enseigner les bases de la programmation. Itérations, instructions conditionnelles, types de données simples. Et pour ça, C est un mauvais langage parce qu'il cumule les difficultés et se situe à un niveau d'abstraction de trop bas niveau. On ne parle pas encore de faire du traitement de données, programmer des compilateurs ou des systèmes embarquées. Ça, ça vient des années plus tard.
On est d'accord que le C est un mauvais langage pour des débutants.
Par contre SI !!! on parle de faire du traitement simple de données. Trouver le max d'un tableau c'est savoir trouver le max dans un jeu de données de la vraie vie...pour peu qu'on sache aussi lire le fichier d'input sans passer deux jours à coder.


Pas la peine de me refaire un cours de typage ;) Je ne vois pas ce qu'il y a de faux dans ce que je dis. Je dis juste que le C (ou le C++) et le python ont deux approches radicalement différentes dans la façon de gérer le typage.

Le duck typing c'est aussi simple que : "on ne vérifie pas le type mais seulement le fait que la méthode invoquée existe au moment". On se fiche le plus souvent du type en python. Ce qui compte c'est ce que l'objet *sait* faire *au moment* où on lui demande de le faire.
Le concept de "strongly typed" n'a pas trop de sens dans le contexte de python. D'ailleurs, wiki le dit très bien :
"The object-oriented programming languages Smalltalk, Ruby, Python, and Self are all "strongly typed" in the sense that typing errors are prevented at runtime and they do little implicit type conversion, but these languages make no use of static type checking: the compiler does not check or enforce type constraint rules. The term duck typing is now used to describe the dynamic typing paradigm used by the languages in this group."