Fournir le code source, il est complètement incomplet mais bon le voici :
- Code: Select all
/* Keep these headers */
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <tice.h>
/* Standard headers (recommended) */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fileioc.h>
#include <debug.h>
/* Put your function prototypes here */
void printText(const char *text, uint8_t x, uint8_t y);
void printTextSmall(const char *text, uint8_t xpos, uint8_t ypos);
int nb_occ(char* str,char car);
/* Put all your globals here */
/*typedef signed char int8_t;typedef unsigned char uint8_t;
typedef signed short int16_t;typedef unsigned short uint16_t;
typedef signed int int24_t;typedef unsigned int uint24_t;
typedef signed long int32_t;typedef unsigned long uint32_t;
typedef int24_t intptr_t;typedef uint24_t uintptr_t;*/
void main(void) {
/* Fill in the body of the main function here */
signed char string[30];
signed char prompt[30];
/*séparation des caractères de la chaîne en différentes variables char en utilisant la méthode des pointeurs, fonctioone avec
printf("%c",*ptX) avec 0 ≤X ≤ 30 et X appartenant à IN*/
uint8_t *pt0 = string;int8_t a = *pt0;uint8_t *pt1 = &string[1];int8_t b = *pt1;
uint8_t *pt2 = &string[2];int8_t c = *pt2;uint8_t *pt3 = &string[3];int8_t d = *pt3;
uint8_t *pt4 = &string[4];int8_t e = *pt4;uint8_t *pt5 = &string[5];int8_t f = *pt5;
uint8_t *pt6 = &string[6];int8_t g = *pt6;uint8_t *pt7 = &string[7];int8_t h = *pt7;
uint8_t *pt8 = &string[8];int8_t i = *pt8;uint8_t *pt9 = &string[9];int8_t j = *pt9;
uint8_t *pt10 = &string[10];int8_t k = *pt10;uint8_t *pt11 = &string[11];int8_t l = *pt11;
uint8_t *pt12 = &string[12];int8_t m = *pt12;uint8_t *pt13 = &string[13];int8_t n = *pt13;
uint8_t *pt14 = &string[14];int8_t o = *pt14;uint8_t *pt15 = &string[15];int8_t p = *pt15;
uint8_t *pt16 = &string[16];int8_t q = *pt16;uint8_t *pt17 = &string[17];int8_t r = *pt17;
uint8_t *pt18 = &string[18];int8_t s = *pt18;uint8_t *pt19 = &string[19];int8_t t = *pt19;
uint8_t *pt20 = &string[20];int8_t u = *pt20;uint8_t *pt21 = &string[21];int8_t v = *pt21;
uint8_t *pt22 = &string[22];int8_t w = *pt22;uint8_t *pt23 = &string[23];int8_t x = *pt23;
uint8_t *pt24 = &string[24];int8_t y = *pt24;uint8_t *pt25 = &string[25];int8_t z = *pt25;
uint8_t *pt26 = &string[26];int8_t A = *pt26;uint8_t *pt27 = &string[27];int8_t B = *pt27;
uint8_t *pt28 = &string[28];int8_t C = *pt28;uint8_t *pt29 = &string[29];int8_t D = *pt29;
uint8_t *pt30 = &string[30];int8_t E = *pt30;
//char *token = strtok (string, "x");
//while (token != NULL);
//{
// printf ("%s\n", token);
//token = strtok (NULL, "x");
//}
//signed int NbVariable = nb_occ(string, "X"); //count the number of the function variable X (main string)
os_ClrHome();
//int Nbplus = nb_occ(string, '+');// count the number of + (main string)
//int8_t Nbminus = nb_occ(string, '-');// count the number of - (main string)
os_GetStringInput("Enter a string: ", string, sizeof string);
os_ClrHome();
print(pt1,0,0);
while (!os_GetCSC());
}
/* Put other functions here */
void printText(const char* text, uint8_t xpos, uint8_t ypos)
{
os_SetCursorPos(ypos, xpos);
os_PutStrFull(text);
}
void print(char *text, uint8_t xpos, uint8_t ypos) {
os_SetCursorPos(ypos, xpos);
os_PutStrFull(text);
}
int nb_occ(char* str,char car) {
signed int i,nbocc = 0;
signed int size = strlen(str);
for (i = 0 ; i < size ; i++)
{
if (str[i] == car)
nbocc ++;
}
return nbocc;
}
Normalement il compile sans difficultés.
maintenant des explications :
1) le code source est un bordel, je sais mais je vais expliquer pour qu vous puissiez m'aidez rapidement
le gros pavé : ce sont des pointeurs, il me permettent d'afficher la chaîne saisi avec plus ou moins : par ex dans le code, si l'utilisateur saisi 2x la machine réponds par x, s'il saisi 32x+9 la machine affiche 2x+9 et ainsi de suite.
Mon problème je vais l'expliquer par plusieurs exemples :
si l'utilisateur saisi 2x+9 la machine doit afficher 2
si l'utilisateur saisi 2a+89 la machine doit afficher 2
si l'utilisateur saisi x+5, la machine affiche 1 car 1x+9 = x+9
si l'ulisateur saisi 3456x²+90x+6 la machine doit afficher 3456
si l'utilisateur saisi 12c la machine doit afficher 12
Je pense que vous avez compris
certaines lignes de codes présentes ne servent à rien à cause du C89 par la exemple la fonction nb_occ calculait le nombre d’occurrences du caractères qu'on lui donne par exemple
si l'utilisateur tape 23x+9x²+4 la variable Nbplus vaut 2 car il y a deux plus et NBminus vaut 0 car il n'y a pas de moins et NbVariable vaut 2 car il y a deux fois le symbole x. Cette fonction m'aurait été utile pour plus tard
ensuite on peut voir la fonction strtok en en commentaire c'est normal car elle ne peut pas travailler à cause du C89 (maudit sois-tu)
elle m'aurait de découper la fonction en différente chaîne selon le nombre de signe plus ou moins(cela n'est pas dans le code fourni)
le typedef vous donne une sorte de tableau de conversion.
Ensuite pour mon problème, je ne vois pas comment utiliser les pointeurs( pourtant cela a parfaitement marcher dans le pavé). Et malheureusement ils sont la clé de voûte du programme .
Le programme n'est pas du tout au point mais au moins j'ai une piste. Pour les plus chevronné(e)s, comment faire ?