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 :

Neurone formel OU - ET


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut Neurone formel OU - ET
    Bonjour,

    Je voudrais créer un neurone formel qui fait la fonction ET - OU, j'ai donc suivi un tutoriel : http://memo.labz.free.fr/blog/?p=97 (à voir tout en bas)



    Mais le code C ne marche pas, je suis sous code block. J'ai néanmoins essayé en modifiant le code mais rien n'y fait :



    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <stdio.h>
    #include <stdlib.h>
     
    // Prototype de la fonction
    int fonction_heaviside(double x);
     
     
    // Main
    int main(int argc, char *argv[])
    {
    	double somme_ponderee = 0;
    scanf("%d", somme_ponderee); // On demande d'entrer l'age avec scanf
    	if(argc != 6)
    	{
     
    		printf("Utilisation : ./neurone seuil valeur_1 poid_synaptique_1 valeur_2 poid_synaptique_2\n");
    		return 1;
    	}
     
     
     
    	somme_ponderee = atof(argv[2]) * atof(argv[3]) + atof(argv[4]) * atof(argv[5]) - atof(argv[1]);
     
    	printf("Résultat: %d\n", fonction_heaviside(somme_ponderee));
    	return 0;
    }
     
     
    // Définition de la fonction
    int fonction_heaviside(double x)
    {
     
    	if(x < 0)
    		return 0;
    	else
    		return 1;
    }
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Bonjour

    En C les tableau commencent à l'indice 0.

    Donc il faut aller de 0 à < argc

    Comme argv[0] contient (en général) le nom du programme, il faut démarrer tes atof à 1 et aller jusqu'à argc-1

    D'autre part, pour un flottant, il est mieux d'nitialiser la varriable avec une précision d'au moins une décimale : somme = 0.0

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Les deux premières lignes sont fausses et suffisent à faire planter le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	double somme_ponderee = 0;
    scanf("%d", somme_ponderee); // On demande d'entrer l'age avec scanf
    1- scanf demande en argument l'adresse de destination
    2- le format pour un double n'est pas %d mais %lf

  4. #4
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut
    Re bonjour,

    J'ai peur de na pas avoir tout compris, et j'ai quelque peu modifier le programme,le voici :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <stdio.h>
    #include <stdlib.h>
     
    // Prototype de la fonction
    int fonction_heaviside(double x);
     
     
    // Main
    int main(int argc, char *argv[])
    {
    	double somme_ponderee = 0;
    scanf("%lf", somme_ponderee);
    	if(argc != 6)
    	{
     
    		printf("Utilisation : ./neurone seuil valeur_1 poid_synaptique_1 valeur_2 poid_synaptique_2\n");
    		return 1;
    	}
     
     
     
    	somme_ponderee = atof(argv[1]) * atof(argv[2]) + atof(argv[3]) * atof(argv[4]) - atof(argv[1]);
     
    	printf("Résultat: %d\n", fonction_heaviside(somme_ponderee));
    	return 0;
    }
     
     
    // Définition de la fonction
    int fonction_heaviside(double x)
    {
     
    	if(x < 0)
    		return 0;
    	else
    		return 1;
    }
    Pouvez vous me dire ou se trouvent mes erreurs ?

    Merci d'avance

  5. #5
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Comme l'a dit diogene, il faut passer l'adresse à scanf, ce qui se traduit par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%lf", &somme_ponderee);
    En plus quelle est l'intérêt de lire une valeur dans somme_ponderee pour aller l'écraser 2 lignes plus loin sans l'avoir utilisée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    somme_ponderee = atof(argv[1]) * atof(argv[2]) + atof(argv[3]) * atof(argv[4]) - atof(argv[1]);

  6. #6
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut
    Re,


    J'ai modifié le code, mais je pense qu'on a encore du boulot
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <stdio.h>
    #include <stdlib.h>
     
    // Prototype de la fonction
    int fonction_heaviside(double x);
     
     
    // Main
    int main(int argc, char *argv[])
    {
    	double somme_ponderee = 0;
    scanf("%lf", &somme_ponderee);
     
    	if(argc != 6)
    	{
     
    		printf("Utilisation : ./neurone seuil valeur_1 poid_synaptique_1 valeur_2 poid_synaptique_2\n");
    		return 1;
    	}
     
     
     
    	somme_ponderee = atof(argv[0]) * atof(argv[2]) + atof(argv[3]) * atof(argv[4]) - atof(argv[1]);
     
    	printf("Résultat: %d\n", fonction_heaviside(somme_ponderee));
    	return 0;
    }
     
     
    // Définition de la fonction
    int fonction_heaviside(double x)
    {
     
    	if(x < 0)
    		return 0;
    	else
    		return 1;
    }
    En plus quelle est l'intérêt de lire une valeur dans somme_ponderee pour aller l'écraser 2 lignes plus loin sans l'avoir utilisée ?
    Je dois donc enlever le code avec les atof ?

    merci de m'aider

Discussions similaires

  1. Les réseaux de neurones ??? Ouvrage, site, tutos ???
    Par wallys dans le forum Méthodes prédictives
    Réponses: 5
    Dernier message: 21/03/2006, 14h08
  2. paramètre formel et paramètre courant !
    Par Aioros dans le forum C
    Réponses: 6
    Dernier message: 03/09/2005, 02h35
  3. Besoin d'aide classifieur SVM et reseau de neurones
    Par dahoo dans le forum Méthodes prédictives
    Réponses: 2
    Dernier message: 12/04/2005, 14h31
  4. [C] Calcul Formel
    Par Paniez dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 19/03/2005, 10h36
  5. Réseaux de neurones
    Par kayin dans le forum Méthodes prédictives
    Réponses: 8
    Dernier message: 10/03/2004, 14h22

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