|
| BxG | Posté le 27/10/2005 @ 15:30 |
Astucien
1335 Messages
| Bonjour a tous, j'essais de me lancer dans kle language c mais j'ai déja un petit probléme: j'ai déja une erreur de syntaxe mais n'arive pas a la trouver, j'utilise turbo c++.
/*Mon premier programme C*/
#include <stdio.h>
main ()
int a, int i
{
i= 50
a= 50
int somme;
result= i + a;
return somme;
printf ("bonjour \n");
printf ("julien");
return 0;
}
merci d'avance
|
| |
| |
| Publicité |
|
|
| don diego | Posté le 27/10/2005 à 16:08 |
Petit astucien
323 Messages
| /* Tu as oblié le point virgule
int a,i;
/* Ensuite, pour afficher un entier fais ceci :
printf("somme : %d",somme); |
| |
|
| BxG | Posté le 27/10/2005 à 17:05 |
Astucien
1335 Messages
| ok merci sa marche,
mais j'ai une autre question, comment faire un lien, proposer un choix a l'utilisateur et l'envoyer ou l'on veut? |
| |
|
| don diego | Posté le 27/10/2005 à 19:26 |
Petit astucien
323 Messages
| Qu'est-ce que t'appelle faire u lien?
Pour proposer un choix à l'utilisateur, fais ceci :
int nombre;
scanf("Votre nombre : %d",&nombre); |
| |
|
| letellier_40 | Posté le 20/11/2005 à 02:50 |
Petit astucien
9 Messages
| Bonjor a tous
J'ai un souci en programmation de language c.Mon prof nous a donner un exo et je n'arrive pas a le faire ca fait deja 5 jours que cherche mais rien.L'enonce est le suivant:
"Soit n un nombre entier positif inferieur ou egal a 1000. Trouver tous les ensemble d'entiers strictement positif, tous different,dont la somme est n.
Par exemple pour 8 on trouve {1.2.5},{1.3.4},{1.7},{2.6},{3.5},{8}.On rangera les entiers d'un ensemble, en suivant l'ordre croissant, dans un tableau d'au plus 50 nombres"
Je vous remerci de votre aide. |
| |
|
| letellier_40 | Posté le 20/11/2005 à 02:52 |
Petit astucien
9 Messages
| Il dévore toutes choses,
Oiseaux, bêtes, arbres, fleurs.
Il ronge le fer, mord l'acier,
Réduit les dures pierres en poudre,
Met à mort les rois, détruit les villes,
Et aplatit les plus hautes montagnes.
Qu'est-ce que c'est ?
Je pense que c le temps!!![confus] |
| |
|
| breizhbugs | Posté le 20/11/2005 à 15:00 |
Astucien
3001 Messages
| Salut,
voici un tout petit point de depart, je dois avouer que j'ai du mal aussi...
const int STOP_TRUE = 0;
const int STOP_FALSE = 1;
int func(int n, int depart)
{
int tmp = n-depart;
if (tmp == 0)
{
printf("%d ", depart);
return STOP_TRUE;
}
else if (tmp > depart)
{
printf("%d ", depart);
depart = depart+1;
while (func(tmp, depart)==STOP_FALSE)
depart=depart+1;
}
else
return STOP_FALSE;
return STOP_TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
printf("nombre:");
scanf("%d", &n);
if (func(n, 1) == STOP_TRUE)
printf(" trouve\n");
else
printf(" PAS trouve\n");
return 0;
}
|
| |
|
| koala01 | Posté le 23/11/2005 à 04:00 |
Astucien
4715 Messages
| Salut,
Concernant le code de BxG, l'erreur vient, selon moi, de la position de la déclaration des variables a et i…
En effet, ou bien, tu les déclares en tant que variables globales (avant la première fonction que tu crées, et juste après les inclusions de fichiers) ou bien tu les déclares en locales, c'est à dire dans le bloc d'une fonction (et donc plus précisément après la première ouverture de crochets), mais ne tout cas pas entre le nom d'une fonction et l'ouverture du bloc d'instruction qu'elle contient[clindoeil]
La deuxieme erreur du premier code est la déclaration même de main()…
En C, il est impératif de fournir un type de renvoi ET un type d'argument (donc un type AVANT le nom, et au minimum un type entre les parenthèses), même si le type est "void" (vide)…
Les solutions sont donc du genre
pour une fonction qui ne renvoie rien et qui ne prend pas d'arguments
void main(void)
{
}
une fonction qui rnvoie un entier mais qui ne prend pas d'argument
int main(void)
{
}
une fonction qui prend n argument mais qui ne renvoi rien
void main (type1 nom1, type2 nom2, ..., typen nomn)
{
}
une fonction qui prend n arguments et qui renvoi un entier
int main (type1 nom1, type2 nom2, ..., typen nomn)
{
}
Il faut savoir que, théoriquement la fonction principale (main) ne devrait pas renvoyer d'autre valeur qu'un entier… pour les autres fonctions, évidemment, le type peut s'adapter en fonction du renvoi prévu…
Evidemment, si le type est "void" (vide), il ne faut pas mettre d'instruction return dedans, car le compilateur ne comprendrait pas que tu essaye de renvoyer une valeur alors que ce n'est pas prévu…
Concernant maintenant le code de breizhbugs…
Pourrais tu déjà nous indiquer le but recherché[question]
En attendant, je peux déjà relever quelques erreurs:
D'abord, tu n'a pas inclus de fichier…
Le C++ est comme le C, c'est un langage certes puissant par ses fichiers d'entetes, mais tout à fait impuissant s'il n'y en a aucun d'inclus…
Ensuite, le fait d'utiliser des valeurs de type _TCHAR (et une fonction _TMAIN)n'est peut etre pas ce qui se fait de mieux, car _TCHAR n'est pas à proprement parler un type d'origine (et que ca nécessite donc au minimum l'inclusion de l'entete dans laquelle on le trouve)
On peut aussi estimer qu'il est généralement préférable de définir les fonctions avant la fonction principale, mais de ne les implétmenter qu'après …
De plus, bien qu'il soit autorisé de ne pas utiliser les crochets
quand un bloc d'instructions est composé d'une seule instruction, il apparait bien plus lisible en pratique de garder l'habitude de mettre les blocs d'instructions entre crochets, meme si il n'en contient qu'une .
L'indentation correcte du code permet en outre de s'y retrouver bien plus facilement…(le BBCode [ code ] permet actuellement de présenter le code indenté[clindoeil])
On pourrait encore préciser qu'idéalement il ne devrait y avoir qu'un seul renvoi de valeur (instruction return) par fonction…
De même, je ne suis pas particulièrement convaincu de la nécessité (ni meme de l'utilité) de la déclartation des deux constantes (si encore il s'agissait de valeurs plus complexes que simplement 1 ou 0… d'autant plus que le C++ dispose du type booleen)…
Enfin, je ne suis pas persuadé du tout que la récursivité que tu essaies de mettre en oeuvre (et surtout de la manière dont tu essaie de l'implémenter)
Ce dernier point nécessite peut etre une petite explication:
Une fonction récursive n'est souvent qu'une manière académique détournée pour implémenter d'une boucle, qui, dans bien des cas (car des exceptions existent) peut être évitée.
Une boucle dans la fonction récursive peut s'avérer utile, mais en tout cas il est exceptionnel que la récursivité fasse partie du test qui détermine si la boucle doit être réeffectuée ou non.
|
| |
|
| breizhbugs | Posté le 23/11/2005 à 12:02 |
Astucien
3001 Messages
| Salut koala,
le fichier entete manquant est stdio.h et peut etre windows.h
Le but etait d'aider "letellier_40" mais d'une part etant depressif et sous traitement je n'ai pas la concentration necessaire pour resoudre le probleme dans son ensemble et d'autre part ne voyant pas de reponse de sa part et apres quelque recherches j'ai vu que la solution a ete posté ailleurs sur un autre forum ( http://groups.google.fr/group/fr.comp.algorithmes/browse_thread/thread/5b4265f27aee2157/cb10a80edc28f6d8#cb10a80edc28f6d8 ).
Enfin en ce qui concerne le _tmain, tu sais bien que les produits microsoft (Visual Studio C++ .net en l'occurence) en font toujours un peu trop... |
| |
|
| letellier_40 | Posté le 23/11/2005 à 15:23 |
Petit astucien
9 Messages
| Bonjour tous le monde je tenais a vous remercier car vu l'algoritme que ca donne je n'ourai sans doute jamais trouver.
MERCI a tous |
| |
|
| letellier_40 | Posté le 30/11/2005 à 13:52 |
Petit astucien
9 Messages
| Bonjour a tous
Merci pour otre aide
j'ai encore un souci en c[boom]
j'ai un tableau de 25 valeur au maximum
j'entre des valeurs
et la je dois retrouver la plus grande suite croissante et afficher le rang de la premiere valeur de cette suite[confus].
Merci d'avance |
| |
|
| letellier_40 | Posté le 30/11/2005 à 13:53 |
Petit astucien
9 Messages
| Je tiens aussi a signaler que j'utilise DEV C++ |
| |
|
| koala01 | Posté le 30/11/2005 à 15:12 |
Astucien
4715 Messages
| [nonnon]Il faudrait quand même veiller à ne pas espérer qu'on fasse tout le travail pour toi [clindoeil]…
Surtout si c'est dans le cadre d'un exercice de cours (comment veux tu apprendre comme cela [question])
Allez, comme ma mansuétude est très large, et bien que je ne sois pas sur que ce soit un bon service à te rendre, je te fournis un nassichneiderman qui reprend un des algorithmes possibles pour ce travail sous forme de procédure (je ne dis pas qu'il ne doit pas être adapté), qu'il ne te restera plus qu'à transformer en C++…
[img]http://koala01.free.fr/images/cherchesuite.PNG[/img]
Pour ne pas *trop* te macher la tache, je te le fournis "en vrac", sans explications, et sans liste des variables utilisées [clindoeil] |
| |
|
| letellier_40 | Posté le 30/11/2005 à 17:18 |
Petit astucien
9 Messages
| je te remerci encore mais je comprend mieux sur des exemples concret plutot que sur de le teorie avec 50 ligne qui ne veulent rien dire.
Merci encore. [approuve] |
| |
|
| letellier_40 | Posté le 30/11/2005 à 17:21 |
Petit astucien
9 Messages
| Je voudrai aussi savoir la reponse a l'enigme de don diego car j'ai proposer comme reponse le temps mais personne ma dis si c'etait ca ou pas?[confus] |
| |
|
| letellier_40 | Posté le 01/12/2005 à 14:24 |
Petit astucien
9 Messages
| Bonjour a tous
Quel sont les arguments de <conio.h>?
Merci pour votre reponse. |
| |
|
| koala01 | Posté le 01/12/2005 à 14:56 |
Astucien
4715 Messages
| Il n'y a pas d'arguments…
C'est un fichier d'entete: c'est à dire qu'il doit etre inclus par une instruction de "précompilateur" sous la forme de
[code]#include <conio.h>[/code] |
| |
|
| toutit28 | Posté le 14/12/2005 à 20:03 |
Petit astucien
2 Messages
| Bonjour, j'ai aussi un problème, J'ai fait un programme pour une puce PIC16F84A.
Mon programme est une timer qui monte jusqu'a 999 et recommence... je voudrais le faire monter a 15 et ensuite, le faie redescendre, mais je ne sais plus quoi faire. ensuite, j,aimerais qu'il m'affiche FPA... entk, si vous pouviez au moins m'aider pour le décompte... Merci!
Voici mon programme, selon moi, il faut modifier le if, mais je ne suis pas certain comment faire. Merci d'avance
#include <pic1684.h>
void interrupt inter (void);
unsigned char time;
int compteur=0;
void lumiere (int numero);
void main(void){
TRISA=0;
TRISB=0;
T0CS=0;
PS0=0;
PS1=0;
PS2=1;
PSA=0;
GIE=1;
TMR0=0;
T0IE=1;
do{
time=0;
while(time<=61){
lumiere(compteur);
}
compteur=compteur+1;
if(compteur>=999){
compteur=0;
}
}
while(1);
}
void interrupt inter(void){
time=time+1;
T0IF=0;
}
void lumiere(int numero) {
unsigned int delai;
int x,y,z;
x=numero;
y=numero;
z=numero;
PORTA=x/100;
RB5=0;
RB6=1;
RB7=1;
for(delai=1;delai<=1500;delai++);
y=y%100;
PORTA=y/10;
RB5=1;
RB6=0;
RB7=1;
for(delai=1;delai<=1500;delai++);
PORTA=z%10;
RB5=1;
RB6=1;
RB7=0;
for(delai=1;delai<=1500;delai++);
}
|
| |
|
| toutit28 | Posté le 15/12/2005 à 01:27 |
Petit astucien
2 Messages
| quelqu'un? s'il vous-plait? =( |
| |
|
|
| Haut de la page |