C++ Erreur de segmentation (entres autres)

infonulle -  
 infonulle -
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! :)

3 réponses

OpTyMyZeR Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   11
 
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
infonulle
 
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
infonulle
 
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