Erreur Segmentation - C++ - Programmation
Marsh Posté le 03-11-2005 à 18:02:08
une petite erreur dans ta fonction affect(); il fallait mettre
printf("Valeur de la %i eme valeur ?\n",i);
et non pas
printf("Valeur de la %n eme valeur ?\n",i);
voici le code corrigé
Code :
|
Marsh Posté le 03-11-2005 à 17:16:59
Bonjour tout le monde ...
J'ain un petit pb ac un prog basique gérant des tableaux par classe...
La compilation ac c++ marche nikel
sauf ke kan j'utilise le case 1 du switch ... il me met
Erreur segmentation...
L'erreur doit etre vraiment basique mais je ne la trouve pas ...
Merci d'avance a ceux ki auront la patience de se mettre dedant !
Fitzdsl
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
class tableau
{
private : int nbelmt;
float *v;
public : tableau(int n)
{
if(n<=0)
{
printf("Erreure création du tableau\n" );
exit(1);
}
nbelmt=n;
v=new float[nbelmt];
if(v==0)
{
printf("Erreure allocation du tableau\n" );
exit(2);
}
}
tableau()
{
nbelmt=10;
v=new float[nbelmt];
if(v==0)
{
printf("Erreure allocation du tableau\n" );
exit(2);
}
}
~tableau()
{
delete v;
printf("Destructeur utilisé !!\n" );
}
void afficher()
{
for(int i=0;i<nbelmt;i++)
printf("|%f",v[i]);
printf("|\n" );
}
float& operator[](int &i)
{
if(i<0 || i>=nbelmt)
{printf("Valeur hors borne\n" );
exit(3);
}
return v[i];
}
void operator=(tableau &t)
{
if(t.nbelmt>nbelmt)
{
printf("Erreur tableau a copier trop grand !!\n" );
exit(4);
}
for(int i=0;i<t.nbelmt;i++)
{v[i]=t.v[i];}
}
void affect()
{
for(int i=0;i<nbelmt;i++)
{
printf("Valeur de la %n eme valeur ?\n",i);
scanf("%f",&v[i]);
}
}
void reinit()
{
for(int i=0;i<nbelmt;i++)
v[i]=0.0;
}
};
main()
{
int n;
int c;
printf("Création du tableau\n" );
printf("Combien de case souhaitez-vous ?\n" );
scanf("%d",&n);
tableau t(n);
do{
printf("Que souhaitez-vous faire ?\n" );
printf("1 - Initialiser de maniere manuelle le tableau\n" );
printf("2 - Afficher le contenu du tableau\n" );
printf("3 - Remettre a zéro le tableau\n" );
int choix=0;
scanf("%d",&choix);
switch (choix)
{
case 1 : t.affect();
break;
case 2 : t.afficher();
break;
case 3 : t.reinit();
break;
};
printf("Souhaitez-vous faire d'autres opérations sur le tableau ? (1/2)\n" );
scanf("%d",&c);
}while(c==1);
}