Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[encore une question de debutant sur les tableau et structure]

38 réponses
Avatar
babar
Malgres la bonne dizaine de message qui traite le sujet ici, j'ose quand
meme demander un peu d aide parce que je ne comprend pas pourquoi mon
code ne marche pas.

merci de bien vouloir regarder ce code et me signaler ce qui vous semble
incorrect.

#include <stdio.h>
#include <string.h>

typedef struct Matrice{
char valeur[50][25];
int effectif;
int teffectif[50];
}mat;

int ch_id(mat matrice,char id[10]); // permet de donné la ligne de
chaque element du tableau ( ref par id de 9 caractere)
char mget(mat matrice,char id[10],int pos);// permet de recup 1 caractere
void mput(mat *matrice,char id[10],int pos,char chput);// permet de
mettre 1 caractere
void mmget(mat matrice,char id[10],int pos1, int pos2, char
resultat[pos2-pos1]);//permet de recup une chaine de caractere
void mmput(mat *matrice,char id[10],int pos1,int pos2,char
chput[pos2-pos1]);//permet de mettre une chaine de caractere
void mnewline(mat *matrice, char id[10]);//permet de construire une ligne
void mdelline(mat *matrice, char id[10]);//permet de detruire une ligne
void mprintline(mat matrice, char id[10]);//permet d affiché une ligne
void mid(char id[10]);//permet d entrée une id

