IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Explications sur les tableaux


Sujet :

C

  1. #21
    Membre habitué Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Points : 173
    Points
    173
    Par défaut
    Oui tu peut écrire int main() mais cela sous entends que tu ne pourra pas passer de paramètre à ton programme.
    Je veux avoir le max entre a et b. Ce résultat est donc stocké dans c. c contient donc la valeur max. Et par réflexe j'initialise toujours mes variables.

    ATTENTION les guillemets "textes" sont réservé exclusivement au texte !!! Les formules se note sans guillemet.

  2. #22
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Ah ok,je comprend mieux,tu as stocké le résultat,et désolé pour les guillemet,je vais faire d'autres exo sinon.

  3. #23
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 692
    Points : 30 989
    Points
    30 989
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par robinsondesbois Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argv, char** argc)
    Bonjour
    Tu as le droit, bien entendu, de nommer tes paramètres comme tu le désires. Toutefois, les conventions voudraient que le compteur d'argument (argCount) se nomme "argc" et que le tableau des valeurs de chaque argument (argValues) se nomme "argv"...

    Citation Envoyé par robinsondesbois Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("le max est %d", N);
    T'es sûr ???

    Citation Envoyé par Damien75 Voir le message
    Sinon je ne vois pas à quoi ça correspond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argv, char** argc)
    Ca permet d'appeler le programme en lui passant des arguments (des valeurs) qu'on place entre le nom du programme (lors de l'appel) et le <return>
    Exemple mon_prog toto titi tata.
    A ce moment là, dans le programme lui-même, le premier paramètre de main (argc dans les conventions) contient le nombre d'arguments (4 car le nom du programme lui-même compte pour 1) et chaque élément du second (argv[x] dans les conventions) contient chaque argument passé (argv[1]="toto", argv[2]="titi" et argv[3]="tata")

    Citation Envoyé par Damien75 Voir le message
    Ensuite... et surtout pourquoi il y a un c, parce que je pensais qu'on devait écrire une fonction max qui prend en paramètre deux entier et qui revoie le maximum.
    Ben oui, c'est ce qu'il a fait avec sa fonction maxAB() qui prend bien en paramètre deux entiers et qui renvoie le max des deux. Mais s'il a envie de stocker ce max dans une 3° variable c, pourquoi ne le ferait-il pas ???

    Citation Envoyé par Damien75 Voir le message
    Mais j'ai essayé la partie 2( Ecrire ensuite une fonction max qui prend en paramètre deux entiers et retourne
    le maximum de deux entiers.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include<stdio.h>
    int main();
    int_max(int_a_a,int_b_b,);
    {
    // code 
    }
    return max(a,b);
    en suivant les conseil de quelqu'un, mais le code de la fonction je ne le connais pas et je ne suis pas sûr d'avoir bien déclaré la fonction max.
    Ta fonction int_max() n'a pas un gros travail (une ligne de code en fait). Pourquoi lui faire appeler une autre fonction (max()) qui fera exactement la même chose ???
    Et c'est quoi ce type "int_a_a" ??? Et tes paramètres n'ont pas de nom ???
    Et ton return se trouve en dehors du bloc de la fonction.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #24
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Oui,j'ai compris après à quoi le c servait et ce que j'ai écris ensuite je n'était pas sûr j'essayai de déclaré la fonction.

  5. #25
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 692
    Points : 30 989
    Points
    30 989
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Damien75 Voir le message
    j'essayai de déclaré la fonction.
    En C, il y a une grande différence entre "déclarer" et "définir".
    Déclarer signifie "indiquer que la fonction existe". Cela permet de lui donner son type et le type de ses paramètres. C'est absolument nécessaire car si le compilo détecte un appel à une fonction qu'il ne connait pas, il la déclare lui-même de type int ce qui peut poser problème si la fonction n'a pas vocation à renvoyer un int.
    C'est pour cela que les déclarations se font toujours au début du programme.
    Exemple de déclaration int max(int, int); (note bien le point-virgule final). Dans une déclaration tu n'es pas obligé de donner un nom aux paramètres.

    Définir signifie "programmer le travail", c.a.d. écrire le code de l'algo.
    Si la définition est faite avant l'appel, alors cela rajoute un effet déclaratif. C'est pour ça que robinsondesbois a écrit sa fonction maxAB() avant de l'appeler dans le main. Mais parfois cette astuce n'est pas possible (par exemple si une fonction A appelle une fonction B et que la fonction B appelle la fonction A).

    C'est aussi pour ça que les fonctions de la librairie standard sont systématiquement associées à un ".h". Car ce ".h" contient leurs déclarations. Et c'est aussi pour ça que l'oubli d'un ".h" provoque parfois un warning à la compilation.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #26
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Ok merci,j'apprendrai à faire la distinction,sinon j'ai essayé de faire cet exercice:

    Ecrire une fonction moy à 2 paramètres entiers et qui renvoie un réel égal à la moyenne des deux entiers.
    Mais je préfère posé quelque question avant d'écrire des chose fausse,dans mon programme,est-ce qu'il faut mettre une variable somme si il y a déja une fonction moy qui va calculer la moyenne?

  7. #27
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 692
    Points : 30 989
    Points
    30 989
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Damien75 Voir le message
    est-ce qu'il faut mettre une variable somme si il y a déja une fonction moy qui va calculer la moyenne?
    Une variable ne sert qu'à mémoriser une valeur obtenue à un instant "t1" dans le cas où tu veux t'en servir à un instant "t2". Si tu n'as pas besoin de ta somme, tu n'as alors pas besoin d'avoir une variable pour elle.
    La moyenne de 2 valeurs x et y c'est (x+y)/2. Je vois mal l'utilité d'une variable spéciale pour ça...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #28
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Alors j'ai essayé de faire l'exercice précédement(voir dernier message),et même si j'ai fais beaucoup d'erreur,j'essai de faire de mon mieux,et j'ai essayé de suivre la méthode de robisondesbois pour l'exo sur le maximum,voici ce que j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    < #include<stdio.h>
    int moy(int  c, int d);
    {return(c+d)/2.0;
    }
    int main(int argv, char** argc)
    int i,N,moy=0;
    int c=5,d=8,e=0;
    for(i=0;i<4;i++)
    {
    scanf("%d", &moy);
    }
     
    printf("la moyenne est %d", moy);
    e= moy(c, d);
        printf("la moyenne est %d", e);
        return 0;
    }

  9. #29
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 692
    Points : 30 989
    Points
    30 989
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Damien75 Voir le message
    Bonjour,
    C'est sympa mais un seul suffit. Comme dans la vraie vie, quand tu parles avec les gens, tu ne dis pas "bonjour" à chaque phrase, si ???

    Citation Envoyé par Damien75 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int moy(int  c, int d);
    {return(c+d)/2.0;
    }
    Aère un peu ton code, tu y verras beaucoup mieux et les autres pourront mieux te lire
    Accessoirement, si la fonction doit renvoyer un flottant elle ne peut pas être int.
    Et pas de point-virgule dans une définition de fonction
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    float moy(int  c, int d)
    {
        return (c+d)/2.0;
    }

    Citation Envoyé par Damien75 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argv, char** argc)
    Ok, donc comme je te l'ai déjà dit, le premier argument est (conventionnellement) nommé "argc" (argCount) et le second "argv" (argValues).
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char** argv)
    Ceci dit, ils sont inutiles ici...

    Citation Envoyé par Damien75 Voir le message
    Pas bon de créer une variable de même nom qu'une fonction créée auparavant...

    Citation Envoyé par Damien75 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<4;i++)
    {
    scanf("%d", &moy);
    }
    Pourquoi faire saisir 4 fois la même variable ???

    Citation Envoyé par Damien75 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    e= moy(c, d);
        printf("la moyenne est %d", e);
    c et d n'ont que peu d'utilité...
    Et e aussi
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("la moyenne est %f", moy(5, 8));
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #30
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Non je dis une seul fois bonjour dans la vrai vie, deux fois c'est sans mes médicament;sinon je suis d'accord,la moyenne M peut être un float,ensuite si je

    ne me trompe pas je devrais écrire for(i=0;i<1;i++).
    Bon je vais essayé de compiler mes programme sur codeblocks pour donner moins de fils a retordre aux gens de ce forum.

  11. #31
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 692
    Points : 30 989
    Points
    30 989
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Damien75 Voir le message
    la moyenne M peut être un float
    Ce n'est pas "peut être" mais "doit être". Il n'y a pas de place au hasard en prog. Déjà on te dit dans l'énoncé que la moyenne est un flottant. Ensuite, dans la vraie vie, une moyennne est souvent un nombre décimal. Et enfin l'opération (a+b)/2.0 que tu as toi-même écrit donne un résultat en virgule flottante. Forcément si la fonction n'est pas float (ou double) il y a alors une incohérence que tu te dois (si tu as l'intention de devenir professionnel dans ce métier) de combler...

    Citation Envoyé par Damien75 Voir le message
    ensuite si je ne me trompe pas je devrais écrire for(i=0;i<1;i++).
    Mouais, une boucle à une seule itération. A la limite (soyons fou) peut-être ne pas faire de boucle du tout (science fiction ou est-ce réellement possible ???)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #32
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Oui pas de place au hasard,mais je voulais dire qu'une moyenne peut être un nombre décimal ou entier.

    Euh pour la science fiction ou pas,je ne sais pas par contre.

  13. #33
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 692
    Points : 30 989
    Points
    30 989
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Damien75 Voir le message
    Oui pas de place au hasard,mais je voulais dire qu'une moyenne peut être un nombre décimal ou entier.
    Dans ce cas tu auras un float avec une partie décimale non nulle ou nulle mais ça reste un float (c.a.d. un nombre codé selon le principe de la mantisse et de l'exposant). Ainsi 1 est un int mais 1.0 est un float. Et si tu regardes les bits qui composent ces nombres, tu verras qu'ils sont totalement différents parce que le codage d'un int diffère totalement du codage d'un float...

    Citation Envoyé par Damien75 Voir le message
    Euh pour la science fiction ou pas,je ne sais pas par contre.
    Soyons sérieux. Une boucle à une itération ne sert absolument à rien. Si tu as une variable à faire saisir ben tu la fais saisir tout simplement...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #34
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Ok dac

Discussions similaires

  1. [Tableaux] Besoin d'explications sur les tableaux imbriqués
    Par gateaubasque dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2007, 09h12
  2. [RegEx] preg_replace : explications sur les caractères spéciaux
    Par Anduriel dans le forum Langage
    Réponses: 6
    Dernier message: 05/10/2005, 21h35
  3. Article sur les tableaux dynamiques
    Par Eric Sigoillot dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2004, 22h00
  4. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo