1

Bonjour, je n'ai quasiment aucune connaissance en C. J'utilise TIGCC.
J'aimerai savoir utiliser:
1.Si je veux que x val 1 je dois taper 1=x ou x=1 ? [résolu (aide TIGCC)]
2.boucles For [résolu (aide TIGCC)]
3.arguments à l'appel du programme
4.retourner 1 matrice
5.manipuler des matrices [résolu (tutorial squalenet)]
6.condition [résolu (aide TIGCC)]

PS: c'est pour un jeu de la vie. Je l'ai fait en Basic, mais bon, la vitesse laisse à désirer (1 minute de calcul pour un format 9*9)

2

3

J'ai déjà un tuto (squalenet) sur le C, mais j'ai pas trop le temps, j'ai 1/2 heures pour terminer.

4

les réponses aux questions 3 et 4 sont compliqués quand on ne connait pas bien le C. Mais de toute façon elles sont dans la doc de tigcc.

5

6

Il faut savoir ce qu'est un pointeur grin
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.

7

8

=> \o/ #archéologie#
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

10

Martial Demolins (./5) :
Pour la 4, c'est dur de retourner un pointeur? confus
J'avais compris "retourner une matrice après l'exécution du programme", et ça c'est pas facile.
Martial Demolins (./9) :
Perso j'ai jamais compris (ou plutôt retenu) les différentes notations (X*, *X, &X, etc...), c'est ce qui fait que je sius toujours resté au 68k. Je trouve la syntaxe du C beaucoup trop compliquée ;D
Au moins, avec a0 et (a0), on peut tout faire. hehe



Il y a juste *X et &X. X* c'est autre chose. Enfin c'est vrai que vu comme ça, c'est le bordel grin
En tout cas moi c'est l'inverse de toi, je supporte pas l'asm grin

11

Si quelqu'un veut bien m'aider...

Voici mon code:
int main(int a;int b;short* mat1)
    {
    short mat2[a][b];
    int x;
    int y;
    x=1;
    for(x=1;a-x=0;x++)
        {
        for(y=1,b-y=0,y++
            {
            if (x>1)
                mat2[x][y] = mat2[x][y]+mat1[x-1][y];
            if (x<a)
                mat2[x][y] = mat2[x][y]+mat1[x+1][y];
            if (y>1)
                mat2[x][y] = mat2[x][y]+mat1[x][y-1];
            if (y<b)
                mat2[x][y] = mat2[x][y]+mat1[x][y+1];
            }
        }
    for x,1,a
        {
        for y,1,b
            {
            if (mat2[x][y]=2)
                {
                mat1[x][y] = 1;
                }
            else
                {
                mat1[x][y] = 0;
                }
            }
        }
        return mat1
    }


Voici les erreurs:
Type of 'a' defaults to 'int'.
Type of 'b' defaults to 'int'.
Type of 'mat1' defaults to 'int'.
Invalid lvalue in assignment.
Invalid lvalue in assignment.
Value computed is not used.
Value computed is not used.
Expected ';' before '{' token.
Expected expression before '}' token.
Expected expression before '}' token.
Expected expression before '}' token.
Expected '(' before 'x'.
Left-hand operand of comma expression has no effect.
Left-hand operand of comma expression has no effect.
Statement with no effect.
Unused variable 'mat2'.
Unused parameter 'mat1'.
Control reaches end of non-void function.


[Edit par Ximoon : suppression des [spoilers], [code] -> [pre]

12

heu, tu pourrais enlever le spoileur de ton message ? car la c'est pas pratique...
Ancien pseudo : lolo

13

Dans ta première ligne, il faut utiliser des virgules à la place des points virgule.
La bonne syntaxe pour for est celle que tu as utilisée la première fois. Les autres sont fausses.
Pour vérifier l'égalité, on utilise l'opérateur ==, a-x==0 peut être remplacé par a == x.
La fonction main ne prend pas ces paramètres, en général, c'est int main(int argc, char* argv[]) mais sur TI, il n'y a pas d'arguments.
avatar

14

edit:

int main(int a;int b;short* mat1)
{
short mat2[a][ b];

main() ne connait pas ces arguments, pour donner des arguments BASIC à un programme asm c'est LARGEMENT plus compliqué

et comment t'arrives a utiliser 1 minute pour faire un jeu de la vie de 9x9 ? grin

et pour les erreurs t'aurais pu nous donner les numéros de ligne #flemme#




martial > a0 <=> x, (a0) (*x)

y* n'est valide que si y est un type, pour la déclaration d'un pointeur

char *x;
char y;

x=&y; /*adresse de y dans x*/
*x=3; /*mettre 3 dans (x) ie dans y

ce qui te trompe c'est qu'en asm tous les labels sont des pointeurs, donc toutes les variables sont des adresses de type int* x;

edit autre truc foireux, la syntaxe de char * x;

char* x -> x est l'adresse d'un char

mais comme le C néglige les espaces, on peut aussi écrire char *x (ce qui est pratique pour mettre char i, *j; )

15

Voici le fichier en Basic. Il s'appelle de cette façon: vie\mode1(dimension1,dimension2)
tromb Fichier joint : vie.mode1.v2p

Tu peux m'expliquer un peu le code que tu me donne?

16

tu devrais vraiment lire un tuto sur le C plutôt que d'écrire n'importe quoi et demander ici pourquoi ça ne marche pas :/
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

Ils ne disent pas dans le Squalenet...

18

mais le tuto de squale, même si il est très bien, est loin de couvrir tout ce qu'il y a à savoir; je parlais d'un bouquin complet, par exemple.

[edit] et à mon avis dans le tuto de squale, il y a quand même la syntaxe d'une boucle for et quelques autres trucs pour lesquels tu as quand même réussi à sortir plusieurs versions, toutes fausses
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

19

Il ne me reste plus que les arguments en entrée. Tout le reste est résolu.

20

Ouai mais justement, prendre des arguments c'est super compliqué grin
C'est un des trucs les plus chiant à faire sous TI, donc évite ça à tout prix.

Moi je ne lui conseil pas de lire un livre, c'est plus motivant d'apprendre des choses quand tu en a besoins que de lire des tonnes de trucs dont tu t'en fou complètement, et que tu va oublier parceque tu ne va pas t'en servir immédiatement (comme par exemple les structures/pointeurs/enum/fichiers)

21

j'irai pas jusqu'à dire que c'est ce qu'il y a de plus compliqué, même si c'est effectivement plus complexe que simplement utiliser argc/argv comme d'habitude. ceci dit, il y a des exemples de code quasiment prêts à être recopiés dans la doc de TIGCC si je me souviens bien; mais vu ce que tu as posté dans ce topic, je suppose qu'en recopiant ces exemples tu n'en comprendras pas grand chose donc il faudrait mieux arrêter ce que tu fais et lire un cours de C avant de t'y mettre.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

Alors comment lire une variable utilisée par mon programme appelant Basic, qui est stockée dans la RAM?

23

lis la doc de tigcc et regarde les exemples fournis avec

dans la partie "how to" y'a un truc, et dans la doc du header estack.h je crois.

24

25

ProgVal, il y a tout pour lire les arguments sur cette page : http://tigcc.ticalc.org/doc/args.html
avatar

26

Bon, j'ai résolu le programme: lecture total du tutorial de Squale...