int main()
{
int i,choix,pos1,pos2;
char id[10],temp[10];
mat test;
test.effectif=0;
for (i=0;i<=50;i++)test.teffectif[i]=0;

printf(" Bienvenue dans le programme d\' edition de tableau\n Menu
: \n \n");
printf(" 1. Lire une ligne\n");
printf(" 2. Cree une ligne\n 3. Lire un element d une ligne \n 4.
Lire une chaine d une ligne\n");
printf(" 5. Ecrire un caractere dans une ligne a une position
precise\n");
printf(" 6. Ecrire une chaine de caractere ds une ligne a une
position precise \n");
printf(" 7. Effacer une ligne\n 8. Quitter\n");

choix=0;

while (choix!=8){
printf("Votre choix :");
scanf("%d",&choix);
switch (choix){
case 1 :
printf("Lire une ligne.\n");
mid(id);
mprintline(test,id);
break;
case 2 :
printf("Creer une ligne.\n");
mid(id);
mnewline(&test,id);
break;
case 3 :
printf("Lire un element.\n");
mid(id);
printf("Position de l element : ");
scanf("%d",&pos1);
temp[0]=mget(test,id,pos1);
printf("%c -- a ete recuperer.\n",*temp);
break;
case 4 :
printf("Lire une chaine.\n");
mid(id);
printf("Borne -- max 10 : ");
scanf("%d %d",&pos1,&pos2);
mmget(test,id,pos1,pos2,temp);
printf("%s -- a ete recuperer.\n",*temp);
break;
case 5 :
printf("Ecrire un caractere.\n");
mid(id);
printf("Position de l element : ");
scanf("%d",&pos1);
printf("Entrer le caractere :");
scanf("%c",&temp);
mput(&test,id,pos1,*temp);
printf("%s -- a ete recuperer.\n",temp);
break;
case 6 :
printf("Ecrire une chaine de caractere.\n");
mid(id);
printf("Borne -- max 10 : ");
scanf("%d %d",&pos1,&pos2);
printf("Entrer la chaine : ");
scanf("%s",&temp);
mmput(&test,id,pos1,pos2,temp);
printf("%s -- a ete recuperer.\n",temp);
break;
case 7 :
printf("Effacer une ligne");
mid(id);
mdelline(&test,id);
break;
case 8 :
printf("Merci et a bientot");
break;
}
if (choix!=8){
printf(" 1. Lire une ligne\n");
printf(" 2. Cree une ligne\n 3. Lire un element
d une ligne \n 4. Lire une chaine d une ligne\n");
printf(" 5. Ecrire un caractere dans une ligne
a une position precise\n");
printf(" 6. Ecrire une chaine de caractere ds
une ligne a une position precise \n");
printf(" 7. Effacer une ligne\n 8. Quitter\n");
}
}

return 0;
}

void mid(char id[10]){
printf("Entrer l'id ( 9 caracteres ) : ");
scanf("%s",&id);

}

char mget(mat matrice,char id[10],int pos){
int ligne;
ligne=ch_id(matrice,id);
return matrice.valeur[ligne][pos];
}

void mput(mat *matrice,char id[10],int pos,char chput){
int ligne;
ligne=ch_id(*matrice,id);
(*matrice).valeur[ligne][pos]=chput;
if (pos-(*matrice).teffectif[ligne]>=0)
(*matrice).teffectif[ligne]=(*matrice).teffectif[ligne]+pos-(*matrice).teffectif[ligne]+1;

}

void mmget(mat matrice,char id[10],int pos1, int pos2, char
resultat[pos2-pos1]){
int ligne;
ligne=ch_id(matrice,id);
strncpy(resultat,&matrice.valeur[ligne][pos1],pos2-pos1);
}

void mmput(mat *matrice,char id[10],int pos1,int pos2,char
chput[pos2-pos1]){
int ligne,i;
ligne=ch_id(*matrice,id);
for(i=pos1;i<=pos2;i++) (*matrice).valeur[ligne][i]=chput[i-pos1];
if (pos2-(*matrice).teffectif[ligne]>=0)
(*matrice).teffectif[ligne]=(*matrice).teffectif[ligne]+pos2-(*matrice).teffectif[ligne]+1;

}

void mnewline(mat *matrice, char id[10]){
strcpy((*matrice).valeur[(*matrice).effectif],id);
(*matrice).valeur[(*matrice).effectif][9]='\0';
(*matrice).effectif++;
(*matrice).teffectif[(*matrice).effectif-1]=10;

}

void mdelline(mat *matrice, char id[10]){
int ligne,i;
ligne=ch_id(*matrice,id);
for(i=ligne+1;i<=(*matrice).effectif-1;i++)
strcpy((*matrice).valeur[i-1],(*matrice).valeur[i]);
(*matrice).effectif--;
for(i=ligne+1;i<=(*matrice).effectif-1;i++)
(*matrice).teffectif[i-1]=(*matrice).teffectif[i];

}

void mprintline(mat matrice, char id[10]){
int ligne;
ligne=ch_id(matrice,id);
printf("%s \n",matrice.valeur[ligne]);

}

int ch_id(mat matrice,char id[10])
{
int i,j;
for (j=0;j<=matrice.effectif;j++){
i=0;
while (strcmp(&matrice.valeur[j][i],&id[i])==0 && i<=9) i++;
if (i==10) break;
}

return j;
}

8 réponses

1 2 3 4
Avatar
Pierre Maurette
[...]
Encore merci pour ton poëme.
poème


Il ne faut pas poëter plus haut que son cul ....

;-)

--
Pierre Maurette

Avatar
babar
Désolé si je te paraîs dur (on va dire que je suis fatigué), mais je
trouve

tellement que tu pars sur une fausse route que je trouve cela franchement
dommage...


Antoine



ma fois, chacun son style, si tu veu ou ne peu qu etre dur dans ton
message cela ne regarde que toi. je suis debutant en programmation comme
tu l a semble t il remarqué, peut etre me trouvera tu un peu trop
presomptueux mais c est juste que les cours du prof me semble legerment
long et trop abstrait, si j me suis lancé dans se programme, c est pas
tant pour qu il reussisse, mais justement pour me planté, pour ainsi
etre plus interressé par le cours, avoir une motivation supplementaire
... au moin je saurai dequoi parle le prof et non pas de vague truc au
loin qui perturbe le sommeil de mes camarade ....

je prend note de ta reponse et vais m y appliqué

merci

Bastien

Avatar
Lucky
"Emmanuel Delahaye" a écrit dans le message de
news: 44048ee7$0$1525$

Oui, avec gcc. Makefile ou IDE recommandés...



Où intégrer ses commandes dans Dev-cpp pour qu'elle deviennent
automatique?
Merci.

--
Lucky

Femme sage est plus que femme belle.
[Voltaire]

Avatar
Harpo
Pierre Maurette wrote:

[...]
Encore merci pour ton poëme.
poème


Il ne faut pas poëter plus haut que son cul ....


poët poët !

--
http://harpo.free.fr/


Avatar
Antoine Leca
En news:4404e64d$0$163$, babar va escriure:
Désolé si je te paraîs dur (on va dire que je suis fatigué), mais
je trouve tellement que tu pars sur une fausse route que je trouve
cela franchement dommage...


ma fois, chacun son style, si tu veu ou ne peu qu etre dur dans ton
message cela ne regarde que toi.


Non, cela ne regarde pas que moi. D'abord, je n'ai pas toujours ce ton. De
plus, Usenet est destiné au partage des informations, pas à la conversation
privée.

C'est pour cela qu'il y a des règles de convivialité (dites Nétiquette).
L'une d'entre elle explique qu'il est de bon ton de lire un forum un peu
avant d'y participer, une autre explique que c'est bien de lire les messages
"FAQ".


je suis debutant en programmation comme tu l a semble t il remarqué,


Là j'ai un doute, vois-tu. Du moins, pas débutant complet.

peut etre me trouvera tu un peu trop presomptueux


Non non, c'est très classique au contraire, la plupart des réguliers sont
passés par là... Marc dira peut-être que ce n'est pas la bonne méthode, mais
à partir du moment où un prof (et les assistants de TD) n'arrivent pas à
capter l'attention de leurs élèves les plus débrouillards, c'est difficile
d'avoir des comportements très différents...

mais c est juste que les cours du prof me semble
legerment long et trop abstrait,


Précise.
À mon sens tu as loupé plusieurs étapes dans ton parcours d'apprentissage ;
je ne sais pas si ces parties seront abordées par ton professeur plus tard
ou quoi, mais tel que tu es parti tu ne vas nulle part (en C, et ÀMHA.) Si
ton professeur ne t'apporte pas ce que tu cherches, il y a aussi la solution
de lire.


je prend note de ta reponse et vais m y appliqué


Merci de prendre note, mais ce n'est pas l'objectif, ou du moins il ne me
semble pas à la lecture de ton message que tu aies saisi l'ensemble des
aspects de ma réponse (FAQ/Nétiquette, structuration des données, bogues
manifestes, utilisation des fonctions du C, travail préalable plus fouillé
sur les bases ; entre autre.)


Par ailleurs, essaye de dénicher un correcteur orthographique intégré à ton
client : il est désagréable de lire ta prose pour ceux qui lisent rapidement
beaucoup de messages. Merci d'avance.


Antoine


Avatar
Harpo
Antoine Leca wrote:

Par ailleurs, essaye de dénicher un correcteur orthographique


Syntaxique.
Notamment (il y a 2 m à notamment ?) en ce qui concerne l'usage du
participe passé et de l'infinitif, il est possible de trouver un
travail de programmeur en ne sachant pas programmer, il est difficile
d'arriver à un entretien d'embauche en ne sachant pas écrire.
Ou alors il faut faire tout par téléphone.

--
http://harpo.free.fr/

Avatar
Antoine Leca
En news:4405a077$0$18325$,
Harpo va escriure:
Antoine Leca wrote:

Par ailleurs, essaye de dénicher un correcteur orthographique


Syntaxique.


Oh, même un correcteur idiot (celui qui cherche les mots dans une grande
liste et qui propose celui qui ressemble le plus) devrait améliorer
grandement les messages en style télégraphique.

Et pour peu que des Français ou (plus probablement) des Québecquois se
soient penchés dessus, peut-être qu'il va rajouter les apostrophes dans les
trous...


il est difficile d'arriver à un entretien d'embauche en ne
sachant pas écrire.


???
Le seul moment où il faut écrire c'est pour rédiger d'abord le CV et ensuite
la lettre. Par expérience il est évident que ce n'est pas le seul candidat
qui fait cela, d'autres personnes /peuvent/ avoir trempé dans la
conjuration.

Je t'accorde que pour les tests il va falloir être attentif ; mais cela fait
un bon moment que je n'en ai pas passé de test (:{¬[, papy avec sa moustache
et sa pipe, assis sur sa chaise); j'aurais tendance à penser que c'est un
truc qui fut en vogue (il y a 15 ans), mais qui revient trop cher au final
(ou alors « réservé » aux débutants pour lesquels on n'a pas d'autres points
de repère ?)


Antoine


Avatar
Harpo
Antoine Leca wrote:

Le seul moment où il faut écrire c'est pour rédiger d'abord le CV et
ensuite la lettre. Par expérience il est évident que ce n'est pas le
seul candidat qui fait cela, d'autres personnes /peuvent/ avoir trempé
dans la conjuration.


J'ai une copine qui a fait lett'sup et elle ne lèche pas que les
timbres.

Je t'accorde que pour les tests il va falloir être attentif ; mais
cela fait un bon moment que je n'en ai pas passé de test (:{¬[, papy
avec sa moustache et sa pipe, assis sur sa chaise); j'aurais tendance
à penser que c'est un truc qui fut en vogue (il y a 15 ans),


Oui, vers là au moins. Les tests étaient très gonflants. j'ai toujours
rempli tous les tests (pour ne pas avoir pris le metro pour rien), le
plus dur est parfois de savoir quelle est la réponse attendue parmi les
multiples qui se présentent, je pense qu'il faut parfois répondre en
pensant que celui qui a pondu la question n'est pas très futé.

J'ai aussi toujours refusé d'entrer dans une boite qui m'a fait passer
ces tests. Bon à l'époque j'avais le choix...

mais qui
revient trop cher au final (ou alors « réservé » aux débutants pour
lesquels on n'a pas d'autres points de repère ?)


On essaie d'évaluer les possibilité d'avenir de quelqu'un dans une
boite, les critères choisis ne sont pas forcément mauvais, juste un oeu
limités, personnellement je n'aime pas qu'on me juge ainsi, je n'aime
pas le marché aux esclaves, montrer que j'ai des dents saines et
blanches et que j'ai des gros biceps, je suis un être humain pas un
cerveau sur roulettes.

--
http://harpo.free.fr/

1 2 3 4