Quelqu'un de disponible pour m'aider dans des exercices c++ ?

Fermé
Utilisateur anonyme - 15 mai 2020 à 17:05
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 16 mai 2020 à 10:34
J'ai besoin d'aide dans des exercices c++ (je sais pas si c'est avancé ou pas) qui pourrait m'aider a les effectuer

4 réponses

MPMP10 Messages postés 39694 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 22 avril 2024 15 216
Modifié le 15 mai 2020 à 17:08
0
Utilisateur anonyme
15 mai 2020 à 17:16
Bonjour, oui excusez-moi j'ai fait ma demande d'une manière trop crue.

Je chercherai quelqu'un qui sait utiliser c++ parce que j'ai des exercices à résoudre et je bug à plein d'endroits, j'ai beaucoup de questions et cherche sur internet mais n'arrive pas à utiliser les différentes méthodes des videos/sites. Pourriez-vous être capable de m'assister dans mes exercices en me guidant ?

Je ne savais pas qu'il y avait une charte merci pour les rappels.
0
MPMP10 Messages postés 39694 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 22 avril 2024 15 216 > Utilisateur anonyme
15 mai 2020 à 17:19
0
Utilisateur anonyme
15 mai 2020 à 17:20
je n'attends pas une réponse toute faite mais un soutien et des explications par rapport à mes problèmes.
0
MPMP10 Messages postés 39694 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 22 avril 2024 15 216
Modifié le 15 mai 2020 à 17:22
Si si...
0
Utilisateur anonyme
15 mai 2020 à 17:31
alors je vais poster mes questions ici :
#include <vector>
#include <iostream>


void sum(const std::vector<double>& x,
		 const std::vector<double>& y,
		std::vector<double>& z){
	for(std::size_t i = 0; i < x.size(); ++i)
		z[i] = x[i] + y[i];
}

int main() {
	const unsigned n = 10;
	std::vector<double> x(n),y(n),z(n);
	for(size_t i = 0; i < n; ++i){
		x[i]=2.*i/n;
		y[i]=5.*i/n;
	}
	sum(x,y,z);
	
	std::cout << "sum(x,y) = [";
	for(unsigned i = 0; i < n ; ++i)
		std::cout << z[i] << " " ;
	std::cout << "]" << std::endl;
	
	return 0;
}


voici mon code c++ je dois à partir de la créer une libraire pour la fonction sum et mettre l''utiliser dans mon fichier principal.
J'essaie de créer un fichier h qui contient la fonction void sum

#ifndef SUM_H
#define SUM_H

void sum(const std::vector<double>& x,
		 const std::vector<double>& y,
		std::vector<double>& z){
	for(std::size_t i = 0; i < x.size(); ++i)
		z[i] = x[i] + y[i];
}



je fais cela à partir des exemples vu sur internet mais je ne comprends pas très bien à quoi sert le ifndef et le define

à partir de la j'ai donc deux fichiers différents (main.cpp ou j'ai retiré la fonction sum et le fichier sum.h ou j'ai la fonction) je dois créer une libraire et à partir de la je regarde sur internet et ne trouve pas comment effectuer les opérations pour y parvenir. Je sais que je dois créer un fichier lib.a à travers mon makefile mais ne voit pas comment m'y prendre. pourriez vous me mettre sur la piste?
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
16 mai 2020 à 10:34
Bonjour,

avant de pouvoir faire une bibliothèque (library en anglais), il y a un certain nombre de concepts indispensables à comprendre :
- à quoi sert un fichier d'entête? Que doit-on y mettre? Ne ne doit-on surtout pas y mettre? Y a-t-il des règles particulières pour ces fichiers.
- comment utiliser plusieurs fichiers sources dans un projet.
- comment créer un projet incomplet qui pourra être combiné à un autre plus tard (une bibliothèque)
- comment se lier à une bibliothèque? Lien statique, lien dynamique effectué statiquement ou lien dynamique chargé dynamiquement.

A priori, tu n’atteins pas encore la première étape. Commençons.
1) Un fichier d'entête, ça sert à permettre à des fichiers sources ou d'autres fichiers d'entête de connaître l’existence et le type d'éléments qu'ils doivent utiliser.
2) Dans un fichier d'entête on doit mettre des déclarations et des définitions.
3) Un fichier d'entête c'est fait pour être utilisé un certain nombre de fois (0,1, 2, ...)
4) En vertu de la "one definition rule", on ne doit pas définir quelque chose 2 fois.
4.1) avec le (3), ça implique qu'on ne doit jamais y définir de fonction.
4.2) avec le (3), ça implique aussi de ne pas y définir d'instance. Et si l'instance est statique le résultat sera plus grave encore car non détecté à la compilation.
4.3) avec le (3), si on y déclare des types, on doit s'assurer qu'ils n'y seront au plus une fois par unité de compilation.
5) un fichier d'entête doit être autonome et doit lui-même faire les include nécessaires pour les entités dont lui-même à besoin. Mais un fichier d'entête ne doit pas trop en faire, et inclure des fichiers dont il n'a pas besoin peut l'amener à une résolution impossible (références cycliques.)

Le
#ifdef 
et
#define 
qui sont toujours associés à un
#endif 
que tu as omis permettent de gérer le (4.3), Ton exemple n'est pas dans ce cas, donc ici tu n'en a pas besoin.

La seule et unique chose que tu as mis dans ton fichier d'entête ne respecte pas le (4.1). Ta fonction doit être déclarée dans l'entête et doit être définie dans un autre fichier source.

On arrive donc à la seconde notion : créer un projet qui contient plusieurs fichiers sources (et ici tu as besoin de 2 fichiers qui vont chacun inclure ton fichier d'entête.)
0