tableau sos

8 réponses
Avatar
debutant
Bonjour, je suis encore un débutant en langage c, alors soyez un peu sympa.
Voici mon problème, construire un tableau int T[5]={0,2,-4,9,-6} et afficher le contenu, je dois mettre les nombres positifs dans un tableau nommé TPOS et les nombres négatifs dans un tableau nommé TNEG puis afficher le contenu de ces 2 tableaux.
Je suis arrivé à afficher le contenu de ces 2 tableaux mais il y a d'autres nombres qui apparaissent après ou avant chaque nombre.

8 réponses

Avatar
Jean-Marc Bourguet
debutant writes:

Bonjour, je suis encore un débutant en langage c, alors soyez un peu
sympa. Voici mon problème, construire un tableau int T[5]={0,2,-4,9,-6}
et afficher le contenu, je dois mettre les nombres positifs dans un
tableau nommé TPOS et les nombres négatifs dans un tableau nommé TNEG
puis afficher le contenu de ces 2 tableaux. Je suis arrivé à afficher le
contenu de ces 2 tableaux mais il y a d'autres nombres qui apparaissent
après ou avant chaque nombre.



Montre ce que tu as fait. C'est assez difficile de t'aider sans cela.

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
Marc Boyer
Le 30-06-2010, debutant a écrit :
Bonjour, je suis encore un débutant en langage c, alors soyez un peu sympa.
Voici mon problème, construire un tableau int T[5]={0,2,-4,9,-6} et afficher le
contenu, je dois mettre les nombres positifs dans un tableau nommé TPOS et les
nombres négatifs dans un tableau nommé TNEG puis afficher le contenu de ces 2
tableaux.



Bon, tu pourrais signaler à ton enseignant (car ça ressemble à un exercice
de TP très fortement) qu'en C professionnel, on réserve les identifiants
toutes en majuscules aux macros.

Je suis arrivé à afficher le contenu de ces 2 tableaux mais il y a d'autres
nombres qui apparaissent après ou avant chaque nombre.



Ben, montre nous déjà ce que tu es arrivé à faire. A priori, il te manque
un compteur pour la taille effective de chaque tableau (qui vient
de cette grande difficulté des débutants à réaliser que le vide n'existe
pas dans un tableau).

Marc Boer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Avatar
xtof pernod
Le 30/06/2010 17:20, debutant a fait rien qu'à écrire:
Bonjour, je suis encore un débutant en langage c, alors soyez un peu sympa.



Pourquoi, c'est pas le genre de la maison, d'habitude ? =)

Voici mon problème, construire un tableau int T[5]={0,2,-4,9,-6} et afficher le
contenu, je dois mettre les nombres positifs dans un tableau nommé TPOS et les
nombres négatifs dans un tableau nommé TNEG puis afficher le contenu de ces 2
tableaux.
Je suis arrivé à afficher le contenu de ces 2 tableaux mais il y a d'autres
nombres qui apparaissent après ou avant chaque nombre.



Certainement un problème d'indice.. Il en faut un par tableau, si tu as
fais autrement, ça peut expliquer les valeurs 'parasites'.

Au passage: ne met pas les noms de variables en majuscule (mais mets-en une
à 'C'), comme le veut l'usage


Maintenant, sans le code source.. Mais tu as bien raison: ne demande pas des
corrections, mais des 'tuyaux' comme tu l'as fait, l’exercice sera bien plus
profitable !

--
christophe.
Avatar
-ed-
On 30 juin, 17:33, Marc Boyer
wrote:

  Bon, tu pourrais signaler à ton enseignant (car ça ressemble à un exercice
de TP très fortement) qu'en C professionnel, on réserve les identifia nts
toutes en majuscules aux macros.



Ce qui est faux évidemment. Ce sont les constantes qu'il est d'usage
de mettre en majuscule. Une constante n'est pas forcément une macro
(enum) et une macro n'est pas forcément une constante (assert(), par
exemple ...).

