IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Erreur sous visual C#


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut Erreur sous visual C#
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Book[] arr;
            ............... //CODE
    switch (choice)
                    {
                        case 1:
           .................//CODE
     
    if (count == 0)
                                {
                                    arr = new Book[1];
     
                                    arr[count].BookID1 = bookidtmp;
                                    arr[count].BookName1 = name;
                                    arr[count].Price1 = price;
                                    arr[count].Author1 = author;
                                    arr[count].Publisher1 = publisher;
                                    ++count;
                                }
                                else
                                {
     
                                    Book[] arr1 = new Book[count + 1];
                                    for (int i = 0; i < count;++i )
                                         arr1[i] = arr[i];//erreur à cette ligne
                                    arr1[count].BookID1 = bookidtmp;
                                    arr1[count].BookName1 = name;
                                    arr1[count].Price1 = price;
                                    arr1[count].Author1 = author;
                                    arr1[count].Publisher1 = publisher;
                                    ++count;
                                    arr = arr1;
                                }
    J'ai une erreur à la ligne que j'ai mentionné plus haut qui me dit :

    "Erreur 2 Utilisation d'une variable locale non assignée 'arr' "
    Si quelqu'un aurait une solution,j'ai pas mal cherché je ne trouve pas la solution.
    Merci

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    si tu passe dans le bloc FALSE (Else) de ton if, tu n'instancieras pas ta variable arr mais tu voudras l'utiliser!
    la ligne necessaire à cela est posé dans le bloc TRUE du if


    Au fait, tu peux t'affranchir d'acceder des données grace au indices (source d'erreur). Regarde l'interface IEnumerable.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    Merci pour la réponse je suis d'accord avec toi zaan mais le fait est que si on rentre dans le else ca signifie que la variable "count" est supérieure strictement à 0(inférieur n'est pas possible dans le cas de mon programme) et donc que le tableau arr contient déjà des élèments Book donc le problème ne se pose pas,
    peut etre le compilateur n'anticipe pas cette situation?
    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace Targil_1
    {
        class Program
        {
            static void Main(string[] args)
            {
                bool loop = true;
                Book[] arr;
                int count=0,choice;
                while (loop==true)
                {
                    Console.WriteLine("1.Add a book");
                    Console.WriteLine("2.Delete book by BookID");
                    Console.WriteLine("3.Print the entire list");
                    Console.WriteLine("4.Print the list by Author");
                    Console.WriteLine("5.Exit");
                    Console.WriteLine("Enter your choice :");
                    choice = int.Parse(Console.ReadLine());
                    while (choice != 1 && choice != 2 && choice != 2 && choice != 3 && choice != 4 && choice != 5)
                    {
                        Console.WriteLine("Wrong choice !Please enter again :");
                        choice = int.Parse(Console.ReadLine());
     
                    }
     
                    switch (choice)
                    {
                        case 1: string name, author, publisher;
                                uint bookidtmp;
                                decimal price;
                                Console.WriteLine("Enter the new book id :");
                                bookidtmp = uint.Parse(Console.ReadLine());
                                Console.WriteLine("Enter the book name :");
                                name = Console.ReadLine();
                                Console.WriteLine("Enter the book price :");
                                price = decimal.Parse(Console.ReadLine());
                                Console.WriteLine("Enter the book author :");
                                author = Console.ReadLine();
                                Console.WriteLine("Enter the book publisher :");
                                publisher = Console.ReadLine();
                                if (count == 0)
                                {
                                    arr = new Book[1];
     
                                    arr[count].BookID1 = bookidtmp;
                                    arr[count].BookName1 = name;
                                    arr[count].Price1 = price;
                                    arr[count].Author1 = author;
                                    arr[count].Publisher1 = publisher;
                                    ++count;
                                }
                                else
                                {
     
                                    Book[] arr1 = new Book[count + 1];
                                    for (int i = 0; i < count;++i )
                                         arr1[i] = arr[i];
                                    arr1[count].BookID1 = bookidtmp;
                                    arr1[count].BookName1 = name;
                                    arr1[count].Price1 = price;
                                    arr1[count].Author1 = author;
                                    arr1[count].Publisher1 = publisher;
                                    ++count;
                                    arr = arr1;
                                }
                                break;
                            case 2: if (count == 0)
                                    Console.WriteLine("The library is empty");
                                else
                                {
                                    uint bookidtmp1;
                                    Console.WriteLine("Please enter the book id :");
                                    bookidtmp1 = uint.Parse(Console.ReadLine());
                                    bool found = false;
                                    foreach (Book a in arr)
                                    {
                                        if (a.BookID1 == bookidtmp1)
                                        {
                                            found = true;
                                            break;
                                        }
                                    }
                                    if (found)
                                    {
                                        int count2 = 0;
                                        Book[] arr2 = new Book[count - 1];
                                        foreach (Book a in arr)
                                        {
                                            if (a.BookID1 == bookidtmp1)
                                                continue;
                                            else
                                            {
                                                arr2[count2].BookID1 = a.BookID1;
                                                arr2[count2].BookName1 = a.BookName1;
                                                arr2[count2].Price1 = a.Price1;
                                                arr2[count2].Author1 = a.Author1;
                                                arr2[count2].Publisher1 = a.Publisher1;
                                            }
                                            ++count2;
                                        }
                                        arr = arr2;
                                    }
                                    else
                                        Console.WriteLine("The book isn't in the library");
     
                                }
                            break;
                        case 3: foreach(Book a in arr)
                                     a.ToString();
                                break;
                        case 4: break;
                        case 5: loop = false;
                            break;
                    }
     
     
                }
            }
     
        }
     
    }
    Je poste le code c'est peut etre plus simple.

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Le compilo ne peut pas se baser sur le resultat de l'execution pour la compilation (vu que le prog doit etre compilé pour etre executé).

    Et ce que tu me dis : se base sur le resultat de l'execution (que ton count est different de 0 etc..etc.. etc...)

    pas de miracle

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    Donc en fait il est possible d'avoir des erreurs de compilation comme ici bien que le programme fonctionne?
    et donc pour seule solution je dois changer le cours du programme pour ne pas que ce soit problématique pour le compilateur.
    Dans ce cas quelle solution peut tu me proposer?
    Merci

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    ceci est identique...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (choice != 1 && choice != 2 && choice != 2 && choice != 3 && choice != 4 && choice != 5)
    {
       //code
    }
    ...à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (choise > 0 && choise <=5)
    {
     
    }
    Dans ton case 1 à la place de mettre tout le code créé une méthode statique et encapsule le dedans.

    La méthode Parse peut déclencher une exception de type FormatException si l'utilisateur tape une lettre et appuie sur entrée ton programme plante. Place des gestionnaires d'exception à chaque fois que tu veux parser ou utilise la méthode TryParse.

    Pourquoi tu créé 2 tableaux différents pour stocker 2 objets différents ?

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    Pour la condition du while je suis d'accord
    Pour ce qui est des exceptions, je ne sais pas encore utiliser la gestion d'exception.
    Par contre j'ai pas compris la dernière remarque au sujet des tableaux, je crée un tableau principal nommé arr de Book et si j'ai besoin d'ajouter ou de supprimer un livre du tableau alors je réalloue un nouveau tableau de taille supérieure ou plus petite en fonction des cas et la ligne arr=arr1 me permet de faire en sorte que le nouveau tableau à jour soit toujours référencé par arr et vu que normalement je perd les référence à l'ancien tableau alors celui ci est automatiquement désalloué par le Garbage Collector, c'est bien ça?

  9. #9
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Quelques conseils qui vont tout changer:

    Encapsule les comportements de ton programme, en tout cas dans des methodes et si possible dans des classes.

    Utilise les collections generique en lieu et place de tes tableaux (sauf necessité absolue).

    Cela suffira je pense ;-)

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/05/2009, 20h29
  2. erreur sous Code Blocks : visual C++ runtime library
    Par historien dans le forum Ogre
    Réponses: 11
    Dernier message: 11/08/2008, 11h18
  3. Erreur ODBC sous visual c++
    Par thierryG dans le forum C++
    Réponses: 1
    Dernier message: 11/07/2008, 16h52
  4. Erreurs de links sous Visual C++ 2005 Express
    Par Spartan03 dans le forum wxWidgets
    Réponses: 6
    Dernier message: 13/11/2006, 18h27
  5. [Debutant] Erreur LNK2001 sous Visual.Net.
    Par Carosmagor dans le forum Visual C++
    Réponses: 9
    Dernier message: 11/05/2006, 07h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo