Struktury. Nie wyświetla się indeks.

0
namespace ConsoleApplication60
{
    class Program
    {
        struct Student
        {
           public String imie;
           public  String nazwisko;
           public int indeks;
           public double średnia;
        }
        static void Main(string[] args)
        {

            int indeksPoczatkowy = 1000;
            int szukanyIndeks;
            Student [] pierwszy = new Student [3];
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("Student {0}:",i+1);
                Console.Write("imię: ");
                pierwszy[i].imie = Console.ReadLine();
                Console.Write("nazwisko: ");
                pierwszy[i].nazwisko = Console.ReadLine();
                
                pierwszy[i].indeks = indeksPoczatkowy + i;
                Console.Write("średnia: ");
                pierwszy[i].średnia = Convert.ToDouble(Console.ReadLine());    
            }

            Console.Clear();
            Console.WriteLine("Studenci:");
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("{0} {1} indeks: {2}; średnia: {3}",pierwszy[i].imie,pierwszy[i].nazwisko,pierwszy[i].indeks,pierwszy[i].średnia);
            }
            Console.Clear();
            Console.Write("Podaj indeks studenta, którego chcesz znaleźć: ");
            szukanyIndeks = Convert.ToInt32(Console.ReadLine());
           
         
            for(int i = 0; i < 3; i++)
            {
                if(szukanyIndeks == pierwszy[i].indeks) 
                {
                    Console.WriteLine("{0} {1} indeks: {2}; średnia: {3}",pierwszy[i].imie,pierwszy[i].nazwisko,pierwszy[i].indeks,pierwszy[i].średnia);
                }
            }

                        Console.ReadKey();


        }
    }
}


Co robię nie tak, że nie wyświetla się indeks?

1
  1. jakie dane wprowadzasz
  2. czemu nie uzyjesz gotowych funkcji ktore sa w biblotece?
  3. uzywales debuggera?
0

zadanie brzmi tak: zadeklarować trzyelementową tablicę struktury "Student" zawierającą następujące pola: imię, nazwisko, indeks, średnia. Pobrać dane od użytkownika i następnie zrobić moduł wyszukiwania studentów po indeksie.
Uczyliśmy się tak to wykonywać na studiach

1

czy w ogole przeczytales moj post? Jezeli tak, to czemu nie zastosowales sie do moich pytan?

A to, ze sie tak uczyliscie na studiach to

  1. nie znaczy ze jest dobrze
  2. nic nadal nie jest wspomnianie ze nie mozesz uzyc gotowych funkcji ktore sa juz w jezyku
1

Dlaczego w ogóle męczą Was strukturami do przechowywania takich rzeczy? Przecież struktura to value type. Aż się prosi tutaj o klasę. Wykładowca chyba w dalszym ciągu myśli, ze struktura w C# to to samo co struktura w C++.

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

namespace App
{
    class Program
    {
        class Student
        {
            public string Name;
            public string Surname;
            public int Index;
            public double Average;
        }

        static void Main(string[] args)
        {
            var startIndex = 1000;
            var searchedIndex = 0;
            var count = 3;
            var students = new Student[count]; // Lepsza będzie w ogóle lista List<Student>

            for (int i = 0; i < students.Length; i++)
            {
                students[i] = new Student();
                Console.WriteLine("Student {0}:", i + 1);
                Console.Write("Name: ");
                students[i].Name = Console.ReadLine();
                Console.Write("Surname: ");
                students[i].Surname = Console.ReadLine();

                students[i].Index = startIndex + i;
                do { Console.Write("Average: "); } while (!double.TryParse(Console.ReadLine(), out students[i].Average));
            }

            Console.Clear();
            Console.WriteLine("Students:");
            foreach (var s in students)
            {
                Console.WriteLine("{0} {1} Index: {2}; Average: {3}", s.Name, s.Surname, s.Index, s.Average);
            }

            Console.WriteLine("Give me an index to find: ");
            do { Console.Write("Index: "); } while (!int.TryParse(Console.ReadLine(), out searchedIndex));

            var found = students.FirstOrDefault(s => s.Index == searchedIndex);
            if (found != null) Console.WriteLine("{0} {1} Index: {2}; Average: {3}", found.Name, found.Surname, found.Index, found.Average);
            else Console.WriteLine("Index number doesn't exists!");
        }
    }
}

W C# nazwy publicznych pól piszemy z wielkiej litery.
Pamiętaj, że double czytane z konsoli to liczby wprowadzane z przecinkiem, a nie kropką!
Poza tym podziel ten kod na funkcję tak żeby nie wrzucać wszystkiego do main'a etc...

0

a da się poprawić to co już napisałam? bo musimy to wykonać taką metodą, a takich instrukcji się nie uczyliśmy i nie stosujemy

już mi się udało naprawić, wszystko działa :D wystarczyło skasować :

Console.Clear();

przed

 Console.Write("Podaj indeks studenta, którego chcesz znaleźć: ");

teraz mam dylemat jak zrobić taki sam program tylko z wyszukiwaniem studentów po imieniu lub nazwisku do wyboru przez użytkownika, da mi ktoś jakąś podpowiedź?

0

Zainteresuj się metodą Contains klasy string.

1 użytkowników online, w tym zalogowanych: 0, gości: 1