Bref, un peu de rigueur dans le discours ne peut pas nuire...
Avatar
Jean-Marc Bourguet
-ed- writes:

On 30 juin, 17:33, Marc Boyer
wrote:

>   Bon, tu pourrais signaler à ton enseignant (car ça ressemble à un exercice
> de TP très fortement) qu'en C professionnel, on réserve les identifiants
> toutes en majuscules aux macros.

Ce qui est faux évidemment. Ce sont les constantes qu'il est d'usage
de mettre en majuscule. Une constante n'est pas forcément une macro
(enum) et une macro n'est pas forcément une constante (assert(), par
exemple ...).

Bref, un peu de rigueur dans le discours ne peut pas nuire...



La rigueur serait de dire que les deux pratiques (soit seules les macros,
soit les macros et les constantes) sont observees en C avec un rapport
45/45 dans mon experience (les 10% qui manquent sont pour les regles de
codage plus complexe et leur absence totale). Il arrive aussi parfois que
les prefixes de modules ne respectent pas cette regle (i.e. un module ayant
pour prefixe md aura ses macros -- et eventuellement ses constantes --
mdFOO plutot que le MD_FOO utilise par ceux qui l'applique aussi aux
prefixes de module). En passant, en C++ le ratio est plutot 75/15 pour le
respect (si on exclus les noms d'une lettre en majuscule qui sont aussi
souvent utilises comme parametre template).

La raison justifiant des conventions de nommage separant clairement les
noms macros des autres identificateurs, c'est que les noms de macros ne
respectent pas les regles de portee habituelle.

En passant, le cas present d'une variable en majuscule, c'est hors de toute
convention connue.

A+

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
debutant
Jean-Marc Bourguet a écrit le 01/07/2010 à 15h17 :
-ed- writes:

On 30 juin, 17:33, Marc Boyer
wrote:

>   Bon, tu pourrais signaler à ton enseignant (car ça
ressemble à un exercice
> de TP très fortement) qu'en C professionnel, on réserve les
identifiants
> toutes en majuscules aux macros.

Ce qui est faux évidemment. Ce sont les constantes qu'il est d'usage
de mettre en majuscule. Une constante n'est pas forcément une macro
(enum) et une macro n'est pas forcément une constante (assert(), par
exemple ...).

Bref, un peu de rigueur dans le discours ne peut pas nuire...




La rigueur serait de dire que les deux pratiques (soit seules les macros,
soit les macros et les constantes) sont observees en C avec un rapport
45/45 dans mon experience (les 10% qui manquent sont pour les regles de
codage plus complexe et leur absence totale). Il arrive aussi parfois que
les prefixes de modules ne respectent pas cette regle (i.e. un module ayant
pour prefixe md aura ses macros -- et eventuellement ses constantes --
mdFOO plutot que le MD_FOO utilise par ceux qui l'applique aussi aux
prefixes de module). En passant, en C++ le ratio est plutot 75/15 pour le
respect (si on exclus les noms d'une lettre en majuscule qui sont aussi
souvent utilises comme parametre template).

La raison justifiant des conventions de nommage separant clairement les
noms macros des autres identificateurs, c'est que les noms de macros ne
respectent pas les regles de portee habituelle.

En passant, le cas present d'une variable en majuscule, c'est hors de toute
convention connue.

A+

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org


