passage par valeur d'un tableau à l'aide d'une structure
Bonjour, dans mon cours il est dit :
''les passages de paramètres par valeur pour les tableaux sont impossibles car l’identificateur qui permet de les nommer est en fait l’équivalent de l’adresse m´emoire des emplacements où ils sont stockés.
Ce dernier problème peut être contourné en construisant un type struct (qui sera vu plus tard) dont l’unique champ serait de type tableau. Ainsi, le passage de paramètres par valeur qui est la norme avec les types struct induira un passage de paramètres par valeur pour le tableau qui est interne à ce type d’objets.''
Je n'arrive pas à trouver d'exemples sur le net qui explicite celà afin que je comprenne mieux. Je pense que cette explication signifie que dans les arguments d'une fonction, si au lieu de passer un type tableau je passe la structure telle que définie ci dessus, alors toutes modifications faites sur le tableau dans la fonction ne se répercute pas dans le tableau hors de la fonction, c'est celà? Je pense que c'est l'unique raison d'etre d'une telle combine.
texmaker trop lourd
Bonsoir. J'ai installé texmaker sur mon ubuntu 16.04 et j'ai eu un message d'alerte me disant que je n'ai bientot plus de place dans usr (5 go). L'outil graphique proposé m'a montré que la répartition des programmes est très entamée par texlive doc (presque 1 go). j'ai taché de vider var/tmp mais je n'ose pas trop toucher autre chose sans en connaitre les conséquences. Et je ne sais pas si je dois enlever texlive-doc. Pouvez vous m'aider s'il-vous-plait? Car je ne vais pas installer autre chose sur ma distribution sans avoir réglé ce problème. faut-il que je redimensionne mon usr (car j'ai encore de la place sur mon disque dur)? Si oui comment m'y prendre?
message d'erreur du compilateur gcc
Bonjour, J'ai créé ce petit programme :
#include<stdio.h>
int main()
{
int a;
a = calcul(2, 5);
printf("%d\n", a);
return 0;
}
int calcul(int y, z)
{
y = y+z;
return y;
}
Alors le problème c'est que j'obtiens ces messages d'erreur :
exo1.c: In function ‘main’:
exo1.c:5:3: warning: ISO C forbids nested functions [-Wpedantic]
int a
^
exo1.c:8:7: warning: implicit declaration of function ‘calcul’ [-Wimplicit-function-declaration]
a = calcul(2, 5);
^
exo1.c:7:18: error: ‘y’ undeclared (first use in this function)
printf("%d\n", y)
^
et là je comprends pas pourquoi...
pour exo1.c:10:18: error: unknown type name ‘z’ , j'ai appliqué ce qu'il y a dans mon cours, c'est-à-dire qu'on peut déclarer des variables simultanément si elles sont de meme type.
Je compile par gcc -W -Wall -ansi -pedantic -o monExo monExo.c
P;S: Ne me tapez pas trop fort dessus, je suis débutante...
valeurs booléennes et C
Bonjour, j'ai cet exercice :
int main()
{
int a,b,c,x,y,z;
x = 3 ; y = 2; z = 5; a = 1 ; b = 2; c = (a != b);
a = !c ; b = (a && c); c = (a || b);
x = x-z+y ; y = y+z; z = x-x;
return 0;
}
on obtient a=0, b=0 et c=0 en solutions à l'exercice précité, comment celà?
Dites moi si ma démarche est fausse.
a = 1 ; b = 2; c = (a != b);
b étant différent de 0 il prend la valeur booléenne vrai donc 1. a != b veut donc dire que a prend la valeur booléenne 0, et par affectation c aussi.
a = !c ;
on affecte à a l'inverse booléen de c, soit 1. a = 1
b = (a && c);
Autrement dit, b = (1&&0) donc b = 0.
c = (a || b);
Ben moi je traduis ça par c = (1||0) qui est vrai donc c = 1 et pas 0!!!
Pouvez vous me dire où est mon erreur?
De plus il est demandé d'afficher les valeurs, or dans printf je n'ai pas de format pour afficher un booléen. J'ai essayé pour voir %d mais évidemment la console me met un warning:
format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘char *’ [-Wformat=]
incrémentation, décrémentation et pile
Bonjour,
On trouve dans mon cours ce code pour obtenir une pile fonctionnelle :
OBJET espace[MAXPILE];
int nombreElements = 0;
– opération empiler la valeur de x " :
if (nombreElements >= MAXPILE)
erreur("tentative d’empilement dans une pile pleine");
espace[nombreElements++] = x;
– opération dépiler une valeur et la ranger dans x " :
if (nombreElements <= 0)
erreur("tentative de depilement d’une pile vide");
x = espace[--nombreElements];
Et bien je ne le comprend pas. Pour empiler j'aurai mis espace[++nombreElements] = x et pour dépiler x = espace[nombreElements--].
Il est dit dans le cours juste avant que:
L’affectation y = x++; équivaut à y = x; x = x + 1;
De meme y = ++x; équivaut à x = x + 1; y = x;
donc le code me fait penser que pour empiler il faut placer la valeur de x dans la valeur max de la pile avant incrémentation, or ce n'est pas logique car cet emplacement est déjà occupé par une autre valeur! Pareil pour le dépilage, le code fait décrémenter avant d'avoir mis la valeur du sommet de pile dans x. Donc c'est l'avant-dernière valeur de la pile qui est placée dans x. Pouvez-vous m'aider s'il-vous-plait?
problème de fonts
Bonjour, je fais mon site sous ubuntu et firefox et il semble que mon gedit ne prend en compte que très peu de polices de caractère dans mon css. Pour l'heure seuls monospace serif et sans serif ont fonctionné. Je n'ai pas cursive, fantasy, et encore moins verdana. Pourtant j'ai vérifié avec gnome specimen les polices installées et il y en a beaucoup! Mais elles ne fonctionnent pas. Dans gedit elles restent grisées quand je les tape derrière font-family. Y a-t'il un moyen de résoudre ce problème?