Wyjątki w C#

0

Mam problem w dwóch programach na zaliczenie. Nie jestem jakimś specem od programowania i pewnie mój problem jest banalny ale w dwóch programach nie wiem jak zawrzeć wyjątki.

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

namespace Zad9
{
    class Program
    {
        static void Main(string[] args)
        {

            
                System.Console.WriteLine("Podaj liczbe:");
           
                ulong nLiczba = ulong.Parse(System.Console.ReadLine());


                
                bool[] tablica = new bool[nLiczba + 1];

              
                for (ulong i = 2; i <= nLiczba; i++)
                {
                    tablica[i] = true;
                }
            
         

            ulong pierwiastek = (ulong)Math.Sqrt(nLiczba);
            
            for (ulong i = 2; i <= pierwiastek; i++)
            {
            
                for (ulong j = i + i; j <= nLiczba; j += i)
                {
                    
                    tablica[j] = false;

                    if (tablica[nLiczba] == false)
                    {
                      
                        System.Console.WriteLine("Liczba zlozona podzielna przez " + i);
                        System.Console.ReadKey();
                        return;
                    }
                }
            }

         
            if (tablica[nLiczba] )
            {
                System.Console.WriteLine("Liczba pierwsza");
            }
            System.Console.ReadKey();
        }
    }
}
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Zad10
{
    class Program
    {
        static void Main(string[] args)
        {
            
            System.Console.Write("Podaj stopien wielomianu: ");
            int nStopienWielomianu = int.Parse(System.Console.ReadLine());

          
            if (nStopienWielomianu < 1)
            {
                System.Console.Write("Stopień wielomianu musi być większy od 0");
                System.Console.ReadKey();
                return;
            }
      
            int[] wsp = new int[nStopienWielomianu + 1];

           
            System.Console.Write("Podaj wyraz wolny: ");
            wsp[nStopienWielomianu] = int.Parse(System.Console.ReadLine());

          
            for (int i = 1; i <= nStopienWielomianu; ++i)
            {
                System.Console.Write("Podaj wspolczynik przy x^" + (i) + " :");
                wsp[nStopienWielomianu-i] = int.Parse(System.Console.ReadLine());
            }

          
            System.Console.Write("Podaj wartość x: ");
            int x = int.Parse(System.Console.ReadLine());

          

           
            int wynik = wsp[0];

           
            for (int i = 1; i <= nStopienWielomianu; i++)
                wynik = (wynik * x) + wsp[i];

            
            System.Console.Write("Wartość wielomianu wynosi: "+wynik);
            System.Console.ReadLine();
        }
    }
}

To są te dwa programy jeżeli ktoś wie jak to dobrze zrobić to będę wdzięczny za pomoc. Próbowałem try i catch ale wyskakują mi errory

1

Nie potrzebujesz wyjątków, użyj TryParse

0

Nie czaje tego zbytnio. W innych programach robiłem po prostu

 try
            {
                
           
                System.Console.Write("Podaj liczba a: ");
                a = Double.Parse(System.Console.ReadLine());

                System.Console.Write("Podaj liczba b: ");
                b = Double.Parse(System.Console.ReadLine());

                System.Console.Write("Podaj liczba c: ");
                c = Double.Parse(System.Console.ReadLine());
                System.Console.WriteLine();

            }
            catch (System.FormatException)
            {
                System.Console.WriteLine("Musisz podać liczbę");
            }
            catch (System.OverflowException)
            {
                System.Console.WriteLine("Wprowadzona liczba jest poza dopuszczalnym zakresem");
            }
            catch (System.ArgumentNullException)
            {
                System.Console.WriteLine("Napotkano koniec strumienia");
            }

Jak mam użyć tego TryParse ?

1
ulong number;
while(!UInt64.TryParse(Console.ReadLine(), out number))
{
    Console.WriteLine("Coś jest nie tak, wprowadź jeszcze raz");
}
Console.WriteLine("Poprawnie wprowadziłeś liczbę " + number);
0

A to drugie zadanie jak mam int a nie ulong to jak ?

1

Identycznie tylko używasz int.TryParse

0

Ok już prawie mam :) tylko w tym programie tworzę jeszcze tablicę jak to wtedy zapisać.

  int[] wsp = new int[nStopienWielomianu + 1];

          
            System.Console.Write("Podaj wyraz wolny: ");
            wsp[nStopienWielomianu] = int.Parse(System.Console.ReadLine());

          
            for (int i = 1; i <= nStopienWielomianu; ++i)
            {
                System.Console.Write("Podaj wspolczynik przy x^" + (i) + " :");
                wsp[nStopienWielomianu-i] = int.Parse(System.Console.ReadLine());
            }

Wiem że pewnie pytam o banalne rzeczy ale siedzę już nad tymi programami dwa tygodnie a jestem laikiem jeżeli chodzi o programowanie.

1

Zamień to na metodę:

int InputNumber()
{
    int number;
    while(!int.TryParse(Console.ReadLine(), out number))
    {
        Console.WriteLine("Coś jest nie tak, wprowadź jeszcze raz");
    }
    return number;
}

i później

wsp[nStopienWielomianu] = InputNumber();
0

Wielkie dzięki chyba wszystko działa, masz u mnie piwo ;)

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