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 :

Traduire du python vers C


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Traduire du python vers C
    Bonsoir, donc me voilà face à un problème, j'ai plusieurs exercice à faire, mais je les ai fait en python, problème le prof les veux en C ou C++
    J'ai regarder sur le net si on ne pouvais pas convertir du python en C mais je n'ai rien trouver.
    Ayant de mauvaises bases en C j'aurai voulu savoir si vous ne pouvez pas m'aider à traduire ces programmes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def stable(n):
    	"""Renvoie la matrice d'adjacence du stable à n sommets.
    	"""
     
    	# le tableau à renvoyer
    	r = []
    	for i in range(n):
    		# ajouter les lignes composées de n zéros
    		r.append([0] * n)
    	return r

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def clique(n):
    	"""Renvoie la matrice d'adjacence de la clique à n sommets.
    	"""
     
    	# tableau à renvoyer
    	r = []
    	for i in range(n):
    		# pour chaque sommet i, la ligne à ajouter ne contient que des 0 sauf à l'indice i où on met un 1
    		ligne = [1] * n
    		ligne[i] = 0
    		r.append(ligne)
    	return r

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def voisins(g, i):
    	"""Renvoie la liste des voisins du sommet i dans le graphe g.
    	"""
     
    	# tableau des voisins
    	r = []
    	for j in range(len(g)):
    		# pour chaque j, on regarde dans la matrice si j est un voisin de i
    		if g[i][j] == 1:
    			r.append(j)
    	return r

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def nb_aretes(g):
    	"""Renvoie le nombre total d'arêtes dans le graphe g.
    	"""
     
    	# nombre d'arètes trouvées
    	r = 0
    	# on parcourt tous les couples de sommets (i, j) avec j > i, et on compte une arête si i et j sont connectés
    	for i in range(len(g)):
    		for j in range(i+1, len(g)):
    			if g[i][j] == 1:
    				r += 1
    	return r
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def degre_total(g):
    	"""Renvoie la somme des degrés du graphe g.
    	"""
     
    	# degré total
    	r = 0
    	# on ajoute pour chaque sommet son nombre de voisins
    	for i in range(len(g)):
    		r += len(voisins(g, i))
    	return r
    Merci d'avance, biensûr je n'attend pas à ce que vous me traduisiez tout les codes, (sa serait trop beau) mais j'aimerai avoir un ou deux codes traduit pour voir la marche à suivre

  2. #2
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    j'aimerais bien t'aider mais je sais pas faire le python, par contre si tu peut me dire les objectifs de tes différent codes je verrais si je peut te les faire en C. Et si d'ici là quel qu'un sais faire le python et C se manifeste sa serais encore mieux

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonsoir.

    Ton prof ne veut vraiment pas de python ? C'est pourtant bien plus simple de manipuler des graphes avec .

    Si vraiment il ne veut pas changer d'avis, puisque ces fonctions manipulent des tableaux, je te conseille de les traduire en C++ car en C, les tableaux sont assez difficile à manipuler pour un débutant.

    Voila un exemple des deux premières fonctions:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <vector>
    #include <iostream>
     
    std::vector< std::vector<int> > stable(int n) {
    	//Renvoie la matrice d'adjacence du stable à n sommets.
     
    	//Le tableau à renvoyer.
    	std::vector< std::vector<int> > r;
    	for(int i=0; i<n; i++) {
    		//ajouter les lignes composées de n zéros
    		r.push_back( std::vector<int>(n, 0) );
    	}
     
    	return r;
    }
     
    std::vector< std::vector<int> > clique(int n) {
    	//Renvoie la matrice d'adjacence de la clique à n sommets.
     
    	//tableau à renvoyer
    	std::vector< std::vector<int> > r;
    	for(int i=0; i<n; i++) {
    		//pour chaque sommet i, la ligne à ajouter ne contient que des 0 sauf à l'indice i où on met un 1
    		std::vector<int> ligne(n, 1);
    		ligne[i] = 0;
    		r.push_back(ligne);
    	}
    	return r;
    }
     
    void stable_test() {
    	//fonction de test
    	auto ret = stable(1);
    	for(auto &row : ret) {
    		for(auto &cell : row) {
    			std::cout << cell;
    		}
    	std::cout << '\n';
    	}
    }
    void clique_test() {
    	//fonction de test
    	auto ret = clique(5);
    	for(auto &row : ret) {
    		for(auto &cell : row) {
    			std::cout << cell;
    		}
    	std::cout << '\n';
    	}
    }
     
    int main() {
    	stable_test();
    	//clique_test();
    }
    Ça peut être optimisé (utiliser des typedef, des ranged for loop), mais je te laisse les fonctions traduites telles quelles.

    Comme tu le vois, c'est plus long d'écrire l'équivalent en C++ (en encore plus en C, crois moi).
    Je te laisse traduire le reste, en sachant que len(g) se transforme en g.size();.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    for(int i=0; i<n; i++) {
    //pour chaque sommet i, la ligne à ajouter ne contient que des 0 sauf à l'indice i où on met un 1
    std::vector<int> ligne(n, 1);
    ligne[i] = 0;
    r.push_back(ligne);
    }
    Là j'ai bien l'impression que tu fais le contraire de ton commentaire...

    Comme tu le vois, c'est plus long d'écrire l'équivalent en C++ (en encore plus en C, crois moi).
    En terme de lignes de code ce n'est pas tellement plus long finalement. Avec C++11 de gros progrès ont été faits de ce point de vue!

    Si tu dois durablement programmer en C/C++ je te conseille de prendre un manuel quand même car dès que tu sortiras des programmes triviaux de ce type tu auras besoin de rentrer dans le vif du langage... Tu as une liste de livres par niveau qui me paraît bien là: http://stackoverflow.com/questions/3...guide-and-list

  5. #5
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par stendhal666 Voir le message
    Là j'ai bien l'impression que tu fais le contraire de ton commentaire...
    J'ai simplement traduit le code sans le modifier. Mais en effet, à la base, le commentaire ne correspond pas.

    Pourquoi y a t'il autant de votes négatifs et non expliqués sur cette discussion ?
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

Discussions similaires

  1. probleme pour le transfert dune array de Python vers C
    Par jyjeanphi dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 31/03/2009, 23h54
  2. import des donnees python vers tableau
    Par tsicc dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 02/04/2008, 10h10
  3. [Débat] Traduire du français vers le Java
    Par mtaveau dans le forum Général Java
    Réponses: 17
    Dernier message: 17/01/2006, 11h14
  4. Python vers C/C++ : listage des Cnp et Anp
    Par samW7 dans le forum Général Python
    Réponses: 2
    Dernier message: 05/12/2005, 21h38
  5. Traduire requête oracle vers access
    Par petitmic dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 18h21

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