Wyjątki w C#

Odpowiedz Nowy wątek
2015-01-16 20:22
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

Pozostało 580 znaków

2015-01-16 20:33
1

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

Pozostało 580 znaków

2015-01-16 20:39
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 ?

Pozostało 580 znaków

2015-01-16 20:51
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);

Pozostało 580 znaków

2015-01-16 21:15
0

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

Pozostało 580 znaków

2015-01-16 21:17
1

Identycznie tylko używasz int.TryParse

Pozostało 580 znaków

2015-01-16 21:32
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.

Pozostało 580 znaków

2015-01-16 21:40

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();

Pozostało 580 znaków

2015-01-16 21:46
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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