1

Je voulais savoir si vous pouviez m'expliquer pkoi ça bugue :
quand je mais 12 en argument, j'ai "Adress Error", avec 14, y'a pas de message mais ça fait la bande noire et faut que j'enlève les piles, ave 20 ça fait "Invalid Operation", etc...
Si vous pouviez m'expliquer... L'erreur se situe dans la fin de l'algo, ja vais vous montrer...
// C Source File
// Created 20/09/03; 14:43:06

#define USE_TI89              // Compile for TI-89

// #define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization

#define SAVE_SCREEN           // Save/Restore LCD Contents

#include <tigcclib.h>         // Include All Header Files

// Main Function
void _main(void)
{
	ESI argptr;
	short argtype = 0;
	argptr = top_estack;
	argtype = GetArgType(argptr);
	clrscr();
	printf("\n\n\n     Wait...\n");
	if (argtype != POSINT_TAG ){printf("Pas bien !");ngetchx();}
	else {printf("OK !");
		ngetchx();
		int a;
		a = GetIntArg(argptr);
		if (a<=1)
			{
				clrscr();
				printf("\n\n\n     Idiot !");
				ngetchx();
			}
		else {
			clrscr();
			printf("Dsl, je suis pas encore programmé...\nMais je ferais ça bientôt,\navec ton : %d",a);
			int div[2][50];   [4]// --> L'erreur est par ici...[/4]
			int lim=0,i;
			for (i=1; i<=a/2; i++)
				{
					if(a%i==0)
						{
						div[1][lim]=i;
						div[2][lim]=a/i;
						lim++;	
						}
				}
	 	}
	}
}

-=Nightm4re=-

Jesus's not a gland !

2

premier conseil: utilise Sources ou pre pour rendre le code plus lisible.
avatar

3

