CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[langC et math ?]

]ultimacross[
]ultimacross[
Niveau 9
29 septembre 2013 à 01:24:26

bonjour à tous et merci d'etre venu visiter cette page et tenter de m'aider. ;)
j'aurais besoin de vous pour m'aider dans la programmation. il s'agit d'exercices sur les ensembles à programmer en langage C :
j'ai besoin d'aide que pour le premier exercice (j'en ai 8 à faire) car si je comprends tout au premier je pourrais faire les autres plus facilement. j'ai donc fais des recherches et fais quelques trucs mais j'étais pas sur donc j'ai pas mis grand chose, mais s'il vous plait j'aimerais pouvoir programmer ceci :

- l'ensemble sera une structure contenant :
le nombre d'éléments de l'ensemble
le tableau contenant les éléments

donc :

# include<stdio.h>

  1. define N 10

struct ensemble {
int nb;
int tab [N];
} ;
typedef struct ensemble ensemble ;

1./* lire les éléments d'un ensemble */

ensemble lire ()
{
int i ;
(je ne sais pas quoi mettre dans ma boucle for).

}

2./* afficher les éléments d'un ensemble */

void afficher ( ensemble E)
{
int i;
for (i=0; i < N; i++)
{
(je ne vois pas quoi mettre dans la boucle, E.tab[i] peut etre ? )

}

3./* un élément appartient-il à l'ensemble E ?*/

int appartient ( int elt, ensemble E)
{
return E[elt] ;
}
( est ce que c'est ca ou non ?)

4./* Union de deux ensembles */

ensemble unnion ( ensemble A, ensemble B)
{ int i;

for (i=0; i<N; i++)
{ A[i] || B[i] ;
}
}
( est ce que ca se fait de cette manière ?)

5./*Intersection de deux ensembles */

ensemble inter (ensemble A, ensemble B)
{
int i;
for (i=0; i<N; i++)
{ A[i] && B[i] ;
}
}
( je ne pense pas que ca se fasse comme ca ? )

/* LE PROGRAMME PRINCIPAL POUR TESTER LES FONCTIONS */

int main (void)
{
ensemble A,B ;
A = lire()
B = lire()
printf("A="); afficher (A) ;
printf("B="); afficher (B) ;
printf("AUB="); afficher (unnion(A,B)) ;
printf("AinterB="); afficher (inter(A,B) ;
}

merci vraiment pour ceux qui pourront m'aider rapidement.

]ultimacross[
]ultimacross[
Niveau 9
29 septembre 2013 à 11:59:09

personne n'aurait d'idée pour m'aider là, c'est un peu urgent en plus, j'ai demandé à certains qui en avait déjà fait mais ils veulent pas en dire plus

dark_drow
dark_drow
Niveau 15
29 septembre 2013 à 12:07:43

1- je pense que "lire" signifie "remplir" la structure tu aura donc besoin de scanf

2- E.tab[i] désigne l'élément i dans le tableau tab de la structure E. L'affichage se fait avec printf. en soit c'est quasi la même chose quela question 1

3- non il faut parcourir ta structure pour tester l'égalité

4 et 5 - non pas du tout, il faut créer une nouvelle structure et éventuellement te servir de la question 3

dark_drow
dark_drow
Niveau 15
29 septembre 2013 à 12:14:25

Ah oui et j'oubliais, utilise nb plutôt que N pour tes boucles même si pour ce cas précis nb et N sont égaux

]ultimacross[
]ultimacross[
Niveau 9
29 septembre 2013 à 22:45:49

donc dans la 1 ce serait :

{
int i, int a, int b ;
printf("entrez des valeurs dans la structure pour lire ses éléments\n")

for (i=0; i<nb; i++)
{
printf(" entrez a") ;
scanf ("%d\n", &a) ;
printf ("entrez b")
scanf ("%d\n", &b) ;
}
return 0 ;
}

est ce que c'est ca ? si c'est non je vois pas comment faire d'une autre façon et les autres questions non plus, si tu as le temps pourrais tu me montrer un exemple ?
merci.

dark_drow
dark_drow
Niveau 15
29 septembre 2013 à 22:53:19

Du tout, et c'est pas en te donnant la réponse que tu vas mieux comprendre je pense :)

tu as le prototype de ta fonction :
ensemble lire ();

ce qui signifie que tu vas devoir retourner un ensemble donc ta fonction va surement se décomposer en 3 étapes :
étape 1: créer une structure ensemble
étape 2: remplir cette structure ensemble
étape 3: retourner cette structure

]ultimacross[
]ultimacross[
Niveau 9
30 septembre 2013 à 21:07:56

ok bon l'étape 1 c'est déja fait avec struct ensemble et le typedef

pour l'étape 2.

{ int i;

for (i=0, i< nb , i++)
{
tab[i] = tab[i] + 1 ;
}
et pour l'étape 3.
return E.tab[i] ;
}
}

]ultimacross[
]ultimacross[
Niveau 9
30 septembre 2013 à 21:13:15

non, si tu donnais la réponse si j'ai compris je dirais rien à part merci , si j'avais pas compris je t'aurais demandé pourquoi tu as fais ca / pourquoi ca marche que dans cette expression des questions comme ca pour etre sur de la réponse

dark_drow
dark_drow
Niveau 15
01 octobre 2013 à 08:22:05

je pense que tu devrais reprendre un peu les bases parce que non t'a pas assimilé la notion de prototype d'une fonction déjà.
si ta fonction c'est
ensemble lire();
ça veut dire que tu dois retourner un ensemble cad :
ensemble lire()
{
ensemble e;
//...
return e;
}

SwordQuardo
SwordQuardo
Niveau 5
01 octobre 2013 à 12:16:04

http://pastebin.com/W3SFKeb8

Tu peux sécurisée un minimum la saisie en vérifiant si e.nb ne dépasse pas N [en ce qui concerne le problème liè à la saisie de caractère, inutile que tu le fasses si tu l'as pas encore appris]

dark_drow
dark_drow
Niveau 15
01 octobre 2013 à 15:58:41

^ je vois pas l'intérêt de lui macher le travail hein, la programmation c'est pas du recopiage en se disant "ah oui fallait faire ça"

SwordQuardo
SwordQuardo
Niveau 5
01 octobre 2013 à 17:05:53

Il y en a pas: j'avais juste rien à faire....

]ultimacross[
]ultimacross[
Niveau 9
02 octobre 2013 à 00:06:45

merci pour ce début de réponse, et oui tu as raison ce n'est pas que du recopiage mais dans les faits que je dois faire 8 exercices ( j'ai posté que 1 seul ) que je fais depuis un moment et qui sont à rendre le lendemain, j'ai un petit besoin d'aide rapide pour au moins faire un exercice , revoir les fonctions de bases en même temps et suivre la logique pour faire les autres exercices :)

et oui je vais donc revoir les fonctions et leur typage aussi :)

]ultimacross[
]ultimacross[
Niveau 9
02 octobre 2013 à 00:18:29

pour la question 2 c'est ca ? :

VOID AFFICHER (ENSEMBLE E)

{
int i;

printf("affichons le nombre d'element ");

for (i = 0; i < e.nb; i++)
{
printf("%d\n", &(e.tab[i])) ;

}
return e ;
}

(ou bien il manque un paramètre au début ?)

]ultimacross[
]ultimacross[
Niveau 9
02 octobre 2013 à 00:23:07

et pour la question 3 ?

il me faut utiliser des pointeurs ?

SwordQuardo
SwordQuardo
Niveau 5
02 octobre 2013 à 06:22:25

2- printf("%d\n", &(e.tab[i])) ;

  • ce n'est pas 'VOID AFFICHER (ENSEMBLE E) ' mais 'void affficher(ensemble e)': les variables en majuscules sont des constantes.
  • printf("%d\n", &(e.tab[i])) ;

tu ne dois pas metre le '&', car il correspond à l'adresse de la variable e.tab[i] (cela doit être marqué dans ton cours)

3-tu cherches à savoir si elt est dans e.tab, donc tu parcours e.tab, et si e.tab[i] == elt, alors tu renvoie true, sinon, alors tu as parcouru tout ton tableau; dans ce cas tu renvoie false

]ultimacross[
]ultimacross[
Niveau 9
02 octobre 2013 à 20:17:14

oui bien sur, j'avais fais un peu trop vite la fonction et le printf :) merci

donc c'est plutôt :

2.

void afficher (ensemble e)

{
int i;

printf("affichons le nombre d'element\n");

for (i = 0 ; i < e.nb ; i++)
{
printf("%d\n",(e.tab[i])) ;
}

return e ;
}

3.

int appartient ( int elt, ensemble e)
{
int i;

printf("cet element est-il dans l'ensemble e ?\n");

for (i = 0 ; i < e.nb ; i++)
{
printf("%d\n",(e.tab[i])) ;

if (e.tab[i] == elt )
{
return true ; }

else

{
return false ; }

et si on mettait return E[elt] ? ca pourrait marcher ?

dark_drow
dark_drow
Niveau 15
02 octobre 2013 à 21:15:38
  • utilise pastebin pour ton code, l'indentation est une horreur pour la question 3.
  • écrit comme ça, ta fonction va juste tester le 1er élément
  • par convention on met en C true=1 et false=0 si c'est ta question
SwordQuardo
SwordQuardo
Niveau 5
02 octobre 2013 à 21:30:47

Alors

2- 2 problèmes

void afficher (ensemble e) {
...
printf("affichons le nombre d'element\n");
...
return e;
}

  • Tu n'affiches pas le nombre d'elements, tu affiche les éléments contenus dans l'ensemble e...
  • Tu as une fonction qui retourne rien (void), donc tu ne dois pas retourner e...

3- 3 problèmes

  • 'printf("cet element est-il dans l'ensemble e ?\n"); '

-> Si tu veux marqué ça, alors tu dois au moins mettre la valeur de l'élément cherché
'printf("%d\n",(e.tab[i])) ; '
-> Pourquoi tu affiches les éléments de l'ensemble?

  • Tu ouvres une boucle for que tu ne fermes pas (il manque des accolades)
  • Ta condition ne va pas.

+> exemple:

ta fonction (en enlevant les printf, et en paranthésant correctement[je parle des accolades]) est:

int appartient ( int elt, ensemble e)
{
int i;
for (i = 0 ; i < e.nb ; i++)
{
if (e.tab[i] == elt )
return true;
else
return false;
}
}

tu as l'ensemble e={1,2,3,4,5} et tu cherches l'élément 3, si j'en suis ton programme, alors, une fois dans la boucle for:
-i=0, e.tab[i]=1, elt=3
=> if: e.tab[i]!= elt car 1!=3
=>on va dans le else: on retourne false
-fin
Il y a donc un problème.

Aussi, je ne sais pas si tu as vu les booléens en C, mais pour les utiliser, tu dois inclure stdbool.h. (ou sinon, tu retourne un nombre positif pour true et 0 pour false)

=> return e[elt] retourne l'entier à l'indice elt du tableau e.tab, donc cela ne va pas.

==>> Tu ferais mieux de tout reprendre à 0, en lisant un tuto sur les bases du C (google); car sinon, tu ne pourras jamais finir tes exos...

]ultimacross[
]ultimacross[
Niveau 9
02 octobre 2013 à 21:46:23

oui là je ne sais pas quoi faire je vais voir
mais vous dites de revoir les bases de fonctions , de typage et autres mais ça là, c'est pas censé etre des trucs de base ?
parce que je vois comment le truc fonctionne mais pour l'écrire avec des ensembles, des fois c'est pas clair

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment