Vous pouvez tester mon programme C
Fermé
Melanie
-
14 mars 2008 à 22:59
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 15 mars 2008 à 20:52
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 15 mars 2008 à 20:52
A voir également:
- Vous pouvez tester mon programme C
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Programme demarrage windows 10 - Guide
- Tester composant pc - Guide
- Tester signal wifi gratuit - Guide
4 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
14 mars 2008 à 23:41
14 mars 2008 à 23:41
Bonsoir,
Il tourne convenablement jusqu'à 10 chiffres au maximum, au delà il renvoie des résultats incohérents.
Exemple :
entrez une valeur: 11111111111
somme=-1773790777
Il tourne convenablement jusqu'à 10 chiffres au maximum, au delà il renvoie des résultats incohérents.
Exemple :
entrez une valeur: 11111111111
somme=-1773790777
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
15 mars 2008 à 10:12
15 mars 2008 à 10:12
Salut,
Il tourne convenablement jusqu'à 10 chiffres au maximum,
Depuis quand on exprime la capacité d'une variable entière en nombre de chiffres?
Voici une exemple, tester sur
On peu tester ta théorie avec les 10 chiffres
2147483647 - donc j'ai 10 chiffres
allons tester 3147483647 , 4147483648 , 5147483648 (toujours 10 chiffres)
et aussi ton test
L'explication tu la trouves plutôt dans les valeurs que le variables peuvent contenir et pas dans le nombre de chiffres.
Il tourne convenablement jusqu'à 10 chiffres au maximum,
Depuis quand on exprime la capacité d'une variable entière en nombre de chiffres?
Voici une exemple, tester sur
Linux debian 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 GNU/Linux gcc (GCC) 3.3.6 (Debian 1:3.3.6-15)La variable int
lami20j@deb:~$ cat taille_var.c #include<stdio.h> int main() { printf("signed int min = %d\n", -(int) ((unsigned int) ~0 >> 1)); printf("signed int max = %d\n", (int) ((unsigned int) ~0 >> 1)); printf("unsigned int max = %u\n", (unsigned int) ~0); return 0; } lami20j@deb:~$ gcc taille_var.c lami20j@deb:~$ ./a.out signed int min = -2147483647 signed int max = 2147483647 unsigned int max = 4294967295 lami20j@deb:~$
On peu tester ta théorie avec les 10 chiffres
2147483647 - donc j'ai 10 chiffres
allons tester 3147483647 , 4147483648 , 5147483648 (toujours 10 chiffres)
et aussi ton test
lami20j@deb:~$ cat melanie.c #include<stdio.h> int main (void) { int n; int i; int somme; i = 0; somme = 0; printf ("entrez une valeur: "); scanf ("%d", &n); while (n > 9) { somme = somme + n % 10; n = n / 10; } printf ("somme=%d\n", somme + n); return (0); } lami20j@deb:~$ gcc melanie.c lami20j@deb:~$ ./a.out entrez une valeur: 2147483647 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 3147483647 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 4147483648 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 5147483648 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 4294967295 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 4294967296 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 42949672950 somme=46 lami20j@deb:~$ ./a.out entrez une valeur: 11111111111 somme=46 lami20j@deb:~$
L'explication tu la trouves plutôt dans les valeurs que le variables peuvent contenir et pas dans le nombre de chiffres.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
15 mars 2008 à 20:06
15 mars 2008 à 20:06
Depuis quand on exprime la capacité d'une variable entière en nombre de chiffres?
Vous ne pensez pas évoluer dans le registre toujours un peu facile, celui de la confusion. Je vais quand même (essayer) de vous répondre, au moins pour informer la personne qui est à l'origine de cette discussion :
Depuis, ou plutôt lorsque :
- L'enoncé du problème (la demande formulée) ne mentionne pas qu'il s'agit d'apporter, comme vous avez cru devoir le faire, une correction mais de TESTER le fonctionnement d'un programme :
je sais que le programme n'a pas d'erreur d'écriture mais je veux voir s'il marche
en ce sens une correction et les commentaires qui l'accompagnent s'appuient sur le code existant et sont par le fait nécessairement orientés. Le propre d’un test, lorsqu’il peut être ralisé par un tiers, est de communiquer à cette personne le moins de considérations possibles d’ordre techniques ou algorithmiques afin de ne pas orienter son action. C’est la première raison pour laquelle j’ai délibérément ignoré le code, la seconde, pour éviter d’orienter mon appréciation comme je l’ai écrit plus haut.
- Il n'y a rien dans cet énoncé qui stipule de tenir compte d'une borne de valeurs, minimale et en l'occurrence maximale et par extension de devoir la préciser et la tester en précision.
il faut entrer une valeur , genre entrez la valeur : 23 la réponse doit être 5 ( 2 + 3 )
Il y a certainement d'autres manières de rendre compte du problème sans la contrainte d'une valeur maximale étroitement liée au TYPE de variable utilisé.
- et SURTOUT lorsqu'il s'agit, toujours suivant le post, (c’est moi qui re-formule) de faire la somme de chacun des rangs (dont on n'a pas à présumer le nombre) d’une valeur saisie au clavier.
D'où ma réponse, PONCTUEE d'un cas concret, qu'il convenait de ne pas isoler de ce contexte :
Il tourne convenablement JUSQU'A 10 chiffres au maximum, au delà il renvoie des résultats incohérentes.
qui n'a jamais prétendu :
exprime(R) la capacité d'une variable entière
c'est-à-dire sous entendre que l'INTEGRALITE des valeurs prises par un nombre constitué de 10 chiffres était convenablement traitée par la logique d'exécution du programme. Ce qui, dans le cadre d'un premier test, n'aurait eu que peu d'intérêt. Il convenait, sur le plan fonctionnel de déterminer et d'illustrer l'anomalie et non pas d'en apporter une correction comme je l'ai écrit plus haut, laquelle de toute façon n'était pas sollicitée.
En résumé :
Il me semble que ma formulation, tout en étant nécessairement générale dans le cadre d’un premier test est suffisamment précise pour rendre compte d’un dysfonctionnement, sans qu’il soit nécessaire de l’associer à des considérations techniques spécifiques relatives au type de variable utilisé. C’est ensuite, lors de la phase d’investigation, c’est-à-dire à la correction, que revient la tâche de rechercher des causes d’un dysfonctionnement.
Vous ne pensez pas évoluer dans le registre toujours un peu facile, celui de la confusion. Je vais quand même (essayer) de vous répondre, au moins pour informer la personne qui est à l'origine de cette discussion :
Depuis, ou plutôt lorsque :
- L'enoncé du problème (la demande formulée) ne mentionne pas qu'il s'agit d'apporter, comme vous avez cru devoir le faire, une correction mais de TESTER le fonctionnement d'un programme :
je sais que le programme n'a pas d'erreur d'écriture mais je veux voir s'il marche
en ce sens une correction et les commentaires qui l'accompagnent s'appuient sur le code existant et sont par le fait nécessairement orientés. Le propre d’un test, lorsqu’il peut être ralisé par un tiers, est de communiquer à cette personne le moins de considérations possibles d’ordre techniques ou algorithmiques afin de ne pas orienter son action. C’est la première raison pour laquelle j’ai délibérément ignoré le code, la seconde, pour éviter d’orienter mon appréciation comme je l’ai écrit plus haut.
- Il n'y a rien dans cet énoncé qui stipule de tenir compte d'une borne de valeurs, minimale et en l'occurrence maximale et par extension de devoir la préciser et la tester en précision.
il faut entrer une valeur , genre entrez la valeur : 23 la réponse doit être 5 ( 2 + 3 )
Il y a certainement d'autres manières de rendre compte du problème sans la contrainte d'une valeur maximale étroitement liée au TYPE de variable utilisé.
- et SURTOUT lorsqu'il s'agit, toujours suivant le post, (c’est moi qui re-formule) de faire la somme de chacun des rangs (dont on n'a pas à présumer le nombre) d’une valeur saisie au clavier.
D'où ma réponse, PONCTUEE d'un cas concret, qu'il convenait de ne pas isoler de ce contexte :
Il tourne convenablement JUSQU'A 10 chiffres au maximum, au delà il renvoie des résultats incohérentes.
qui n'a jamais prétendu :
exprime(R) la capacité d'une variable entière
c'est-à-dire sous entendre que l'INTEGRALITE des valeurs prises par un nombre constitué de 10 chiffres était convenablement traitée par la logique d'exécution du programme. Ce qui, dans le cadre d'un premier test, n'aurait eu que peu d'intérêt. Il convenait, sur le plan fonctionnel de déterminer et d'illustrer l'anomalie et non pas d'en apporter une correction comme je l'ai écrit plus haut, laquelle de toute façon n'était pas sollicitée.
En résumé :
Il me semble que ma formulation, tout en étant nécessairement générale dans le cadre d’un premier test est suffisamment précise pour rendre compte d’un dysfonctionnement, sans qu’il soit nécessaire de l’associer à des considérations techniques spécifiques relatives au type de variable utilisé. C’est ensuite, lors de la phase d’investigation, c’est-à-dire à la correction, que revient la tâche de rechercher des causes d’un dysfonctionnement.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
15 mars 2008 à 20:52
15 mars 2008 à 20:52
Salut,
Il tourne convenablement jusqu'à 10 chiffres au maximum,
si tu crois qu'avec 9999999999 (il s'agit de 10 chiffres) le programme tourne convenablement, alors je me suis trompé d'avoir poser la question.
Bonne continuation.
Il tourne convenablement jusqu'à 10 chiffres au maximum,
si tu crois qu'avec 9999999999 (il s'agit de 10 chiffres) le programme tourne convenablement, alors je me suis trompé d'avoir poser la question.
Bonne continuation.