bon c'est encore moi, le débutant du tableau. J'ai réussi l'épreuve du tableau mais bon, disons que c'est assez inachevé. Le problème est que, il ya des valeurs parasites lorsque je separe les nombres positifs des nombres négatifs alors voici mon programme, (j'ai oublier mon flash et je vais essayer de le refaire domage que ce cyber ne possède pas de compilateur)

#include<stdio.h>
#include<stdlib.h>
void main(){
int t[6]={1,-2,-7,4,9,-9};
int tneg[6], tpos[6], i;

for(i=0;i<5;i++){
if(t[i]<0){
tneg[i]=t[i];
tpos[i]=0;/*pour éviter les valeurs du genre -2154546864 lors de l'affichage)*/
}
else{
tpos[i]=t[i];
tneg[i]=0;
}
}
for(i=0;i<5;i++){
printf("%i ",tpos);
}
for(i=0;i<5;i++){
printf("n%i ",tneg);
}
}
Avatar
Samuel DEVULDER
debutant a écrit :
bon c'est encore moi, le débutant du tableau. J'ai réussi l'épreuve du tableau



Réussi? Je n'irais pas jusque là.

mais bon, disons que c'est assez inachevé. Le problème est que, il ya des
valeurs parasites



Oui donc c'est pas réussi. Tes tableaux affiche des choses qui
n'existent pas dans le tableau initial. C'est pas ce que qui est demandé.

lorsque je separe les nombres positifs des nombres négatifs
alors voici mon programme, (j'ai oublier mon flash et je vais essayer de le
refaire domage que ce cyber ne possède pas de compilateur)

#include<stdio.h>
#include<stdlib.h>
void main(){
int t[6]={1,-2,-7,4,9,-9};
int tneg[6], tpos[6], i;

for(i=0;i<5;i++){



Déjà un soucis.. on ne lit jamais t[5] vu le test sur la boucle for().
Tu devrais utiliser un "i<=5", ou plus courant "i<6", le 6 venant de la
déclaration du tableau:

#define SIZE 6

int t[SIZE]= {...};
...
for(i=0; i<SIZE; i++) { ...


if(t[i]<0){
tneg[i]=t[i];
tpos[i]=0;/*pour éviter les valeurs du genre -2154546864 lors de
l'affichage)*/



Eviter les valeurs non initialisées en fait. Mais est-ce que c'est ce
que tu voulais vraiment faire? Voulais tu mettre un 0 aux indices i pour
lesquels t[i] est négatif? Je ne pense pas.

Tu ne voulais pas plutôt mettre dans tpos toutes les valeurs positives
ou nulles du tableau? Dans ce cas il n'y a pas de raisons de copier par
exemple t[1] dans tpos[1], t[2] dans tneg[2] (plus généralement t[i]
dans tpos[i]/tneg[i]). Il se peut que t[1] arrive dans tpos[0], par
exemple si t[0] est négatif.

Si tu veux mon avis, il te faut deux autres index supplémentaire en plus
de /i/. Un par tableau tpos/tneg indiquant le prochain indice où écrire
la valeur suivante.

}
else{
tpos[i]=t[i];
tneg[i]=0;
}
}
for(i=0;i<5;i++){
printf("%i ",tpos);
}
for(i=0;i<5;i++){
printf("n%i ",tneg);
}



Tu n'as pas l'impression que ca n'affiche pas le bon nombre d'éléments.
Le -9 final n'apparait pas.

sam.
Avatar
FX
Samuel DEVULDER a écrit :
debutant a écrit :
#include<stdio.h>
#include<stdlib.h>
void main(){
int t[6]={1,-2,-7,4,9,-9};
int tneg[6], tpos[6], i;


...
for(i=0;i<5;i++){
printf("%i ",tpos);
}
for(i=0;i<5;i++){
printf("n%i ",tneg);
}



Tu n'as pas l'impression que ca n'affiche pas le bon nombre d'éléments.
Le -9 final n'apparait pas.



Et il manque l'indice des tableaux dans les printf (tpos[i], tneg[i]).
Mais j'imagine que ce n'était pas dans ton prog initial et que c'est une
erreur de recopie.

C'est fait exprès d'afficher tous les nombres positifs sur une ligne
mais chaque nombre négatif sur sa propre ligne? Sinon, écrit:

for(i=0;i<tpos_size;i++){
printf("%i ",tpos|i]);
}
printf("n");
for(i=0;i<tneg_size;i++){
printf("%i ",tneg[i]);
}

tpos_size et tneg_size étant les indices dont parlait Sam.