Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Czy ten kod jest poprawny?


Gość CapthaPL 4Ever

Rekomendowane odpowiedzi

Opublikowano

Witam, od czasu zacząłem się interesować C#, znam podstawy, liznąłem WPF lecz... mam problem z obiektowością, nie rozumiem jeszcze w pełni hermetyzacji itp i tu moje pierwsze pytanie, czy ten kod jest poprawny? Czy coś (oprócz nazw zmiennych i klas) należy zmienić? Z góry dziękuję :)

 

 

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CapthaPL
{

    class prostopadloscian
    {
        private uint a;
        private uint b;
        private uint c;
        public prostopadloscian(uint ab,uint ac,uint an)
        {
            a = ab;
            b = ac;
            c = an;
        }
        public uint prostopadloscianVolume()
        {
            return a * b * c;
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            bool prawda = false;
            do
            {
                try
                {
                    uint bokA = Convert.ToUInt32(Console.ReadLine());
                    uint bokB = Convert.ToUInt32(Console.ReadLine());
                    uint bokC = Convert.ToUInt32(Console.ReadLine());
                    prostopadloscian pr = new prostopadloscian(bokA, bokB, bokC);
                    Console.WriteLine(pr.prostopadloscianVolume());
                    prawda = false;
                }
                catch (System.OverflowException)
                {
                    Console.WriteLine("Bledne dane! Wartosc musi byc dodatnia!");
                    prawda = true;
                }
                } while (prawda == true);
            Console.ReadKey();
        }
    }
}

Opublikowano

Dobrze, że masz świadomość, że nazewnictwo jest kompletnie skopane (pomijam to w dalszej części). Co do obiektowości - nie ma praktycznie czego oceniać, ta jedna klasa co ją masz jest raczej ok, natomiast w mainie masz do poprawy obsługę błędów - raz, że nie obsługujesz sytuacji gdy ktoś poda cokolwiek innego niż int, dwa - po podaniu ujemnego inta trzeba wszystko podawać od początku.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Nazewnictwo wiem, wracając do błędów, czy do - while jest poprawnym użyciem? Czy jest coś lepszego do powtórzenia jeśli wystąpi błąd? i czy w "catch" jestem w stanie dodać dwa wyjątki a nie tylko jeden.

Opublikowano

W catch możesz obsługiwać wszystkie klasy wyjątków wyrzuconych w bloku try. Co do do...while - Twoje rozwiązanie tak jak mówię jest niepoprawne o tyle, że zmuszasz użytkownika do powtórnego wpisywania wszystkich liczb, nie tylko tej jednej niepoprawnej.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Mhmm.. więc powinienem zrobić try catch do każdego wpisywania liczby ? Czy jakiś inny sposób

  • 2 tygodnie później...
Opublikowano

Mhmm.. więc powinienem zrobić try catch do każdego wpisywania liczby ? Czy jakiś inny sposób

Możesz to zrobić na przykład tak:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
class Program
{
    static void Main(string[] args)
    {
        var boki = new List<int>();
        for (var i = 0; i < 3; i++)
        {
            Console.WriteLine("Podaj bok nr {0}", i+1);
            int bok;
            if (int.TryParse(Console.ReadLine(), out bok))
                boki.Add(bok);
            else
            {
                Console.WriteLine("Podaj prawidlowa liczbe!");
                i--;
            }
        }
        var p = new Prostopadloscian(boki[0], boki[1], boki[2]);
        Console.WriteLine("Objetosc: {0}", p.Objetosc);
        Console.ReadKey();
    }
}
 
public class Prostopadloscian
{
    public ElementyFigur.Boki Boki;
    public int Objetosc
    {
        get
        {
            return Boki.A * Boki.B * Boki.H;
        }
    }
 
 
    public Prostopadloscian(int a, int b, int c)
    {
        this.Boki = new ElementyFigur.Boki()
        {
            A = a,
            B = b,
            H = c
        };
    }
}
 
namespace ElementyFigur
{
    public class Boki
    {
        public int A { get; set; }
        public int B { get; set; }
        public int H { get; set; }
    }
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...