Erreur Accessibilité incohérente en c#

Résolu
iliass0408 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
L0ci Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -
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 110 Date d'inscription   Statut Membre Dernière intervention   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 10 Date d'inscription   Statut Membre Dernière intervention   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 110 Date d'inscription   Statut Membre Dernière intervention   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 10 Date d'inscription   Statut Membre Dernière intervention   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 110 Date d'inscription   Statut Membre Dernière intervention   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 10 Date d'inscription   Statut Membre Dernière intervention   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 110 Date d'inscription   Statut Membre Dernière intervention   30
 
0