Erreur Accessibilité incohérente en c#

Résolu
iliass0408 Messages postés 15 Statut Membre -  
L0ci Messages postés 112 Statut Membre -
Bonjour,

On ns a demandé de faire un prog de gestion de stagiaire, voici mon code:
le compilateur m'affiche l'erreur suivante:

Erreur 1 Accessibilité incohérente : le type de paramètre 'MenuEtudEx4.Program.etd' est moins accessible que la méthode 'MenuEtudEx4.Program.ajouter(System.Collections.Generic.List<MenuEtudEx4.Program.etd>, MenuEtudEx4.Program.etd)' D:\DebutC#\MenuEtudEx4\MenuEtudEx4\Program.cs 56 28 MenuEtudEx4


Je ne vois pas ce que c'est, aidez moi svp.





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MenuEtudEx4
{
class Program
{
struct etd
{
public string nom;
public string prenom;
public string filiere;
public int annee;
public double[] notes;
}

static void Main(string[] args)
{
string choix="";
List<etd> maliste = new List<etd>();
etd e1=new etd();
do
{
menu(choix);
switch (choix)
{
case "1": ajouter(maliste,e1);break;
case "2": rechercher(maliste);break;
case "3": modifier(maliste, e1);break;
case "4": supprimer(maliste);break;
case "6": Console.WriteLine("A la prochaine");break;
default: Console.WriteLine("entrer un choix de 1 à 6");break;
}
Console.ReadKey();
} while ( (choix!="6"));

}

public static void menu(string ch)
{
Console.WriteLine("|-----Gestion des notes des étudiants-------|");
Console.WriteLine("|----Programme rélaisé par -----|");
Console.WriteLine("|-------------------------------------------|");
Console.WriteLine("|1--> Pour ajouter un étudiant |");
Console.WriteLine("|2--> Pour rechercher un étudiant |");
Console.WriteLine("|3--> Pour modifier un étudiant |");
Console.WriteLine("|4--> Pour supprimer un étudiant |");
Console.WriteLine("|5--> Pour trier les étudiants |");
Console.WriteLine("|6--> Pour quitter |");
Console.WriteLine("/t entrer votre choix /t");
ch = Console.ReadLine();
}

public static void ajouter(List<etd> maliste1,etd E)
{

Console.Write("Entrer nom:"); E.nom = Console.ReadLine();
Console.Write("Entrer prénom:"); E.prenom = Console.ReadLine();
Console.Write("Entrer filière:");E.filiere = Console.ReadLine();
Console.Write("Entrer année:"); E.annee = int.Parse(Console.ReadLine());
Console.WriteLine("Entrer les notes:"); E.notes = new double[3];
for (int i = 0; i < E.notes.Length; i++)
{
Console.Write("Entrer une note:"); E.notes[i] = double.Parse(Console.ReadLine());
Console.Write("\n");
}
Console.WriteLine("Etudiant bien ajouté!");
maliste1.Add(E);
}

public static void rechercher(List<etd>list)
{
String n = string.Empty;
int p = -1, k = 0;
Console.WriteLine("Entrer le nom de l'étudiant");
n = Console.ReadLine();
foreach (etd element in list)
{
if (element.nom == n)
p = k;
else k++;
}
if (p >= 0)
{
Console.Write(list[p].nom + " " + list[p].prenom + " " + list[p].filiere + " " + list[p].annee);
Console.Write(" Ses notes:");
for (int i = 0; i < list[p].notes.Length; i++)
{
if (i == list[p].notes.Length - 1)
Console.Write(list[p].notes[i]);
else
Console.Write(list[p].notes[i] + ",");
}
Console.Write("\n");
}
else
Console.Write("Pas d'enregistrement");
}

public static void modifier(List<etd> liste,etd e)
{
string n1 = "";
int p1 = -1, k1 = 0;
Console.WriteLine("entrer le nom à modifier:");
n1 = Console.ReadLine();
foreach (etd element in liste)
{
if (element.nom == n1)
p1 = k1;
else k1++;
}
if (p1 >= 0)
{
Console.Write("Entrer nom:");
e.nom = Console.ReadLine();
Console.Write("Entrer prénom:");
e.prenom = Console.ReadLine();
Console.Write("Entrer filière:"); e.filiere = Console.ReadLine();
Console.Write("Entrer année:"); e.annee = int.Parse(Console.ReadLine());
Console.WriteLine("Entrer les notes:");
e.notes = new double[3];
for (int i = 0; i < e.notes.Length; i++)
{
Console.Write("Entrer une note:"); e.notes[i] = double.Parse(Console.ReadLine());
Console.Write("\n");
}
liste[p1] = e;
}
else
Console.Write("Pas denregistrements");
}

public static void supprimer(List<etd> liste2)
{
string n2 = "";
int p1 = -1; int k1 = 0;
Console.Write("Sasissez le nom de l'étudiant à supprimer:");
n2 = Console.ReadLine();
foreach (etd element in liste2)
{
if (element.nom == n2)
p1 = k1;
else k1++;
}
if (p1 >= 0)
liste2.RemoveAt(p1);
else
Console.Write("Pas denregistrements");
}


}

}






