programme en c
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

programme en c



  1. #1
    invite3ca1c29c

    Question programme en c


    ------

    bonjour tout le monde, j'ai besoin de votre aide ,benh c'est ma premiere fois que j'utilise la notion du fichier dans un programme en langage C ,je veux realiser un programme qui fais le trie de deux tableaux qui sont enregistés dans un fichier ,et a partir de ces 2 fichiers je dois mettre le resultat dans un 3 eme fichier.
    bon j'ai fais un essaye mais il veux pas s'executer ,alors est ce que quelqu'1 peut me le corriger ,je vous remercie d'avance pour votre interet,voila le programme.
    #include<stdio.h>
    #include<conio.h>

    void trie_fc(int *p,int d)
    {
    int a;
    int i,j;

    for (i=0;i<d-1;i++)
    for(j=i+1;j<d;j++)
    {
    if(*(p+i)>*(p+j))
    {
    a= *(p+i);
    *(p+i)= *(p+j);
    *(p+j)=a;
    }
    }
    }

    void fusionne(int *p,int *q,int *R,int d,int D )
    {
    int i;
    for(i=0;i<d;i++)
    {
    *R=*p;
    R++;
    p++;
    }
    for(i=0;i<D;i++)
    {
    *R=*q;
    R++;
    q++;
    }

    }

    main()
    {
    int i,j,dimt,dimT,dimF;
    int t[50],T[50],F[100];
    int *p,*q,*r;
    FILE*ficht;
    FILE*fichT;
    FILE*fichF;

    ficht=fopen("ficht","w");
    printf("dimention du 1er tab : ");
    scanf("%d",&dimt);
    for(p=t;p<t+dimt;p++)
    {
    scanf("%d",p);
    fprintf(ficht,"%d",*p);
    }

    fichT=fopen("fichT","w");
    printf("dimention du 2eme tab : ");
    scanf("%d",&dimT);
    for(q=T;q<T+dimT;q++)
    {
    scanf("%d",q);
    fprintf(fichT,"%d",*q);
    }

    trie_fc((int *)ficht, dimt);
    trie_fc((int *)fichT, dimT);
    fichF=fopen("fichF","w");
    fusionne((int*)ficht,(int*)fic hT,(int *)fichF,dimt,dimT );

    printf("le tableau fusionne est le suivant : \n");
    for(p=F;p<F+dimt+dimT;p++)
    fscanf(fichF," %d \n",&p);
    fclose(ficht);
    fclose(fichT);
    fclose(fichF);

    getch();
    }

    -----

  2. #2
    Philou67

    Re : programme en c

    Pour plus de clarté lors de l'affichage de ton programme, il est indispensable d'utiliser la balise [CODE][/CODE] autour de celui-ci.

    Sinon, pour t'aider, il faudrait peut-être que tu indiques quel type d'erreur tu as : erreur de compilation, d'exécution
    Et de préciser : le message d'erreur, la plateforme de développement (OS, IDE), le compilateur, ...
    :'( Plus j'apprends, et plus je mesure mon ignorance

  3. #3
    invite6de5f0ac

    Re : programme en c

    Bonjour,

    Déjà les trois fichiers sont ouverts avec un fopen ("nom", "w") donc aucun en lecture... guère de chance de lire les données quelque part !

    -- françois

  4. #4
    umfred

    Re : programme en c

    En relisant l'enoncé du sujet, je crois que le fait que les 3 fichiers soient en écriture est normal
    deux tableaux qui sont enregistés dans un fichier
    par contre, les données de tes tableaux (que tu rentres à la main il me semble) devrait pour bien faire être aussi sauvegardé dans des tableaux en plus des fichiers pour l'opération de triage.
    D'ailleurs tes boucles "for" me semblent très bizarres.

    Ton compilateur t'indique des erreurs ou des warnings ? si oui indique les.

  5. A voir en vidéo sur Futura
  6. #5
    invite17a570c1

    Re : programme en c

    Citation Envoyé par umfred Voir le message
    En relisant l'enoncé du sujet, je crois que le fait que les 3 fichiers soient en écriture est normal
    Beh non Il/Elle veut écrire le résultat dans le 3 :
    et a partir de ces 2 fichiers je dois mettre le resultat dans un 3 eme fichier.
    Donc, un fichier devrait être ouvert en écriture.

    Mais bon, sans balises et messages d'erreur, il y a rien à faire...

  7. #6
    invite66fe1810

    Re : programme en c

    Je trouve aussi tes boucles en for assez bizarres, d'une part le pas usuel est n et non d (peut-être que ton compilateur le prend en compte comme une variable non déclarée) et je suis pas sûr que ta syntaxe d'incrémentation soit valable (je sais qu'elle est valable en C# mais moins sûr en C), à mon avis i=i+1 serait plus appropriée.

  8. #7
    polo974

    Re : programme en c

    i++ est une des premières choses qu'on apprend en C....

    Par contre faire un cast entre un FILE* et un int*... ouch...

    il faudrait lire la doc sur les accès fichiers, ce n'est pas des tableaux... et donc faire un tri dans un fichier est très couteux.

  9. #8
    invite2d7144a7

    Re : programme en c

    Bonjour,
    Citation Envoyé par Tikenjah Voir le message
    Je trouve aussi tes boucles en for assez bizarres, d'une part le pas usuel est n et non d (peut-être que ton compilateur le prend en compte comme une variable non déclarée) et je suis pas sûr que ta syntaxe d'incrémentation soit valable (je sais qu'elle est valable en C# mais moins sûr en C), à mon avis i=i+1 serait plus appropriée.
    Pour commenter du C, que tu ne connais manifestement pas, je te conseille de commencer par l'apprendre.

    Il n'y a bien entendu pas de "pas" usuel, on utilise absolument ce qu'on veut.

    En C, il 'y a pas de "variable non déclarée", aucun compilateur ne peut faire ça, c'est absolument hors de question avec ce langage.

    Et comme l'a déjà dit polo974, i++ est tellement basique en C... (d'ailleurs, à ton avis, pourquoi cette syntaxe existe-t-elle en C# ?).

  10. #9
    invite17a570c1

    Re : programme en c

    Citation Envoyé par polo974 Voir le message
    i++ est une des premières choses qu'on apprend en C....
    i++
    Encore, on peut à la limite essayer d'épiloguer pendant des heures qui est plus rapide, le i++ ou le i=i+1, mais je crois avoir lu que c'est en terme de nanosecondes que ça se joue, donc pas forcément super intéressant.
    C'est ptet plus intéressant de souligner une différence entre ++i et i++

  11. #10
    invite2d7144a7

    Re : programme en c

    Bonjour,
    Citation Envoyé par MaliciaR Voir le message
    i++
    Encore, on peut à la limite essayer d'épiloguer pendant des heures qui est plus rapide, le i++ ou le i=i+1, mais je crois avoir lu que c'est en terme de nanosecondes que ça se joue, donc pas forcément super intéressant.
    C'est ptet plus intéressant de souligner une différence entre ++i et i++
    Il ne faut pas chercher de règle générale, c'est directement dépendant du compilateur.

    Et pour la plupart des compilateurs, ça génère strictement le même code, depuis très longtemps (après tout, K&R avaient bien précisé que i++ n'était qu'une manière abrégée d'écrire i=i+1), ce qui signifie évidemment : exactement le même temps d'exécution.

  12. #11
    polo974

    Re : programme en c

    Citation Envoyé par MaliciaR Voir le message
    i++
    ...
    C'est ptet plus intéressant de souligner une différence entre ++i et i++
    ++i: préincrémenter
    j++: postincrémenter:
    si i = 5
    b[++i] correspond à b[6] car i passe à 6 avant de s'en servir

    si j = 5
    c[j++] correspond à c[5] puis j passe à 6

    maintenant, imaginez une affectation utilisant plusieurs fois le même index avec des ++ et des -- devant et derrière... faites passer l'aspirine...

    EN PASSANT: SE MÉFIER DES MACROS genre min et max, en utilisant des i++ dedans...
    ex:
    c = max(a, b[i++]);
    à priori, une seule fois i++, mais si c'est une macro:
    c = ( (a) > (b[i++]) ? (a) : (b[i++]) );

    et hop, i est incrémenté 2 fois (et pas toujours!!!), le résultat est faux, et c'est la me...

  13. #12
    invite17a570c1

    Re : programme en c

    Héhé, je l'avais dit un peu dans le vent, hein

    Mais c'est cool que tu l'aies expliqué

  14. #13
    invite4ad25ccf

    Re : programme en c

    C est d'ailleurs pour cela que l on evite au maximum d utiliser ce genre de syntaxe autre que dans un for ou sur une ligne vide.
    Mais j'avoue que j'aime bien le C pour sa capacite a pouvoir faire un code moche

Discussions similaires

  1. Programme C
    Par invite5d9066d8 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 07/12/2008, 19h07
  2. programme en C++
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 05/03/2008, 10h44
  3. Programme TI-89
    Par invite693d963c dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 25/10/2007, 17h49
  4. programme en vb
    Par invitedba2660f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/03/2007, 16h51
  5. programme
    Par invite7e1f35e9 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/04/2006, 13h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...