Exercices,langage C

Messages : 19

Enregistré le : 05 déc. 2014 15:52

Exercices,langage C

Message par Marvin45 » 06 déc. 2014 16:46

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);

Messages : 155

Enregistré le : 16 mai 2014 03:37

Localisation : Paris

Re: Exercices,langage C

Message par Taupelvl » 06 déc. 2014 16:55

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!
Take a look at your friends. If you don’t think you could pull off a decent white-collar crime together, it’s time to make some replacements..

Messages : 19

Enregistré le : 05 déc. 2014 15:52

Re: Exercices,langage C

Message par Marvin45 » 06 déc. 2014 19:22

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?

Messages : 155

Enregistré le : 16 mai 2014 03:37

Localisation : Paris

Re: Exercices,langage C

Message par Taupelvl » 06 déc. 2014 19:32

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.
Take a look at your friends. If you don’t think you could pull off a decent white-collar crime together, it’s time to make some replacements..

Messages : 15

Enregistré le : 23 juil. 2014 05:52

Classe : MP*

Re: Exercices,langage C

Message par marredeminorer » 06 déc. 2014 21:40

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);
}
2014-2015 : MP*

Messages : 19

Enregistré le : 05 déc. 2014 15:52

Re: Exercices,langage C

Message par Marvin45 » 06 déc. 2014 22:04

Ahh ok,merci beaucoup pour tes conseils Taupelvl et pour ce lien intéressant :)

Messages : 90

Enregistré le : 21 nov. 2014 13:37

Re: Exercices,langage C

Message par Yodsanklai » 06 déc. 2014 22:17

Pour moi, c'est hors sujet ici. Je te conseille d'aller plutôt sur un forum d'informatique.

Mais, quelques conseils quand même :
- tes programmes ne compilent pas, ils ne sont même pas syntaxiquement correct. Tu as un outil qui s'appelle un compilateur qui peut déjà vérifier automatiquement que ton programme n'est pas trop faux. Si c'est pour écrire des programmes sur papier, autant faire du pseudo-code
- tes programmes ne sont pas indentés. L'indendation te renseigne en un coup d'oeil sur certaines propriétés du programme, et s'il n'y a pas d'erreur de syntaxe évidentes. Si tu n'indentes pas, tu rends ton programme plus difficile à lire et à comprendre pour tout le monde.

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.

Messages : 155

Enregistré le : 16 mai 2014 03:37

Localisation : Paris

Re: Exercices,langage C

Message par Taupelvl » 07 déc. 2014 04:13

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.
Take a look at your friends. If you don’t think you could pull off a decent white-collar crime together, it’s time to make some replacements..

Messages : 90

Enregistré le : 21 nov. 2014 13:37

Re: Exercices,langage C

Message par Yodsanklai » 07 déc. 2014 14:10

Taupelvl a écrit :
Taupelvl a écrit :
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.
Il y a pas mal de raisons. En vrac :
- la syntaxe est compliquée. Tout ce qui concerne les pointeurs, et notamment les déclarations (exemple "char * const (*(* const bar)[5])(int )" ). Alors qu'on aimerait une syntaxe consistante du style "type variable". Par exemple int[10] x plutôt que int x[10]. Les opérateurs logiques sont compliqués. Syntaxe du for source d'erreur (on doit écrire 3 fois l'indice de boucle)
- Le typage est faible. Le langage ne protège pas ses propres abstractions. Et beaucoup d'erreur de type ne sont pas détectées par défaut on ne donnent lieu qu'à des warnings que les étudiants ne comprennent pas ou ignorent. Les booléens sont des entiers etc...
- Les pointeurs (et l'arithmétique de pointeurs). Les pointeurs et leur syntaxe sont une grosse source d'erreur en C, et même un débutant y est rapidement confronté comme on le voit ici avec le scanf.
- gestion manuelle de la mémoire source d'erreur.
- ... et plein d'autre chose.

Bref, c'est un langage de bas niveau adapté à certaines applications mais pas à l'apprentissage de la programmation. Mieux vaut privilégier un langage qui dispose d'abstractions de plus haut niveau et qui détecte plus d'erreurs à la compilation. Pascal et Ada sont plus adaptés si on veut faire de l'impératif (et même OCaml d'ailleurs). Python est bien aussi. Le typage est fort, mais dynamique. Donc les erreurs de types sont détectées à l'éxecution, ce qui est un peu moins commode je trouve.

C a sa place, mais dans un deuxième temps, pour des informaticiens. On pourra toujours dire qu'un débutant peut n'utiliser qu'un sous-ensemble du C, mais en pratique, il est très rapidement confronté à des choses un peu compliquées ou perturbantes.

On entend parfois des arguments pro-C avec lesquels je ne suis pas d'accord (notamment des geeks style "42")
- "Le modèle d'exécution du C est plus proche du matériel et du système d'exploitation", donc il faudrait commencer par la pour comprendre les langages de plus haut-niveau.

Les systèmes informatiques sont construits sous forme de "couches" qui permettent justement de s'abstraire du matériel et concevoir des choses de plus en plus compliquées. Il n'y a pas de raison de travailler à un niveau d'abstraction plutôt qu'à un autre. Surtout si ce que l'on veut apprendre ce sont des algorithme et des structures de donnée, je ne vois pas pourquoi il faudrait se contraindre à faire des appels systèmes etc...

- Le langage C est rapide.
Ça aussi c'est anecdotique. D'une part, c'est de moins en moins vrai, et de moins en moins important, et ça ne va pas concerner les débutants en programmation. Un "bon" programme est un programme correct et facile à maintenir, "rapide" est de moins en moins un critère prédominant, et quand c'est le cas, c'est plus une question d'algorithmes utilisés que de langage.

Concernant le controle de la mémoire, il est manuel en C (les structures allouées avec "malloc" sur le tas devraient être libérées pour éviter des fuites de mémoire). Dans la plupart des langages modernes, l'environnement d'execution inclus un ramasse-miette (garbage collector) qui s'en occupe. Sauf cas spéciaux, c'est toujours mieux d'avoir une gestion automatique de la mémoire (pour simplifier l'écriture, la lisibilité, la correction et la maintenance des programme).

Messages : 19

Enregistré le : 05 déc. 2014 15:52

Re: Exercices,langage C

Message par Marvin45 » 07 déc. 2014 16:11

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.

Répondre