7 réponses

L0ci Messages postés 112 Statut Membre 30
 
Bonjour,

essaie de déclarer ta structure en public:
public struct etd 
{ 
   public string nom; 
   public string prenom; 
   public string filiere; 
   public int annee; 
   public double[] notes; 
} 


l'erreur survient car ta méthode ajouter est public mais ta structure ne l'est pas. Ta structure est donc plus protégée que la méthode, d'ou l'erreur.
3
iliass0408 Messages postés 15 Statut Membre 3
 
Merci l'erreur est résolu, mais le programme ne tourne pas bien, j'ai qq chose qui ne va pas bien dans mon switch; lorsque j'entre un choix il ne s'exécute pas, il me donne le message déclaré dans (default) :entrer un choix de 1 à 6.....???

Aidez moi svp
0
L0ci Messages postés 112 Statut Membre 30
 
Bonjour,
l'erreur, je pense, vient du fait que la valeur rentrée par l'utilisateur n'est pas celle qui est dans le switch:

menu();  //tu affiches ton menu

do 
{ 
      choix= Console.ReadKey();  //tu lis l'entrée et tu affectes la 
                                               //variable qui passe dans le switch

      switch (choix) 
      { 
           case "1": ajouter(maliste,e1);break; 
           case "2": rechercher(maliste);break; 
           case "3": modifier(maliste, e1);break; 
           case "4": supprimer(maliste);break; 
           case "6": Console.WriteLine("A la prochaine");break; 
           default: Console.WriteLine("entrer un choix de 1 à 6");break; 
      } 
} while ( (choix!="6")); 

} 

public static void menu() 
{ 
Console.WriteLine("|-----Gestion des notes des étudiants-------|"); 
Console.WriteLine("|----Programme réalisé par -----|"); 
Console.WriteLine("|-------------------------------------------|"); 
Console.WriteLine("|1--> Pour ajouter un étudiant |"); 
Console.WriteLine("|2--> Pour rechercher un étudiant |"); 
Console.WriteLine("|3--> Pour modifier un étudiant |"); 
Console.WriteLine("|4--> Pour supprimer un étudiant |"); 
Console.WriteLine("|5--> Pour trier les étudiants |"); 
Console.WriteLine("|6--> Pour quitter |"); 
Console.WriteLine("/t entrer votre choix /t"); 
} 


Si tu veux ré-afficher ton menu entier a chaque fois il suffit de le mettre dans le do{}
0
iliass0408 Messages postés 15 Statut Membre 3
 
Merci pour ton aide ça marche, une dernière question svp, si je veux trier mes stagiaires par ordre alphabétique, comment je vais procéder


merci pour votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
L0ci Messages postés 112 Statut Membre 30
 
Bonjour,
eh bien si tes étudiants sont dans une base de données il suffit d'ajouter un ORDER BY 'nom_de_la_colonne' a la fin de ta requête.
0
iliass0408 Messages postés 15 Statut Membre 3
 
Non, c'est pas le cas. les étudiants sont entrés ds une liste par l'utilisateur.Merci qd meme
0
L0ci Messages postés 112 Statut Membre 30
 
0