Débutant et étourdi ; ca ne fait pas bon ménage mais avec un peu d'aide et de persévérance...
27 réponses
bpascal123
Bonjour,
Voici le script qui me fait tourner la t=EAte car ca fonctionne pour un
nombre qui fait partie de la premi=E8re partie du tableau mais pas de la
seconde ???
=3D=3D=3D
#include <stdio.h>
main()
{
int Tab[100] ;
int N ;
int VAL ;
int POS ;
int midPOS ;
int op ;
int i, j ;
int cnt =3D 1 ;
int permut1 ;
printf("Entrez une valeur a rechercher : \n\n") ;
scanf("%d", &VAL ) ;
printf("\n\n") ;
midPOS =3D N/2 ;
if ( VAL < Tab[midPOS] )
{
for ( i =3D 0, POS=3D0 ; i < midPOS ; i+
+ )
if ( Tab[i] =3D VAL )
POS =3D i ;
printf("(tri 1ere moitie) \t La valeur se trouve en
position %d", POS
+1);
}
else if ( VAL >=3D Tab[midPOS] )
{
for ( i =3D midPOS ; i < N ; i+
+ )
{
if ( Tab[i] =3D VAL )
{
POS =3D i;
}
}
printf("(tri 2nde moitie) \t La valeur se trouve en
position %d", POS
+1) ;
}
Je suis le seul à être choqué ? Ou je suis trop tatillon ?
qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Désolé mais ce n'est pas clair. On ne sait pas ce que devrait faire le programme. De ton source, on ne peut qu'en déduire son fonctionnement (et éventuellement deviner ce que tu cherches à faire). Donc :
1 - qu'est censé faire ton programme ? 2 - quel est le comportement observé ?
Et pourquoi as-tu posté plusieurs fois ? -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
Je suis le seul à être choqué ? Ou je suis trop tatillon ?
qui me fait tourner la tête car ca fonctionne pour un
nombre qui fait partie de la première partie du tableau mais pas de la
seconde ???
Désolé mais ce n'est pas clair. On ne sait pas ce que devrait faire
le programme. De ton source, on ne peut qu'en déduire son fonctionnement
(et éventuellement deviner ce que tu cherches à faire). Donc :
1 - qu'est censé faire ton programme ?
2 - quel est le comportement observé ?
Et pourquoi as-tu posté plusieurs fois ?
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Je suis le seul à être choqué ? Ou je suis trop tatillon ?
qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Désolé mais ce n'est pas clair. On ne sait pas ce que devrait faire le programme. De ton source, on ne peut qu'en déduire son fonctionnement (et éventuellement deviner ce que tu cherches à faire). Donc :
1 - qu'est censé faire ton programme ? 2 - quel est le comportement observé ?
Et pourquoi as-tu posté plusieurs fois ? -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org
Ce n'est pas sympathique de m'insulter ainsi, alors que j'essaye de te donner des clés pour qu'on puisse t'aider.
Les éléments que je t'ai demandé sont indispensable à ta démarche. Si tu crois pouvoir t'en passer, alors paye quelqu'un qui accepte de faire le larbin pour toi. Je ne suis pas de cette espèce.
Ce n'est pas sympathique de m'insulter ainsi, alors que j'essaye de
te donner des clés pour qu'on puisse t'aider.
Les éléments que je t'ai demandé sont indispensable à ta démarche. Si
tu crois pouvoir t'en passer, alors paye quelqu'un qui accepte de faire
le larbin pour toi. Je ne suis pas de cette espèce.
Ce n'est pas sympathique de m'insulter ainsi, alors que j'essaye de te donner des clés pour qu'on puisse t'aider.
Les éléments que je t'ai demandé sont indispensable à ta démarche. Si tu crois pouvoir t'en passer, alors paye quelqu'un qui accepte de faire le larbin pour toi. Je ne suis pas de cette espèce.
C'est drôle que tu dises ça... ton triple post ressemble presque à un sketch récent sur le travail dominical !
D'abord, en C, on ne parle pas de script mais... de programme. Mais enfin, passons sur la terminologie.
Tu arrives comme si on était déjà dans le bain de ton problème. Tu n'expose absolument rien, même pas le but de la manoeuvre, et tu réclames de l'aide sans aider le lecteur. Ne viens pas te plaindre de ne pas avoir de réponse pertinente.
Et d'abord, juste en copiant-collant ton code, voilà ce que ça donne :
---------------------------------------------------------------- make gcc -W -Wall -pedantic -stdÉ9 main.c -o main main.c:4: warning: return type defaults to ‘int’ main.c:18:16: warning: missing terminating " character main.c: In function ‘main’: main.c:18: error: missing terminating " character main.c:19: error: ‘valeur’ undeclared (first use in this function) main.c:19: error: (Each undeclared identifier is reported only once main.c:19: error: for each function it appears in.) main.c:19: error: expected ‘)’ before ‘et’ main.c:20:13: warning: missing terminating " character main.c:20: error: missing terminating " character main.c:66:24: warning: missing terminating " character main.c:66: error: missing terminating " character main.c:67:12: warning: missing terminating " character main.c:67: error: missing terminating " character main.c:81:24: warning: missing terminating " character main.c:81: error: missing terminating " character main.c:82:12: warning: missing terminating " character main.c:82: error: missing terminating " character main.c:91: error: expected declaration or statement at end of input main.c:14: warning: unused variable ‘permut1’ main.c:13: warning: unused variable ‘cnt’ main.c:12: warning: unused variable ‘j’ main.c:12: warning: unused variable ‘i’ main.c:11: warning: unused variable ‘op’ main.c:10: warning: unused variable ‘midPOS’ main.c:9: warning: unused variable ‘POS’ main.c:8: warning: unused variable ‘VAL’ main.c:6: warning: unused variable ‘N’ main.c:5: warning: unused variable ‘Tab’ make: *** [all] Error 1
Compilation exited abnormally with code 2 at Fri Jun 26 18:18:57 ----------------------------------------------------------------
Alors, Monsieur Sarkozy, revoyez la copie svp. J'ose croire que vous êtes assez intelligent pour comprendre les raisons de ce fiasco.
-- Alex
bpascal123@googlemail.com wrote:
C'est le protocole de Sarkozy ?
C'est drôle que tu dises ça... ton triple post ressemble presque à un
sketch récent sur le travail dominical !
D'abord, en C, on ne parle pas de script mais... de programme. Mais
enfin, passons sur la terminologie.
Tu arrives comme si on était déjà dans le bain de ton problème. Tu
n'expose absolument rien, même pas le but de la manoeuvre, et tu
réclames de l'aide sans aider le lecteur. Ne viens pas te plaindre de ne
pas avoir de réponse pertinente.
Et d'abord, juste en copiant-collant ton code, voilà ce que ça donne :
----------------------------------------------------------------
make
gcc -W -Wall -pedantic -stdÉ9 main.c -o main
main.c:4: warning: return type defaults to ‘int’
main.c:18:16: warning: missing terminating " character
main.c: In function ‘main’:
main.c:18: error: missing terminating " character
main.c:19: error: ‘valeur’ undeclared (first use in this function)
main.c:19: error: (Each undeclared identifier is reported only once
main.c:19: error: for each function it appears in.)
main.c:19: error: expected ‘)’ before ‘et’
main.c:20:13: warning: missing terminating " character
main.c:20: error: missing terminating " character
main.c:66:24: warning: missing terminating " character
main.c:66: error: missing terminating " character
main.c:67:12: warning: missing terminating " character
main.c:67: error: missing terminating " character
main.c:81:24: warning: missing terminating " character
main.c:81: error: missing terminating " character
main.c:82:12: warning: missing terminating " character
main.c:82: error: missing terminating " character
main.c:91: error: expected declaration or statement at end of input
main.c:14: warning: unused variable ‘permut1’
main.c:13: warning: unused variable ‘cnt’
main.c:12: warning: unused variable ‘j’
main.c:12: warning: unused variable ‘i’
main.c:11: warning: unused variable ‘op’
main.c:10: warning: unused variable ‘midPOS’
main.c:9: warning: unused variable ‘POS’
main.c:8: warning: unused variable ‘VAL’
main.c:6: warning: unused variable ‘N’
main.c:5: warning: unused variable ‘Tab’
make: *** [all] Error 1
Compilation exited abnormally with code 2 at Fri Jun 26 18:18:57
----------------------------------------------------------------
Alors, Monsieur Sarkozy, revoyez la copie svp. J'ose croire que vous
êtes assez intelligent pour comprendre les raisons de ce fiasco.
C'est drôle que tu dises ça... ton triple post ressemble presque à un sketch récent sur le travail dominical !
D'abord, en C, on ne parle pas de script mais... de programme. Mais enfin, passons sur la terminologie.
Tu arrives comme si on était déjà dans le bain de ton problème. Tu n'expose absolument rien, même pas le but de la manoeuvre, et tu réclames de l'aide sans aider le lecteur. Ne viens pas te plaindre de ne pas avoir de réponse pertinente.
Et d'abord, juste en copiant-collant ton code, voilà ce que ça donne :
---------------------------------------------------------------- make gcc -W -Wall -pedantic -stdÉ9 main.c -o main main.c:4: warning: return type defaults to ‘int’ main.c:18:16: warning: missing terminating " character main.c: In function ‘main’: main.c:18: error: missing terminating " character main.c:19: error: ‘valeur’ undeclared (first use in this function) main.c:19: error: (Each undeclared identifier is reported only once main.c:19: error: for each function it appears in.) main.c:19: error: expected ‘)’ before ‘et’ main.c:20:13: warning: missing terminating " character main.c:20: error: missing terminating " character main.c:66:24: warning: missing terminating " character main.c:66: error: missing terminating " character main.c:67:12: warning: missing terminating " character main.c:67: error: missing terminating " character main.c:81:24: warning: missing terminating " character main.c:81: error: missing terminating " character main.c:82:12: warning: missing terminating " character main.c:82: error: missing terminating " character main.c:91: error: expected declaration or statement at end of input main.c:14: warning: unused variable ‘permut1’ main.c:13: warning: unused variable ‘cnt’ main.c:12: warning: unused variable ‘j’ main.c:12: warning: unused variable ‘i’ main.c:11: warning: unused variable ‘op’ main.c:10: warning: unused variable ‘midPOS’ main.c:9: warning: unused variable ‘POS’ main.c:8: warning: unused variable ‘VAL’ main.c:6: warning: unused variable ‘N’ main.c:5: warning: unused variable ‘Tab’ make: *** [all] Error 1
Compilation exited abnormally with code 2 at Fri Jun 26 18:18:57 ----------------------------------------------------------------
Alors, Monsieur Sarkozy, revoyez la copie svp. J'ose croire que vous êtes assez intelligent pour comprendre les raisons de ce fiasco.
-- Alex
candide
a écrit :
Voici le script qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Un compilateur bien réglé dont on lit et corrige les avertissements permet de coder en étant très étourdi. Essaye et tu verras que le compilateur te montrera une "erreur" qui n'est peut-être pas étrangère aux résultats inattendus que tu obtiens. Si tu ne sais pas ce que c'est que "les avertissements du compilateur", regarde par exemple ICI :
Les "avertissements du compilateurs" ne sont pas une panacée et quand on a le cerveau momentanément ou durablement en panne (je parle d'expérience ;) ), il existe un autre outil qui permet de réparer du code correct au sens du compilateur et qui ne donne pas les résultats attendus : un débogueur.
Par ailleurs, on t'a posé une question tout-à-fait pertinente ("qu'est censé faire ton programme ?" et j'ajouterais : qu'est-ce que TOI tu veux faire en ayant programmé ce que tu nous a montré ?) et j'ai trouvé ta réponse fort cavalière ce qui ne me donne pas l'envie de t'aider davantage.
bpascal123@googlemail.com a écrit :
Voici le script qui me fait tourner la tête car ca fonctionne pour un
nombre qui fait partie de la première partie du tableau mais pas de la
seconde ???
Un compilateur bien réglé dont on lit et corrige les avertissements permet de
coder en étant très étourdi. Essaye et tu verras que le compilateur te montrera
une "erreur" qui n'est peut-être pas étrangère aux résultats inattendus que tu
obtiens. Si tu ne sais pas ce que c'est que "les avertissements du compilateur",
regarde par exemple ICI :
Les "avertissements du compilateurs" ne sont pas une panacée et quand on a le
cerveau momentanément ou durablement en panne (je parle d'expérience ;) ), il
existe un autre outil qui permet de réparer du code correct au sens du
compilateur et qui ne donne pas les résultats attendus : un débogueur.
Par ailleurs, on t'a posé une question tout-à-fait pertinente ("qu'est censé
faire ton programme ?" et j'ajouterais : qu'est-ce que TOI tu veux faire en
ayant programmé ce que tu nous a montré ?) et j'ai trouvé ta réponse fort
cavalière ce qui ne me donne pas l'envie de t'aider davantage.
Voici le script qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Un compilateur bien réglé dont on lit et corrige les avertissements permet de coder en étant très étourdi. Essaye et tu verras que le compilateur te montrera une "erreur" qui n'est peut-être pas étrangère aux résultats inattendus que tu obtiens. Si tu ne sais pas ce que c'est que "les avertissements du compilateur", regarde par exemple ICI :
Les "avertissements du compilateurs" ne sont pas une panacée et quand on a le cerveau momentanément ou durablement en panne (je parle d'expérience ;) ), il existe un autre outil qui permet de réparer du code correct au sens du compilateur et qui ne donne pas les résultats attendus : un débogueur.
Par ailleurs, on t'a posé une question tout-à-fait pertinente ("qu'est censé faire ton programme ?" et j'ajouterais : qu'est-ce que TOI tu veux faire en ayant programmé ce que tu nous a montré ?) et j'ai trouvé ta réponse fort cavalière ce qui ne me donne pas l'envie de t'aider davantage.
zwim
Le Fri, 26 Jun 2009 03:23:17 -0700 (PDT) a écrit
Bonjour,
bonjour,
Voici le script qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Sont pas tendres avec les newbies, au moins tu as dit bonjour, et c'est pas écrit en language sms, un bon début.
== > #include <stdio.h>
main()
int main(void)
{ int Tab[100] ; int N ;
int VAL ; int POS ; int midPOS ; int op ; int i, j ; int cnt = 1 ; int permut1 ;
printf("nn==============================nn") ;
printf("Ce prg lit, affiche un tableau et y recherche une valeur et sa position.") ;
printf("nn===============nn") ;
mets plutôt le n au bout de la phrase précédente (cette remarque vaut pour la suite)
printf("Entrez le nbr de valeurs : ") ; scanf("%d", &N);
il faudrait vérifier que N < 100
for ( i = 0 ; i < N ; i++ ) { Tab[i] = op * 10 / 8 + 3 * 2 ;
op non initialisé lors de sa première utilisation --> U.B.
et tu fais l'opération ((op*10)/8) + 6 est-ce bien ce que tu veux ? sinon, mets des ( )
utilise plutôt la valeur de i, plutôt que op pour remplir ton tableau T[i] = fonction(i)
e.g. T[i] = (i * 8743657847) % 341
op = Tab[i] ; printf("%4d", Tab[i]) ;
"%4d " avec au moins un espace après, c'est mieux. rien de faux, mais compter sur le fait que le %4d va mettre un espace à ta place, c'est pas terrible.
}
printf("nn===============nn") ;
for ( i = 0 ; i < N ; i++ ) { if ( Tab[i] > Tab[i+1] )
T[i+1] sort du tableau pour i=N-1, car T[N] n'a pas été rempli par la boucle précédente.
Que tu crois... Le bubble sort nécessite au moins 2 boucles imbriquées...
void bubbleSort(int numbers[], int array_size) { int i, j, temp;
for (i = (array_size - 1); i >= 0; i--) { for (j = 1; j <= i; j++) { if (numbers[j-1] > numbers[j]) { temp = numbers[j-1]; numbers[j-1] = numbers[j]; numbers[j] = temp; } } } }
for ( i = 0 ; i < N ; i++ ) printf("%4d", Tab[i]) ;
printf("n===============nn") ;
printf("Entrez une valeur a rechercher : nn") ; scanf("%d", &VAL ) ;
printf("nn") ;
midPOS = N/2 ;
if ( VAL < Tab[midPOS] ) { for ( i = 0, POS=0 ; i < midPOS ; i+ + ) if ( Tab[i] = VAL )
Attention, l'opérateur de comparaison c'est == et pas
POS = i ; printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS +1); }
else if ( VAL >= Tab[midPOS] ) { for ( i = midPOS ; i < N ; i+ + ) { if ( Tab[i] = VAL ) { POS = i; } } printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS +1) ; }
Pouquoi séparer la recherche dans 2 moitiées de tableau ?! La tableau est trié donc
for i = 0 to N-1 if T[i] >= VAL break
et pas besoin de POS, i suffit.
else printf("No match!") ;
printf("nn==============================nn") ;
return 0 ;
Y'a encore du boulot... Si tu peux reposter ton code après l'avoir corrigé, ce serait bien.
-- zwim. Rien n'est impossible que la mesure de la volonté humaine...
Le Fri, 26 Jun 2009 03:23:17 -0700 (PDT)
bpascal123@googlemail.com a écrit
Bonjour,
bonjour,
Voici le script qui me fait tourner la tête car ca fonctionne pour un
nombre qui fait partie de la première partie du tableau mais pas de la
seconde ???
Sont pas tendres avec les newbies, au moins tu as dit bonjour, et
c'est pas écrit en language sms, un bon début.
== >
#include <stdio.h>
main()
int main(void)
{
int Tab[100] ;
int N ;
int VAL ;
int POS ;
int midPOS ;
int op ;
int i, j ;
int cnt = 1 ;
int permut1 ;
printf("nn==============================nn") ;
printf("Ce prg lit, affiche un tableau et y recherche une
valeur et
sa position.") ;
printf("nn===============nn") ;
mets plutôt le n au bout de la phrase précédente (cette remarque vaut
pour la suite)
printf("Entrez le nbr de valeurs : ") ;
scanf("%d", &N);
il faudrait vérifier que N < 100
for ( i = 0 ; i < N ; i++ )
{
Tab[i] = op * 10 / 8 + 3 * 2 ;
op non initialisé lors de sa première utilisation --> U.B.
et tu fais l'opération ((op*10)/8) + 6 est-ce bien ce que tu veux ?
sinon, mets des ( )
utilise plutôt la valeur de i, plutôt que op pour remplir ton tableau
T[i] = fonction(i)
e.g. T[i] = (i * 8743657847) % 341
op = Tab[i] ;
printf("%4d", Tab[i]) ;
"%4d " avec au moins un espace après, c'est mieux. rien de faux, mais
compter sur le fait que le %4d va mettre un espace à ta place, c'est
pas terrible.
}
printf("nn===============nn") ;
for ( i = 0 ; i < N ; i++ )
{
if ( Tab[i] > Tab[i+1] )
T[i+1] sort du tableau pour i=N-1, car T[N] n'a pas été rempli par la
boucle précédente.
Que tu crois... Le bubble sort nécessite au moins 2 boucles
imbriquées...
void bubbleSort(int numbers[], int array_size)
{
int i, j, temp;
for (i = (array_size - 1); i >= 0; i--)
{
for (j = 1; j <= i; j++)
{
if (numbers[j-1] > numbers[j])
{
temp = numbers[j-1];
numbers[j-1] = numbers[j];
numbers[j] = temp;
}
}
}
}
for ( i = 0 ; i < N ; i++ )
printf("%4d", Tab[i]) ;
printf("n===============nn") ;
printf("Entrez une valeur a rechercher : nn") ;
scanf("%d", &VAL ) ;
printf("nn") ;
midPOS = N/2 ;
if ( VAL < Tab[midPOS] )
{
for ( i = 0, POS=0 ; i < midPOS ; i+
+ )
if ( Tab[i] = VAL )
Attention, l'opérateur de comparaison c'est == et pas
POS = i ;
printf("(tri 1ere moitie) t La valeur se trouve en
position %d", POS
+1);
}
else if ( VAL >= Tab[midPOS] )
{
for ( i = midPOS ; i < N ; i+
+ )
{
if ( Tab[i] = VAL )
{
POS = i;
}
}
printf("(tri 2nde moitie) t La valeur se trouve en
position %d", POS
+1) ;
}
Pouquoi séparer la recherche dans 2 moitiées de tableau ?!
La tableau est trié donc
for i = 0 to N-1
if T[i] >= VAL
break
et pas besoin de POS, i suffit.
else
printf("No match!") ;
printf("nn==============================nn") ;
return 0 ;
Y'a encore du boulot...
Si tu peux reposter ton code après l'avoir corrigé, ce serait bien.
--
zwim.
Rien n'est impossible que la mesure de la volonté humaine...
Voici le script qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Sont pas tendres avec les newbies, au moins tu as dit bonjour, et c'est pas écrit en language sms, un bon début.
== > #include <stdio.h>
main()
int main(void)
{ int Tab[100] ; int N ;
int VAL ; int POS ; int midPOS ; int op ; int i, j ; int cnt = 1 ; int permut1 ;
printf("nn==============================nn") ;
printf("Ce prg lit, affiche un tableau et y recherche une valeur et sa position.") ;
printf("nn===============nn") ;
mets plutôt le n au bout de la phrase précédente (cette remarque vaut pour la suite)
printf("Entrez le nbr de valeurs : ") ; scanf("%d", &N);
il faudrait vérifier que N < 100
for ( i = 0 ; i < N ; i++ ) { Tab[i] = op * 10 / 8 + 3 * 2 ;
op non initialisé lors de sa première utilisation --> U.B.
et tu fais l'opération ((op*10)/8) + 6 est-ce bien ce que tu veux ? sinon, mets des ( )
utilise plutôt la valeur de i, plutôt que op pour remplir ton tableau T[i] = fonction(i)
e.g. T[i] = (i * 8743657847) % 341
op = Tab[i] ; printf("%4d", Tab[i]) ;
"%4d " avec au moins un espace après, c'est mieux. rien de faux, mais compter sur le fait que le %4d va mettre un espace à ta place, c'est pas terrible.
}
printf("nn===============nn") ;
for ( i = 0 ; i < N ; i++ ) { if ( Tab[i] > Tab[i+1] )
T[i+1] sort du tableau pour i=N-1, car T[N] n'a pas été rempli par la boucle précédente.
Que tu crois... Le bubble sort nécessite au moins 2 boucles imbriquées...
void bubbleSort(int numbers[], int array_size) { int i, j, temp;
for (i = (array_size - 1); i >= 0; i--) { for (j = 1; j <= i; j++) { if (numbers[j-1] > numbers[j]) { temp = numbers[j-1]; numbers[j-1] = numbers[j]; numbers[j] = temp; } } } }
for ( i = 0 ; i < N ; i++ ) printf("%4d", Tab[i]) ;
printf("n===============nn") ;
printf("Entrez une valeur a rechercher : nn") ; scanf("%d", &VAL ) ;
printf("nn") ;
midPOS = N/2 ;
if ( VAL < Tab[midPOS] ) { for ( i = 0, POS=0 ; i < midPOS ; i+ + ) if ( Tab[i] = VAL )
Attention, l'opérateur de comparaison c'est == et pas
POS = i ; printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS +1); }
else if ( VAL >= Tab[midPOS] ) { for ( i = midPOS ; i < N ; i+ + ) { if ( Tab[i] = VAL ) { POS = i; } } printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS +1) ; }
Pouquoi séparer la recherche dans 2 moitiées de tableau ?! La tableau est trié donc
for i = 0 to N-1 if T[i] >= VAL break
et pas besoin de POS, i suffit.
else printf("No match!") ;
printf("nn==============================nn") ;
return 0 ;
Y'a encore du boulot... Si tu peux reposter ton code après l'avoir corrigé, ce serait bien.
-- zwim. Rien n'est impossible que la mesure de la volonté humaine...
espie
In article , zwim wrote:
Le Fri, 26 Jun 2009 03:23:17 -0700 (PDT) a écrit
Bonjour,
bonjour,
Voici le script qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Sont pas tendres avec les newbies, au moins tu as dit bonjour, et c'est pas écrit en language sms, un bon début.
Attend, faut pas pousser memes dans les orties non plus. On lui a demande des precisions legitimes, il nous a envoye balader. C'est pas la hotline AOL non plus...
In article <klba455t562qlfd7pm3d08ic2ubqa2iire@4ax.com>,
zwim <zwim@f_ree.fr> wrote:
Le Fri, 26 Jun 2009 03:23:17 -0700 (PDT)
bpascal123@googlemail.com a écrit
Bonjour,
bonjour,
Voici le script qui me fait tourner la tête car ca fonctionne pour un
nombre qui fait partie de la première partie du tableau mais pas de la
seconde ???
Sont pas tendres avec les newbies, au moins tu as dit bonjour, et
c'est pas écrit en language sms, un bon début.
Attend, faut pas pousser memes dans les orties non plus. On lui a demande
des precisions legitimes, il nous a envoye balader. C'est pas la hotline AOL
non plus...
Voici le script qui me fait tourner la tête car ca fonctionne pour un nombre qui fait partie de la première partie du tableau mais pas de la seconde ???
Sont pas tendres avec les newbies, au moins tu as dit bonjour, et c'est pas écrit en language sms, un bon début.
Attend, faut pas pousser memes dans les orties non plus. On lui a demande des precisions legitimes, il nous a envoye balader. C'est pas la hotline AOL non plus...
bpascal123
Bonjour,
Mes excuses aux uns et aux autres. J'ai en premier eu le sentiment que bien qu'en l'absence d'un modérateur dans ce groupe qui peut ralentir la publication de message ou filtrer les messages hors sujet, il y a avait "un protocole" tel que s'annoncer à une personne importante, annoncer pourquoi on veut la voir etc...attendre avant l'entretien -je me suis un peu laissé emporter car exécuter ce script me semble simple à comprendre ou peut-être c'est parce que je ne suis pas rapide et j'ai passé la journée à essayer de faire marcher ce programme.
Je commence à apprendre le C avec 2 ouvrages et l'un des ouvrage n'approfondit pas beaucoup. Je pensais avec cet ouvrage avoir comprit les tableaux (auparavant, j'ai étudié seul pendant 6-8 mois les algorithmes pour non-matheux du Site d'un prof de Jussieu et passé également du temps sur les tableaux...) Arrivé au chapitre des pointeurs de l'ouvrage qui n'approfondit pas beaucoup, je pensais avoir compris les tableaux mais ce n'était pas le cas. Alors je dois revenir quelques pages en arrière, car je pense avoir été trop sûre de moi et laisser les tableaux trop vite d'où c e post (et puis j'ai posté 3 fois car j'avais oublié de rendre le programme plus lisible que celui qui est sur la machine...) apparemment ça n'était pas assez lisible, je ne sais même pas comment vous avez fait pour voir les posts qu'il m'avait semblé supprimer??? .
Encore mes excuses pour la réponse précédente, je reconnais que ce n'est pas une façon d'attendre une réponse.
Pascal
Bonjour,
Mes excuses aux uns et aux autres. J'ai en premier eu le sentiment que
bien qu'en l'absence d'un modérateur dans ce groupe qui peut ralentir
la publication de message ou filtrer les messages hors sujet, il y a
avait "un protocole" tel que s'annoncer à une personne importante,
annoncer pourquoi on veut la voir etc...attendre avant l'entretien -je
me suis un peu laissé emporter car exécuter ce script me semble simple
à comprendre ou peut-être c'est parce que je ne suis pas rapide et
j'ai passé la journée à essayer de faire marcher ce programme.
Je commence à apprendre le C avec 2 ouvrages et l'un des ouvrage
n'approfondit pas beaucoup. Je pensais avec cet ouvrage avoir comprit
les tableaux (auparavant, j'ai étudié seul pendant 6-8 mois les
algorithmes pour non-matheux du Site d'un prof de Jussieu et passé
également du temps sur les tableaux...)
Arrivé au chapitre des pointeurs de l'ouvrage qui n'approfondit pas
beaucoup, je pensais avoir compris les tableaux mais ce n'était pas le
cas. Alors je dois revenir quelques pages en arrière, car je pense
avoir été trop sûre de moi et laisser les tableaux trop vite d'où c e
post (et puis j'ai posté 3 fois car j'avais oublié de rendre le
programme plus lisible que celui qui est sur la machine...)
apparemment ça n'était pas assez lisible, je ne sais même pas comment
vous avez fait pour voir les posts qu'il m'avait semblé supprimer??? .
Encore mes excuses pour la réponse précédente, je reconnais que ce
n'est pas une façon d'attendre une réponse.
Mes excuses aux uns et aux autres. J'ai en premier eu le sentiment que bien qu'en l'absence d'un modérateur dans ce groupe qui peut ralentir la publication de message ou filtrer les messages hors sujet, il y a avait "un protocole" tel que s'annoncer à une personne importante, annoncer pourquoi on veut la voir etc...attendre avant l'entretien -je me suis un peu laissé emporter car exécuter ce script me semble simple à comprendre ou peut-être c'est parce que je ne suis pas rapide et j'ai passé la journée à essayer de faire marcher ce programme.
Je commence à apprendre le C avec 2 ouvrages et l'un des ouvrage n'approfondit pas beaucoup. Je pensais avec cet ouvrage avoir comprit les tableaux (auparavant, j'ai étudié seul pendant 6-8 mois les algorithmes pour non-matheux du Site d'un prof de Jussieu et passé également du temps sur les tableaux...) Arrivé au chapitre des pointeurs de l'ouvrage qui n'approfondit pas beaucoup, je pensais avoir compris les tableaux mais ce n'était pas le cas. Alors je dois revenir quelques pages en arrière, car je pense avoir été trop sûre de moi et laisser les tableaux trop vite d'où c e post (et puis j'ai posté 3 fois car j'avais oublié de rendre le programme plus lisible que celui qui est sur la machine...) apparemment ça n'était pas assez lisible, je ne sais même pas comment vous avez fait pour voir les posts qu'il m'avait semblé supprimer??? .
Encore mes excuses pour la réponse précédente, je reconnais que ce n'est pas une façon d'attendre une réponse.
Pascal
bpascal123
Bonjour,
Pour reprendre la discussion, ce script doit chercher une valeur par tri "binaire". Il commence à la moitié du tableau et compare la valeur avec celle de la position de la moitié du tableau : ---ligne 55-60--- midPOS = N/2 ; Cette valeur est automatiquement convertie en valeur entière si N/2 est décimale.
Après quoi, le programme cherche une valeur et renvoie sa position dans le tableau. Etrangement, ça ne marche pour la 2ième partie du tableau.
... if ( VAL < Tab[midPOS] ) { for ( i = 0, POS=0 ; i < midPOS ; i++ ) if ( Tab[i] = VAL ) POS = i ; printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS +1); }
else if ( VAL >= Tab[midPOS] ) { for ( i = midPOS ; i < N ; i++ ) { if ( Tab[i] = VAL ) { POS = i; } } printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS +1) ; }
...
Les boucles "while" sont équivalentes aux boucles "For", "While" ne conviendrait pas mieux?
Et je me demande si l'usage des pointeurs pour quelque chose d'aussi simple ne produirait pas l'effet que j'attends? Je suis paresseux, c'est pourquoi je pose la question au lieu de tester.
Merci Zwim pour tes précieuses précisions, je suis passé à un autre exercice sur lequel je suis proche du résultat - je cherche à comprendre encore pourquoi avec "for" tel que je l'emploie ça ne marche pas et la solution avec "while" donnée par l'auteur fonctionne. C'est vrai dans le futur mes programmes risquent de ne pas être lisibles car je me concentre essentiellement sur un résultat qui s'affiche.
Mais je vais revenir sur ce programme et le faire fonctionner avec tes modifications.
Pascal
Bonjour,
Pour reprendre la discussion, ce script doit chercher une valeur par
tri "binaire". Il commence à la moitié du tableau et compare la valeur
avec celle de la position de la moitié du tableau : ---ligne 55-60---
midPOS = N/2 ; Cette valeur est automatiquement convertie en valeur
entière si N/2 est décimale.
Après quoi, le programme cherche une valeur et renvoie sa position
dans le tableau. Etrangement, ça ne marche pour la 2ième partie du
tableau.
...
if ( VAL < Tab[midPOS] )
{ for ( i = 0, POS=0 ; i < midPOS ; i++ )
if ( Tab[i] = VAL )
POS = i ;
printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS
+1);
}
else if ( VAL >= Tab[midPOS] )
{
for ( i = midPOS ; i < N ; i++ )
{
if ( Tab[i] = VAL )
{
POS = i;
}
}
printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS
+1) ;
}
...
Les boucles "while" sont équivalentes aux boucles "For", "While" ne
conviendrait pas mieux?
Et je me demande si l'usage des pointeurs pour quelque chose d'aussi
simple ne produirait pas l'effet que j'attends? Je suis paresseux,
c'est pourquoi je pose la question au lieu de tester.
Merci Zwim pour tes précieuses précisions, je suis passé à un autre
exercice sur lequel je suis proche du résultat - je cherche à
comprendre encore pourquoi avec "for" tel que je l'emploie ça ne
marche pas et la solution avec "while" donnée par l'auteur fonctionne.
C'est vrai dans le futur mes programmes risquent de ne pas être
lisibles car je me concentre essentiellement sur un résultat qui
s'affiche.
Mais je vais revenir sur ce programme et le faire fonctionner avec tes
modifications.
Pour reprendre la discussion, ce script doit chercher une valeur par tri "binaire". Il commence à la moitié du tableau et compare la valeur avec celle de la position de la moitié du tableau : ---ligne 55-60--- midPOS = N/2 ; Cette valeur est automatiquement convertie en valeur entière si N/2 est décimale.
Après quoi, le programme cherche une valeur et renvoie sa position dans le tableau. Etrangement, ça ne marche pour la 2ième partie du tableau.
... if ( VAL < Tab[midPOS] ) { for ( i = 0, POS=0 ; i < midPOS ; i++ ) if ( Tab[i] = VAL ) POS = i ; printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS +1); }
else if ( VAL >= Tab[midPOS] ) { for ( i = midPOS ; i < N ; i++ ) { if ( Tab[i] = VAL ) { POS = i; } } printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS +1) ; }
...
Les boucles "while" sont équivalentes aux boucles "For", "While" ne conviendrait pas mieux?
Et je me demande si l'usage des pointeurs pour quelque chose d'aussi simple ne produirait pas l'effet que j'attends? Je suis paresseux, c'est pourquoi je pose la question au lieu de tester.
Merci Zwim pour tes précieuses précisions, je suis passé à un autre exercice sur lequel je suis proche du résultat - je cherche à comprendre encore pourquoi avec "for" tel que je l'emploie ça ne marche pas et la solution avec "while" donnée par l'auteur fonctionne. C'est vrai dans le futur mes programmes risquent de ne pas être lisibles car je me concentre essentiellement sur un résultat qui s'affiche.
Mais je vais revenir sur ce programme et le faire fonctionner avec tes modifications.
Pascal
espie
In article , wrote:
Bonjour,
Pour reprendre la discussion, ce script doit chercher une valeur par tri "binaire". Il commence à la moitié du tableau et compare la valeur avec celle de la position de la moitié du tableau : ---ligne 55-60--- midPOS = N/2 ; Cette valeur est automatiquement convertie en valeur entière si N/2 est décimale.
Un peu de vocabulaire.
Ca s'appelle une recherche dichotomique. C'est utile de connaitre le terme, ca peut te donner de la biblio.
Ensuite, meme si tu persistes, ca ne s'appelle toujours pas un script. C'est un programme. Code source en C, executable en autre chose.
Le terme de script est reserve aux langages interpretes tels que le shell, ou perl.
Après quoi, le programme cherche une valeur et renvoie sa position dans le tableau. Etrangement, ça ne marche pour la 2ième partie du tableau.
... if ( VAL < Tab[midPOS] ) { for ( i = 0, POS=0 ; i < midPOS ; i++ ) if ( Tab[i] = VAL ) POS = i ; printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS +1); }
else if ( VAL >= Tab[midPOS] ) { for ( i = midPOS ; i < N ; i++ ) { if ( Tab[i] = VAL ) { POS = i; } } printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS +1) ; }
...
Comme souvent en C, l'erreur est plus haut: tu ne tries pas ton tableau, tu fais juste une passe d'echange de valeurs, ca va juste diminuer le nombre d'echanges a faire pour finir de trier...
Tu as commence d'implementer l'algo de tri le plus simple existant, le tri a bulles. Il te manque une condition d'arret, normalement, on continue a reparcourir le tableau du debut tant qu'on echange des elements...
Affiche le contenu de ton tableau, il n'est pas dans l'ordre...
Les boucles "while" sont équivalentes aux boucles "For", "While" ne conviendrait pas mieux?
Question purement stylistique. C'est effectivement equivalent, c'est toi qui voies ce qui te semble le plus simple.
Et je me demande si l'usage des pointeurs pour quelque chose d'aussi simple ne produirait pas l'effet que j'attends? Je suis paresseux, c'est pourquoi je pose la question au lieu de tester.
Non. Je ne vois meme pas ce qui peut te faire penser ca, dans ce cas precis de figure. Il n'y a aucun avantage a utiliser des pointeurs....
Merci Zwim pour tes précieuses précisions, je suis passé à un autre exercice sur lequel je suis proche du résultat - je cherche à comprendre encore pourquoi avec "for" tel que je l'emploie ça ne marche pas et la solution avec "while" donnée par l'auteur fonctionne. C'est vrai dans le futur mes programmes risquent de ne pas être lisibles car je me concentre essentiellement sur un résultat qui s'affiche.
for et while sont equivalents. Plus precisement, for(init; cond; incr) { code; }
est equivalent a:
init; while (cond) { code; incr; }
si ca ne marche pas pour toi, c'est que tu n'ecris pas des choses equivalentes!
In article <2503ef68-8dea-48b9-9f71-2d2ef321266b@k26g2000vbp.googlegroups.com>,
bpascal123@googlemail.com <bpascal123@googlemail.com> wrote:
Bonjour,
Pour reprendre la discussion, ce script doit chercher une valeur par
tri "binaire". Il commence à la moitié du tableau et compare la valeur
avec celle de la position de la moitié du tableau : ---ligne 55-60---
midPOS = N/2 ; Cette valeur est automatiquement convertie en valeur
entière si N/2 est décimale.
Un peu de vocabulaire.
Ca s'appelle une recherche dichotomique. C'est utile de connaitre le terme,
ca peut te donner de la biblio.
Ensuite, meme si tu persistes, ca ne s'appelle toujours pas un script.
C'est un programme. Code source en C, executable en autre chose.
Le terme de script est reserve aux langages interpretes tels que le shell,
ou perl.
Après quoi, le programme cherche une valeur et renvoie sa position
dans le tableau. Etrangement, ça ne marche pour la 2ième partie du
tableau.
...
if ( VAL < Tab[midPOS] )
{ for ( i = 0, POS=0 ; i < midPOS ; i++ )
if ( Tab[i] = VAL )
POS = i ;
printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS
+1);
}
else if ( VAL >= Tab[midPOS] )
{
for ( i = midPOS ; i < N ; i++ )
{
if ( Tab[i] = VAL )
{
POS = i;
}
}
printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS
+1) ;
}
...
Comme souvent en C, l'erreur est plus haut: tu ne tries pas ton tableau,
tu fais juste une passe d'echange de valeurs, ca va juste diminuer le
nombre d'echanges a faire pour finir de trier...
Tu as commence d'implementer l'algo de tri le plus simple existant, le
tri a bulles. Il te manque une condition d'arret, normalement, on continue
a reparcourir le tableau du debut tant qu'on echange des elements...
Affiche le contenu de ton tableau, il n'est pas dans l'ordre...
Les boucles "while" sont équivalentes aux boucles "For", "While" ne
conviendrait pas mieux?
Question purement stylistique. C'est effectivement equivalent, c'est toi
qui voies ce qui te semble le plus simple.
Et je me demande si l'usage des pointeurs pour quelque chose d'aussi
simple ne produirait pas l'effet que j'attends? Je suis paresseux,
c'est pourquoi je pose la question au lieu de tester.
Non. Je ne vois meme pas ce qui peut te faire penser ca, dans ce cas
precis de figure. Il n'y a aucun avantage a utiliser des pointeurs....
Merci Zwim pour tes précieuses précisions, je suis passé à un autre
exercice sur lequel je suis proche du résultat - je cherche à
comprendre encore pourquoi avec "for" tel que je l'emploie ça ne
marche pas et la solution avec "while" donnée par l'auteur fonctionne.
C'est vrai dans le futur mes programmes risquent de ne pas être
lisibles car je me concentre essentiellement sur un résultat qui
s'affiche.
for et while sont equivalents. Plus precisement,
for(init; cond; incr) {
code;
}
est equivalent a:
init;
while (cond) {
code;
incr;
}
si ca ne marche pas pour toi, c'est que tu n'ecris pas des choses equivalentes!
Pour reprendre la discussion, ce script doit chercher une valeur par tri "binaire". Il commence à la moitié du tableau et compare la valeur avec celle de la position de la moitié du tableau : ---ligne 55-60--- midPOS = N/2 ; Cette valeur est automatiquement convertie en valeur entière si N/2 est décimale.
Un peu de vocabulaire.
Ca s'appelle une recherche dichotomique. C'est utile de connaitre le terme, ca peut te donner de la biblio.
Ensuite, meme si tu persistes, ca ne s'appelle toujours pas un script. C'est un programme. Code source en C, executable en autre chose.
Le terme de script est reserve aux langages interpretes tels que le shell, ou perl.
Après quoi, le programme cherche une valeur et renvoie sa position dans le tableau. Etrangement, ça ne marche pour la 2ième partie du tableau.
... if ( VAL < Tab[midPOS] ) { for ( i = 0, POS=0 ; i < midPOS ; i++ ) if ( Tab[i] = VAL ) POS = i ; printf("(tri 1ere moitie) t La valeur se trouve en position %d", POS +1); }
else if ( VAL >= Tab[midPOS] ) { for ( i = midPOS ; i < N ; i++ ) { if ( Tab[i] = VAL ) { POS = i; } } printf("(tri 2nde moitie) t La valeur se trouve en position %d", POS +1) ; }
...
Comme souvent en C, l'erreur est plus haut: tu ne tries pas ton tableau, tu fais juste une passe d'echange de valeurs, ca va juste diminuer le nombre d'echanges a faire pour finir de trier...
Tu as commence d'implementer l'algo de tri le plus simple existant, le tri a bulles. Il te manque une condition d'arret, normalement, on continue a reparcourir le tableau du debut tant qu'on echange des elements...
Affiche le contenu de ton tableau, il n'est pas dans l'ordre...
Les boucles "while" sont équivalentes aux boucles "For", "While" ne conviendrait pas mieux?
Question purement stylistique. C'est effectivement equivalent, c'est toi qui voies ce qui te semble le plus simple.
Et je me demande si l'usage des pointeurs pour quelque chose d'aussi simple ne produirait pas l'effet que j'attends? Je suis paresseux, c'est pourquoi je pose la question au lieu de tester.
Non. Je ne vois meme pas ce qui peut te faire penser ca, dans ce cas precis de figure. Il n'y a aucun avantage a utiliser des pointeurs....
Merci Zwim pour tes précieuses précisions, je suis passé à un autre exercice sur lequel je suis proche du résultat - je cherche à comprendre encore pourquoi avec "for" tel que je l'emploie ça ne marche pas et la solution avec "while" donnée par l'auteur fonctionne. C'est vrai dans le futur mes programmes risquent de ne pas être lisibles car je me concentre essentiellement sur un résultat qui s'affiche.
for et while sont equivalents. Plus precisement, for(init; cond; incr) { code; }
est equivalent a:
init; while (cond) { code; incr; }
si ca ne marche pas pour toi, c'est que tu n'ecris pas des choses equivalentes!