Co robie nie tak?

0

Witam serdecznie

Polecenie wyglada tak "Napisz program pobierający od
użytkownika liczby całkowite. Program ma pobierać te
liczby do czasu, gdy użytkownik wprowadzi wartość 0 (zero). Wynikiem działania programu
ma być informacja o sumie wprowadzonych przez użytkownika liczb"

W zalaczniku podalem to co mi sie udalo zrobic ale nie wiem co nie dziala.

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

namespace Sumowanie_liczb_do_momentu_podania_0
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Podawaj liczby, gdy napiszesz 0 komputer zsumuje wszystkie wczesniej wpisane");
            int liczba = int.Parse(Console.ReadLine());
            int suma = 0;

            do
            {
                suma += liczba;
                Console.ReadLine();
            }
            while (liczba != 0);

            if (liczba == 0)
                Console.WriteLine(suma);
            Console.ReadKey();
        }
    }
}

Za pomoc dziekuje

pozdrawiam

2

Czytasz nową linię - Console.ReadLine() w środku pętli ale nic z tym nie robisz.
Sparsuj to do int, przypisz do liczba i dopiero później dodaj do sumy.

poza tym ten if:

if(liczba == 0) 

jest bezsensowny, bo wiadomo, że liczba jest równa 0, inaczej nie wyszedłbyś z pętli.

2

I po co Ci pierwsze pobranie? Pierwsze pobranie liczby powinno być dopiero w pętli, a nie przed nią. Ta linijka jest bez sensu i wprowadza tylko niepotrzebną nadmiarową instrukcję. To zadziała tak, jakby dodatkowy krok w pętli.

1
  • Używasz int.Parse zamist int.TryParse. Bez sensu, ponieważ Parse przy pierwszej okazji rzuci wyjątkiem, a przecież pomyłka przy wpisywaniu litery zamiast liczby nie jest sytuacją wyjątkową, a wyjątki są "drogie".
  • Natomiast z rzuconym wyjątkiem tak naprawdę niczego nie robisz:
  • Warunek w `if`` na końcu jest również bez sensu - jest niepotrzebny;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SophisticatedNamespace
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var number = 0;
            var sum = 0;
            do
            {
                while (!int.TryParse(Console.ReadLine(), out number))
                    Console.WriteLine("Enter valid number, please!");
                sum += number;
            }
            while (number != 0);
            Console.WriteLine("Sum: {0}", sum);
        }
    }
}

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