C++ Erreur de segmentation (entres autres)

Fermé
infonulle - 16 déc. 2007 à 18:45
 infonulle - 16 déc. 2007 à 20:25
Bonjour,

je ne suis pas une habituée des forums de discussion, mais là j'ai vraiment besoin d'aide... Je suis une débutante en programmation et là je dois créer un programme qui, à partir d'un fichier de ventes comme celui-ci (journée, no inventaire, montant, taxes applicables):
1 1442945365 4.83 0
1 1677212580 5.33 1
1 1075280701 4.41 2
2 2041709329 2.24 1
2 492638721 5.3 1
2 1178377885 5.38 2
2 823057922 1.98 1
3 607226098 1.65 2
3 1744825513 0.61 2
4 527201442 2.8 1
5 500227580 8.66 1
7 1758559428 9.46 2
7 1224312319 2.5 2
7 1314492810 1.65 2
8 1629033916 3.73 0
9 305060128 7.33 1
10 1878381717 8.09 0
10 837973000 2.01 1
12 1847305569 7.16 1
12 716684416 9.98 1
12 1604812568 6.4 2
12 1107527429 2.81 0
12 1662858343 5.58 2
12 1077103072 9.71 2
14 26213391 7.74 0
14 1309165111 8.36 1
14 781718140 2.26 1
14 735719418 4.18 2
14 170184098 1.68 1
14 258044696 6.08 2
14 1797919403 7.99 1
14 523737910 9.78 2
15 477048981 0.7 2
15 1941744437 9.25 0
15 1918218989 0.73 0
16 1140888310 9.77 1
16 328044043 9.02 2
16 137810440 6.88 1
18 19922224 0.9 0
19 52791818 5.1 2
21 1205241939 3.82 0

Je dois obtenir un résultat comme celui-ci:

Semaine 1-7 //semaine contenant les jours 1 à 7
4.83 //montant avant taxes pour semaine 1-7
0.0 // TPS
0.36225 //TVQ

Semaine 8-14
5.33
0.0
0.0

Semaine 15-21
9.61
0.57659996
0.763995

Jusqu'à maintenant j'ai ceci comme programme, mon plus gros problème est que je n'arrive pas à séparer les données par semaine et là j'obtiens une erreur de segmentation et je ne sais même pas ce que ça veut dire!

#include <iostream>
using namespace std;

struct ventes{
int jour;
int inventaire;
float montant;
int taxes;
};

int main(void)
{

ventes v[1000];

int i=0;
int semaine=0;
int finsemaine=0;
float somme=0;
float pastaxes=0;
float TPSetTVQ=0;
float TPS=0;;
float TVQ=0;;

for(int i=1;semaine=i;i++){

cin >>v[i].jour;
cin >>v[i].inventaire;
cin >>v[i].montant;
cin >>v[i].taxes;

semaine=((v[i].jour-1)/7)+1;
finsemaine=semaine*7;

somme=somme+v[i].montant;

switch (v[i].taxes)
{
case 0:
pastaxes=pastaxes+v[i].montant;
break;
case 1:
TPSetTVQ=TPSetTVQ+v[i].montant;
break;
case 2:
TPS=TPS+v[i].montant;
break;
case 3:
TVQ=TVQ+v[i].montant;
break;
}

}

cout<<"Semaine "<<finsemaine-6<<"-"<<finsemaine<<endl;
cout<<"Montant :"<<somme<<endl;
cout<<"Pas de taxes :"<<pastaxes<<endl;
cout<<"TPS et TVQ :"<<TPSetTVQ<<endl;
cout<<"TPS :"<<TPS<<endl;
cout<<"TVQ :"<<TVQ<<endl;
cout<<endl;

return 0;
}


Est-ce que kkun pourrait m'aider??? Un gros gros merci à l'avance! :)
A voir également:

3 réponses

OpTyMyZeR Messages postés 49 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 7 septembre 2009 11
16 déc. 2007 à 18:59
Première erreur { for(int i=1; semaine=i; i++) } ta variable {i} doit s'arrêter quelque part, c-à-dire que le {semaine=i} n'est pas à sa place vu que {i} avance (tu incrémente i++) tu devrais mettre par exemple{ for(i=1; i<1000; i++) } ! (C'est sa l'erreur de segmentation[SEGMENTATION DEFAULT]).
A part sa je crois que le reste est cohérent !
0
Ok merci!

Je comprends maintenant l'erreur de segmentation. Par contre, je n'arrive quand même pas à séparer mes ventes par semaines... Dois-je faire 52 case dans un switch???

Merci!
0
Encore moi!

Aussi, quand je met mes "COUT" dans le "FOR", il les répète pour chaque incrémentation quand moi je voudrais seulement le total par semaine. Si je les mets à l'extérieur du "FOR" alors là il n'affiche que le dernier total en mémoire et évidemment, il contient toutes les semaines, pas seulement la dernière... Est-ce clair ce que je raconte?

Merci encore!
0