Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ce qui est imprime n'est pas attendu

3 réponses
Avatar
andre barbaroux
Bonjour à tous,
Voici le début de mon programme, je demande d'entrer 2 chiffres, et de les
imprimer, mais sur la console je vois bien 1 1 que j'ai tapé au scanf:
1 1
abcisse=2293452 ordonnee=2293448

Je m'attendais à trouver 1 et 1 ?, avez-vous une explication.

J'ai donc tenté un petit essai, code plus loin

La aussi resultats étranges
x=2147348481 y=6029364 à l'indice 0
la suite correspond avec plus 1 pour x ; et plus 2 pour y
J'ai alors initialisé "int x et y à 0 "et là ça a fonctionné!!
Je me suis empressé de faire la même chose dans mon programme, c'est à dire
initialiser abcisse et ordonnee a 1, mais vous avez le résultat plus haut,
sur la console. pas probant du tout ;-((
Merci de m'éclairer une fois encore
......................................................................................................................
int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);
printf(" abcisse= %d ordonnee= %d \n" ),abcisse,ordonnee;

...............................................................essai...................................................

#include <stdio.h>
#include <stdlib.h>
int main()
{
int x;
int y;
int i;
for(i=0;i<5;i++)
{
x=x+1;
y=y+2;
printf(" x= %d y= %d indice= %d\n", x,y,i);
}printf(" sortie de boucle indice= %d \n",i); /* sortie de
boucle*/

}

7 réponses

Avatar
Samuel DEVULDER
Le 11/08/2014 18:44, andre barbaroux a écrit :

int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);
printf(" abcisse= %d ordonnee= %d n" ),abcisse,ordonnee;


^^^

Attention, tu as fermé la parenthèse du printf() trop tot! Le code écrit
ne contient pas d'erreur de syntaxe, mais il n'imprimera pas abcisse et
ordonnee puisqu'ils ne sont pas passé en argument. Il imprimera ce qui
traine sur la pile au moment du printf, c'est à dire une peu n'importe
quoi..

Utilises plutôt:
printf(" abcisse= %d ordonnee= %d n",abcisse,ordonnee);
^^^
parenthèse au bout!

a+

sam.
Avatar
andre barbaroux
Merci Samuel de ta prompte réponse !
Effectivement faute corrigée, faute effacée.
Je comprends pourquoi dans mon essai, j'ai une erreur équivalente puisque:
int x; ne réserve que la place en mémoire, et bien sur il faut qu'elle soit
initialisée pour que l'addition signifie quelque chose!
A+

"Samuel DEVULDER" <samuel-dot-devulder-at-laposte-dot-net> a écrit dans le
message de news: 53e9128b$0$2237$
Le 11/08/2014 18:44, andre barbaroux a écrit :

int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);
printf(" abcisse= %d ordonnee= %d n" ),abcisse,ordonnee;


^^^

Attention, tu as fermé la parenthèse du printf() trop tot! Le code écrit
ne contient pas d'erreur de syntaxe, mais il n'imprimera pas abcisse et
ordonnee puisqu'ils ne sont pas passé en argument. Il imprimera ce qui
traine sur la pile au moment du printf, c'est à dire une peu n'importe
quoi..

Utilises plutôt:
printf(" abcisse= %d ordonnee= %d n",abcisse,ordonnee);
^^^
parenthèse au bout!

a+

sam.

Avatar
Antoine Leca
Le 11/08/2014 16:44Z, andre barbaroux écrivit :
int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);



Il y a quelque chose que tu dois apprendre maintenant : en C plus que
dans tout autre langage, il est indispensable de vérifier que les
opérations se sont bien déroulées ; en particulier dans tous les cas où
il est possible que cela ne marche pas, ou encore quand quelque chose ne
marche pas... <pompeux>Le fait qu'en C il soit possible d'ignorer la
valeur de retour d'une fonction est une facilité d'écriture utile
lorsqu'on écrit certains programmes, mais, comme toutes les facilités,
il faut faire attention à ne pas tomber dans la paresse.</pompeux>

En l'occurrence, lire un flux d'entrée et plus généralement utiliser
scanf() est une opération complexe qui nécessite absolument d'être
contrôlée. Le strict minimum serait d'écrire:
if (2 != scanf("%d%d",&abcisse,&ordonnee)) {
perror("scanf abscisse&ordonée");
exit(EXIT_FAILURE);
}

