Tom's Guide > Forum > Programmation > aide langage c : fonction
Mot :    Pseudo :           
 

salut!

je dois écrire en C une fonction partiel qui inverse les valeurs de deux variables passées en paramètres.
Void main (void)
{
//Exemple d'appel pour i et j
int i=5,j=3;
printf("valeurs : i=%d , j=%d\n",i,j); // j'aurai à l'écran < valeurs : i=5 , j=3 >
//appel de la fonction
partiel( );
printf("valeurs : i=%d , j=%d\n",i,j); // j'aurai à l'écran < valeurs : i=3 , j=5 >

pourriez vous m'aidez svp

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Citation :


dj_darky a écrit :
salut!

je dois écrire en C une fonction partiel qui inverse les valeurs de deux variables passées en paramètres.
Void main (void)
{
//Exemple d'appel pour i et j
int i=5,j=3;
printf("valeurs : i=%d , j=%d\n",i,j); // j'aurai à l'écran < valeurs : i=5 , j=3 >
//appel de la fonction
partiel( );
printf("valeurs : i=%d , j=%d\n",i,j); // j'aurai à l'écran < valeurs : i=3 , j=5 >

pourriez vous m'aidez svp


Ce que tu fait c'est du C++ pas du C

Répondre à neokiller007

Dans le main :

Code :
  1. partiel( &i, &j );



Et quelque part dans ton source :

Code :
  1. void  partiel( int * i, int * j ) {
  2.   int swap;
  3.   swap = *j; *j = *i; *i = swap;
  4. }

Répondre à Zx-81@IDN

neokiller, c'est bien du C qu'il fait.
Le c++ c'est du C + des fonctions supplémantaire
et la dimension objet surtout.
Aucune des fonctions qu'ils utilisent n'est du C++.

Répondre à Resurectin

Il disait ca peut être à cause des commentaires ?
Les // ne sont pas reconnus par tous les compilateurs pure C ... (c'est pas C ANSI ...)

coding standard

Répondre à Zx-81@IDN

Citation :


zx-81 a écrit :
Il disait ca peut être à cause des commentaires ?
Les // ne sont pas reconnus par tous les compilateurs pure C ... (c'est pas C ANSI ...)

coding standard


exactement

Répondre à neokiller007

Tu peux le faire aussi sans créer la variable swap intermédiaire (ça change pas grand chose mais bon):

i=i+j;
j=i-j;
i=i-j;

Par contre, le C++ je connais pas alors je te laisse la "version java" :lol:

Répondre à aik

Le problème de cette solution c'est si (i + j) dépasse la taille d'un entier ... ;-)

Répondre à Zx-81@IDN

Pas bête ça :D

Mais bon ça peut toujours servir

Répondre à aik

Citation :

Pas bête ça :D
Mais bon ça peut toujours servir



Personnellement, je trouve ca hyper gore.
Mieux vaut passer par une variable temporaire, y'a beaucoup moins de risques.
Parce que là, si jamais ca bug a cause du fait que i + j dépasse la taille d'un entier, t'es mal :)

Et puis même, de toutes facons, c'est ultra-moche et illisible.

Répondre à Pwipwi

lol a cause des // tu pensais au C++ ?

si c'est une fonction qui retourne un resultat, utilise une variable swap et retourne la valeur, sinon tu joue avec les pointeurs, c'est aussi simple que ca.

Répondre à kyen

pour retourner le résultat sufit de mettre sa :

return (i,j)

c'est correcte ?

Répondre à dj_darky

non :)
Tu ne peux pas retourner deux valeurs en C.

Soit tu fais une structure
Soit tu fais tout par pointeurs.

Répondre à Pwipwi

salut,

dès le début de mes cours de langage C on utilisait ce code:

Code :
  1. swap=i
  2. i=j
  3. j=swap



inutlie de faie une fonction pour ça, tu l'insère directement dans ton code

j'espère t'avoir aidé

Répondre à matser1973
Tom's Guide > Forum > Programmation > aide langage c : fonction
Aller à :

Il y a 1091 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens