Co robie nie tak?

2017-05-21 21:06
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

edytowany 4x, ostatnio: Ktos, 2017-05-22 09:46
Wrzuć kod na pastebina - iwannabeprogrammer 2017-05-21 21:10
dałeś tylko plik solucji. On nie zawiera kodu! - MarekR22 2017-05-21 21:10
Sorry, teraz lepiej? - Barteker 2017-05-21 21:20
Nie. Wejdź na https://pastebin.com/ , wklej tam Twój twór i wklej wyprodukowany link zamiast .sln do pobrania. - iwannabeprogrammer 2017-05-21 21:21
najlepiej edytuj pytanie w wklej tam kod pomiędzy znacznikami ```csharp \<tu kod> ``` - MarekR22 2017-05-21 21:22
Popraw tytuł wątku na taki, który będzie cokolwiek mówił z czym konkretnie masz problem. - Ktos 2017-05-22 13:25

Pozostało 580 znaków

2017-05-21 21:41
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.

Dzieki wielkie teraz wszystko dziala. Ach jeszcze tyle nauki... Ile sie juz uczyc programowac w C#? - Barteker 2017-05-21 21:49
Ile już uczę się C#? 2 lata, może nawet mniej. A co do nauki - jak już ogarniesz podstawy będzie Ci lżej, bo nauka będzie polegała tylko na poznawaniu nowych klas, metod itd. ale będziesz wiedział co i jak działa. - atmal 2017-05-21 21:55

Pozostało 580 znaków

2017-05-22 09:17
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.

Pozostało 580 znaków

2017-05-22 09:28
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);
        }
    }
}
edytowany 3x, ostatnio: grzesiek51114, 2017-05-22 09:35

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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