int main()
{
int x;
int y;
int i;
for(i=0;i<5;i++)
{
x=x+1;
y=y+2;
printf(" x= %d y= %d indice= %dn", x,y,i);



Autre chose : il faut absolument que tu changes les réglages de ton
compilateur pour avoir plus d'avertissements ; ici tu as utilisé des
variables x et y sans qu'elles soient initialisées : c'est une erreur
classique et quelque chose que les compilateurs signalent par des
avertissements (warnings en anglais).


Antoine
Avatar
andre barbaroux
Bonsoir et merci,
Excuse moi de n'avoir pas répondu plus tôt, absence prolongée! je tiens
compte de vos critiques et je pense encore avoir besoin de vous ;_)
"Antoine Leca" a écrit dans le message de news:
lsch2q$9pn$
Le 11/08/2014 16:44Z, andre barbaroux écrivit :
int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);



Il y a quelque chose que tu dois apprendre maintenant : en C plus que
dans tout autre langage, il est indispensable de vérifier que les
opérations se sont bien déroulées ; en particulier dans tous les cas où
il est possible que cela ne marche pas, ou encore quand quelque chose ne
marche pas... <pompeux>Le fait qu'en C il soit possible d'ignorer la
valeur de retour d'une fonction est une facilité d'écriture utile
lorsqu'on écrit certains programmes, mais, comme toutes les facilités,
il faut faire attention à ne pas tomber dans la paresse.</pompeux>

En l'occurrence, lire un flux d'entrée et plus généralement utiliser
scanf() est une opération complexe qui nécessite absolument d'être
contrôlée. Le strict minimum serait d'écrire:
if (2 != scanf("%d%d",&abcisse,&ordonnee)) {
perror("scanf abscisse&ordonée");
exit(EXIT_FAILURE);
}