c-a-d ??? pr les décalages, avec les tabulations ?
je suis dsl mais c le copier/coller qui a tt enlevé... :-(
l'erreur doit se situer entre l'endroit où j'ai marqué en rouge : "L'erreur..." et la fin
-=Nightm4re=-

Jesus's not a gland !

4

non c'est le format HTML qui refuse 2 espaces de suite: edite et met les balise [ pre] [/ pre]
avatar

5

voilà...
c mieux comme ça ?
-=Nightm4re=-

Jesus's not a gland !

6

=a/i; (...)
Erreur de newbie :  (...)
  int div[[4]2[/4]][50];   // --> L'erreur est par ici...
  int lim=0,i;
  for (i=1; i<=a/2; i++)
  {
    if(a%i==0)
    {
      div[[4]1[/4]][lim]=i;
      div[[4]2[/4]][lim]
wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

7

je rajouterai même
for (i=1; i<=a/2; i++)
avatar

8

Même des experts se font avoir par ça de temps en temps...
Les tableaux C commencent à zéro!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Desole je ne me fait plus avoir depuis que je fais de l'asm, moi.

10

Personnellement, j'ai appris l'assembleur avant le C, et il m'arrive quand-même de commettre des off-by-one à cause de ça. sad Tout à cause du BASIC avec ses tableaux qui commencent à 1. grin
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

Quelle ineptie de commencer a 1 quand meme.

12

Moi c'est plustôt l'inverse c'est quand je fais du basic que mes tableaux commencent a 0 roll
avatar

13

Oué moi aussi, d'autant plus que ça dépend des interpréteurs Basic... :/
avatar

14

wé j'ai trouV ça tt seul comme un grand mercredi aprem...
kel con !!!
mais ce qie j'ai pas capT c pkoi j'aV 3 types d'erreurs différentes, et aucun nbr impairs ki planT avant 35 !!!
vs pouvez m'expliquer ça ???
au fait, comment faire pr pouvoir récupérer des nombres supérieur ou égaux à 2^15 ??
et aps, Uther, je capT pas bien ce que t'as ajouté...
je rajouterai même for (i=1; i<=a/2; i++)

c pas ce ke j'aV écrit ?
-=Nightm4re=-

Jesus's not a gland !

15

Pour les grands nombres, utilise des long (32 bits)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

16

Essaie d'écrire correctement, c'est une véritable torture de te lire là sad
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

17

L'index d'un tableau ou d'une liste en C ou dans d'autres langage commence à 0.

Par conséquent une liste:
MyListe[10]={10,52,41,56,85,12,14,15,16,10};

MyListe[1] te donnera 52 et non 10 donc tu devra faire MyListe[0] pour avoir 10.
Sache quie l'accès à une liste ou à un tableau ce fait de cette façon liste[n-1];
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

18

Sasume :
Pour les grands nombres, utilise des long (32 bits)

Voire des long long (64 bits), sachant que *printf et *scanf ne les gèrent pas. (Pour *printf, c'est la faute de AMS, pour *scanf, c'est moi qui me suis permis d'économiser quelques octets vu que *printf ne les gère pas non plus de toute façon.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

Ca doit être bien lent et gros à gérer les long long non ?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

20

Ça dépend des calculs qu'on fait. Pour les additions/soustractions, ça va (addx et subx sont là pour ça), pour les multiplications, passe encore (il y a quand-même 10 mulu à faire) mais pour les décalages et, pire, les divisions, c'est assez lourd en effet.

Gérer les long long dans *scanf m'obligerait à un overhead assez important. Et pour *printf, c'est pire parce qu'il faut en plus faire un parsing séparé de celui de AMS (lourd), ou alors placer un hook dans le callback de vcbprintf pour aller fouiller dans ses variables locales (lourd aussi, et très sale en plus).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

les tableaux, c bon je connaiC c t une erreur d'étourderie...
je vais essayer les longs... ça devrait suffire... paske les long long c un peu long... :-D
dsl pr la torture quand vous me lisez, c les sms... (et c aussi du au fait que je n'ai aps l'adsl... ni de forfait très costaud, donc je me dépeche !!!)
-=Nightm4re=-

Jesus's not a gland !

22

et aps, Uther, je capT pas bien ce que t'as ajouté...

je rajouterai même
for (i=1; i<=a/2; i++)
oui Mais comme Thibaut(Tabatha) j'ai mis en rouge ce qui n'allais pas. a savoir que le for doit aller de 0 a taille-1
avatar

23

mais ce que je comprends pas ce que t'as rien modofié par rapport à ce que j'avais écrit au départ...
-=Nightm4re=-

Jesus's not a gland !

24

Il a juste indiqué où il fallait que tu changes ton code.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

25

oui mais au début, il a mis en rouge les 2 égales dans la () aps le for...
alors que c t mon code de départ...
c ça ke je capte pas...
je capte pas ça non plus :
a savoir que le for doit aller de 0 a taille-1

pkoi donc ? la variable i n'a pas d'influence sur mon tableau ?
-=Nightm4re=-

Jesus's not a gland !

26

au fait, personne a découvert le gros bug de mon programme ? :-D
-=Nightm4re=-

Jesus's not a gland !

27

Essaye:
div[0][lim]=i;
div[1][lim]=a/i;

Les tableaux vont de 0 a n-1 inclus.

28

non ça c bon... g corrigé...
mais y'a autre chose qui cloche (je sais quoi :-D), je voulais savoir si vous aviez trouvé...
bah j'explique... en fait c lié à mon algo : pr l'instant, il est mal programmé c-a-d que certains diviseurs sont affichés deux fois !!!
or mon tablo est limité : div[2][50]
à 100 diviseurs maximum...
or si on prend un nombre avec bcp de diviseurs, genre 1*2*3*4*5*6*7 (5040) et ben on se retrouve avec un bo "Adress Error"
comment qualifiriez vous cette faille ? est-ce un buffer overflow ou non ?
-=Nightm4re=-

Jesus's not a gland !

29

Oui. Tu dois refuser les nombres depassant la taille de ton tableau.

30

ou tu change de méthode pour gerer ton tableau
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.