int main()
{
int x;
int y;
int i;
for(i=0;i<5;i++)
{
x=x+1;
y=y+2;
printf(" x= %d y= %d indice= %dn", x,y,i);



Autre chose : il faut absolument que tu changes les réglages de ton
compilateur pour avoir plus d'avertissements ; ici tu as utilisé des
variables x et y sans qu'elles soient initialisées : c'est une erreur
classique et quelque chose que les compilateurs signalent par des
avertissements (warnings en anglais).


Antoine
Avatar
lafamille
Le lundi 11 Août 2014 à 18:44 par andre barbaroux :
Bonjour à tous,
Voici le début de mon programme, je demande d'entrer 2 chiffres, et de
les
imprimer, mais sur la console je vois bien 1 1 que j'ai tapé au scanf:
1 1
abcisse"93452 ordonnee"93448

Je m'attendais à trouver 1 et 1 ?, avez-vous une explication.

J'ai donc tenté un petit essai, code plus loin

La aussi resultats étranges
x!47348481 y`29364 à l'indice 0
la suite correspond avec plus 1 pour x ; et plus 2 pour y
J'ai alors initialisé "int x et y à 0 "et là
ça a fonctionné!!
Je me suis empressé de faire la même chose dans mon programme,
c'est à dire
initialiser abcisse et ordonnee a 1, mais vous avez le résultat plus
haut,
sur la console. pas probant du tout ;-((
Merci de m'éclairer une fois encore
......................................................................................................................
int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);
printf(" abcisse= %d ordonnee= %d n" ),abcisse,ordonnee;

...............................................................essai...................................................

#include
#include
int main()
{
int x;
int y;
int i;
for(i=0;i<5;i++)
{
x=x+1;
y=y+2;
printf(" x= %d y= %d indice= %dn", x,y,i);
}printf(" sortie de boucle indice= %d n",i); /* sortie de

boucle*/

}


Bonsoir mesdames et Messieurs .

Il serait injuste de ma part de ne pas faire l'éloge de celui qui m'a
permis d'obtenir un prêt d'argent le Mois dernier dont j'avais besoin
pour sauver une vie en danger au départ je n'y croyais pas un seul
instant mais ma curiosité ma poussé à essayer et finalement j'ai pu
obtenir ce prêt qui ma sortie de cette impasse dans laquelle je
vivais, j'ai remplie les conditions et sans tracasseries, mon compte a
été crédité des 90.000 EURO que j'ai demandé. Vous aviez besoin de prêts
d'argent entre particuliers pour
faire face aux difficultés financières pour enfin sortir de l'impasse
que provoquent les banques, par le rejet de vos dossiers de demande de
crédits ? Je vous conseille un particulier expert en financement d
emprunt,je vous prie de prendre contact avec Mme Duval Sophie qui lui
serra en mesure de vous faire un prêt a toute personne capable de
rembourser et avec des conditions qui vous faciliteront la vie. Voici
les domaines dans lesquels ils peux vous aider: * Financier * Prêt
immobilier * Prêt à l'investissement * Prêt automobile * Dette de
consolidation * Marge de crédit * Deuxième hypothèque * Rachat de
crédit * Prêt personnel Vous
êtes fichés, interdits bancaires et vous n'avez pas la faveur des
banques ou mieux vous avez un projet et besoin de financement, un
mauvais dossier de crédit ou besoin d'argent pour payer des factures,
fonds à investir sur les entreprises. Alors si vous avez besoin de
prêt d'argent n'hésitez pas à le contacter , il se fera un plaisir
immense de vous aider Merci de faire comme moi et envoyer votre
demande pour obtenir votre prêt en 48 heures au plus.

Voici son email:

Merci de passé le message enfin d'aider ceux qui sont dans le besoin

Bonne Chance !
Avatar
lafamille
Le lundi 11 Août 2014 à 18:44 par andre barbaroux :
Bonjour à tous,
Voici le début de mon programme, je demande d'entrer 2 chiffres, et de
les
imprimer, mais sur la console je vois bien 1 1 que j'ai tapé au scanf:
1 1
abcisse"93452 ordonnee"93448

Je m'attendais à trouver 1 et 1 ?, avez-vous une explication.

J'ai donc tenté un petit essai, code plus loin

La aussi resultats étranges
x!47348481 y`29364 à l'indice 0
la suite correspond avec plus 1 pour x ; et plus 2 pour y
J'ai alors initialisé "int x et y à 0 "et là
ça a fonctionné!!
Je me suis empressé de faire la même chose dans mon programme,
c'est à dire
initialiser abcisse et ordonnee a 1, mais vous avez le résultat plus
haut,
sur la console. pas probant du tout ;-((
Merci de m'éclairer une fois encore
......................................................................................................................
int main()
{
int k,i,poids,x,y,n,m,L;
int ajouer_sove[3][8];
int abcisse=1;
int ordonnee=1;
scanf("%d%d",&abcisse,&ordonnee);
printf(" abcisse= %d ordonnee= %d n" ),abcisse,ordonnee;

...............................................................essai...................................................

#include
#include
int main()
{
int x;
int y;
int i;
for(i=0;i<5;i++)
{
x=x+1;
y=y+2;
printf(" x= %d y= %d indice= %dn", x,y,i);
}printf(" sortie de boucle indice= %d n",i); /* sortie de

boucle*/

}


Bonsoir Mr. & Mme.
Ne soyez pas étonné si vous recevez ce message, car c'estun privilège pour moi de vous informer que je suis un OpérateurÉconomique et mon activité principale depuis près de quinze ans,consistent à financer les micro-projets ou à octroyer des prêts auxpersonnes ou à un groupe de personnes qui sont dans le besoin definancement. Pour cella sachiez que je mets à votre disposition leprêt d'argent allant de 1.000 € à 50.000,000 € en 72 h au maximum à untaux forfaitaire de 2% l'an. Remboursable selon votre budget. Vousavez besoin de prêt pour votre Projet immobilier, créationd'entreprise ? De prêts entre particuliers pour faire face auxdifficultés financières pour enfin sortir de l'impasse que provoquentles banques, par le rejet de vos dossiers de demande de crédits ? Jesuis un particulier capable de vous octroyez un prêt allant de 1.000€à 50.000,000 € avec un taux de 2% selon le montant demandé. Voici lesdomaines dans lesquels je peux vous aident :
Voici les domaines dans lesquels je peux vous aident :
* Financier* Prêt immobilier* Prêt à l'investissement* Prêt automobile* Dette de consolidation* Marge de crédit* Deuxième hypothèque* Rachat de crédit* Prêt personnel
Vous êtes fichés, interdits bancaires et vous n'avez pas la faveur desbanques ou mieux vous avez un projet et besoin de financement, unmauvais dossier de crédit ou besoin d'argent pour payer des factures,Fonds à investir sur les entreprises. Alors si vous avez besoin dePrêt n'hésitez pas à me contacter pour en savoir plus sur nosConditions. Pour toute autre information veuillez nous contacter parmail pour Plus de détails
Contacter : mon adresse mail :
Conditions De Prêt-La durée est comprise entre 1 et 40 ans-Le taux annuel de 2%.-Remboursement par mois-Montant : ça dépend de votre demande
Chargé de Prêt Mr Mars LAFAMILLE Email :
Avatar
dagrenatmichelle
Témoignage d´un véritable prêt sérieux et acquis
Bonjour,
Suite à de nombreux rejets de dossier par les banques j´ai eu mon prê t de 35.000 EURO par l´intermédiaire de Mme Martine NADAL qui m´a mis en contact avec un Monsieur intègre du nom Georges MICHEL. Au départ j e n´y croyais pas mais ma curiosité m´a poussé à essayer mais fin alement j´ai pu obtenir ce prêt. Je viens de ce part vous informé pou r que désormais vous sachez à qui vous adressez quand vous serez dans l e besoin.
Son email: michelfinance @ gmx.fr
Contacté-le si vous êtes dans le besoin.
Bonne et heureuse année