Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Devilchild656 avatar Devilchild656 48 Точки

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

namespace _07.Sumof5Numbers
{
class Sumof5numbers
{
static void Main(string[] args)
{
Console.WriteLine("Enter Numbers separete with space ");
string numbers = Console.ReadLine();
int numbersum = numbers.Split(' ').Sum(x => int.Parse(x));
Console.WriteLine("The sum of numbers are = {0}",numbersum);
}
}
}

 

Ето това е моя начин.Изпозвъл съм .Split за разделения със space и изпозвам .sum да намеря x който го декларирам .И го преубразувам във int.

-1
ViValDam avatar ViValDam 15 Точки

using System;

// here copy and paste  Nakov.IO
using Nakov.IO;
namespace Nakov.IO
{

    static void Main()
   {
   while(true)
   {
       Console.Write("Pleace, enter 5 numbers saparated by a space : ");

       double n0 = Cin.NextDouble();
       double n1 = Cin.NextDouble(); 
       double n2 = Cin.NextDouble(); 
       double n3 = Cin.NextDouble(); 
       double n4 = Cin.NextDouble();

       Console.WriteLine();
       Console.WriteLine("numbers: {0} {1} {2} {3} {4}, sum = {5} ", n0, n1, n2, n3, n4, n0 + n1 + n2 + n3 + n4);
       Console.WriteLine();
   }
  }
}

 

 //    Копирайте си файла using Nakov.IO; след  using System;

// Указания зя пoлзването на този файл, за четене от и писане на конзолата, има в учебника тук:

http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-4-console-input-and-output/#_Toc362296405

и в блога на С.Наков

http://www.nakov.com/blog/2011/11/23/cin-class-for-csharp-read-from-console-nakov-io-cin/

 

Сами доста трудно ще я решите , с избягването на всички ексепшъни и предвиждане на всички варианти !surprised

-3
RoYaL avatar RoYaL Trainer 6849 Точки

Колко варианти има като ограничението е 5 числа разделени със спейс. Ако някой въведе повече, по-малко или не ги разграничи със спейс - му казваш try again, брат :) Чист овъркил е да вкараш 5 променливи и да импортнеш цял клас, за да сумираш просто 5 числа въведени със спейс

2
ViValDam avatar ViValDam 15 Точки

Copy and paste , ли наричаш "оверкил"? Става за 30 секунди - нищо не трябва да импортираш !

Целта на тази задача е точно да научим да използваме този клас за In and Out - говориха за него  в лекциите !

Да не мислиш,че Наков го е писал , без да има смисъл от него ?

Прочети му указанията на класа първо, в учебника и как трябва да го копираме в проекта си,

за да го ползваме , преди да се "овъркилваш "wink с  ексепшъни !

Нарочно не го копирах по- горе,  в програмата, защото е много дълъг файла за форума.

Копирай го, веднага след using System; там където съм обозначила , иначе програмата няма да работи .

-3
RoYaL avatar RoYaL Trainer 6849 Точки

Класа е писан преди 2-3 години :) Да не мислиш че го е писал заради тази задача. Има си приложение, но тук това не е то. Копи-пейст е овъркил, да :) а using Nakov.IO; си е чист импорт, как така нищо не трябва да импортирам? Боже, на теб не трябва да ти се обяснява нищо допълнително - стой си като кон с капаци :) Имаш ужасно отношение към колегите си :)

4
ViValDam avatar ViValDam 15 Точки

Ето тук написах ,един код за тази задача, без  Nakov.IO, като ползвах нещо ново за мен - Split, който ти си ползвал smile  - разделяне на стринг на части ,по зададен характер.

Кода работи отлично,- но само , ако точно се нанасят числата и интервалите - числата да са точно през един интервал yell!

Иначе хвърля ексепшъни, като луд! Ха ха ха smile !

double number = 0;
double sum = 0;
Console.WriteLine("Please, enter 5 numbers, all in the same line, separated by only one interval ! ");
string stringOfWords = Console.ReadLine();
string[] words = stringOfWords.Split(' ');
foreach (string word in words)
{
     number = double.Parse(word);
     sum = sum + number;
}
Console.WriteLine("The sum of the entered 5 numbers is {0}.", sum);

 

Същите неща ползва,като твоя , но по-ясно става, за начинаещи, като мен , какво точно прави  Split  и кода .

1
RoYaL avatar RoYaL Trainer 6849 Точки

+1. Мисля, че е не лошо упражнения за масиви и операции с тях това между другото.

До колкото до много интервали - в интерес на истината, предполагам, по-натам в курса ще учим задълбочено Regular Expressions, които ти позволяват да правиш разни матчове от сорта на "открий ми всички '7' в стринг", "изкарай само числата от стринг", "открий всички празни пространства независимо колко са те" и т.н.  Съответно чрез регюлър експрешън, можеш да перформнеш и Replace т.е. "открий всички '7' в стринг и ги замести с 'W'" например. В твоя случай ще е "открий всички спейсове 1 или повече и ги замести само с един спейс'. Ето тук може да откриеш примерчета с това

http://social.msdn.microsoft.com/Forums/vstudio/en-US/3a431f8a-4860-41d7-b9a0-0b8c3d3f12e7/how-do-i-delete-unwanted-whitespaces-between-words-in-c?forum=csharpgeneral

 

0
ViValDam avatar ViValDam 15 Точки

Това всичко, което си използвал ти и аз сега - нищо от него още не е преподавано , а би трябвало задачата да може да се реши  с преподаденият материал - така , че Наков .ИО е правилното решение , освен това хваща ексепшъните 

 

Стрингс, Сплит, масиви , фор ич луп - нищо не е учено от това !

Все пак съгласи се - повечето сме начинаещи !

 

Смятам да наблегна на това ,което учим ,че има още 2 домашни пуснати .

Остана ми малко от игричката , задача 12, за падащите камъни да си довърша , тя е практически готова ,но понеже има функция , "екзит гейм" сискам да сложа и функция -" старт а ню гейм" - да знаеш как става ?

Аз намерих , как да я рестартирам , по няколко начина - но всеки път започва от последното ниво , с висока скорост и със старите данни от предишната игра - да знаеш как да ги изтрия , при рестартирането?

 

Виждам,че си напреднал с материала .cool 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Не съм погледнал как си я направила, но за да рестартираш до момента информацията, зависи как си я попълнила - ако са обекти, ги реинстанцирай, а ако са масиви ги попълни с началните им данни. Ако римерно имаш метод, който инициализира обектите/масивите при нова игра, ползвай него :)

0
TodorovH avatar TodorovH 216 Точки

Ето и моето решение на задачата, като не малко насоки получих от решенията на колегите във форума!

Празните редове са просто за по-добра визуализация, може и без тях!

http://pastebin.com/4mMev5qp

Поздрави

Хри100 ТодорOFF

0
kyamaliev avatar kyamaliev 209 Точки

Здравей, колега,

В случай, че ти е любопитно, ти предлага аналогично, но по-кратко решение :)

Не че няколко реда имат каквото и да е значение, но за всеки случай :)

Поздрав

0
TodorovH avatar TodorovH 216 Точки

Здравей,

Добро е, но не е по-кратко! Все по 8 реда с код имат и двете, без да броя скобите! Както казах празните редове са, за да е по-добра визуализацията, не обичам да виждам всички редове на програмата да са забити един в друг като се изпечатат на конзолата!

Благодаря за различния подход, всеки ден научаваме по нещо ново, в което е смисълът на форума и отворения код!

Поздрави

0
TonislavAtanasov avatar TonislavAtanasov 86 Точки

Решението не е лошо. Давам ти малко идея как да си улесниш живота и да не се налага да проверяваш за празни стойности в масива.

Първо - хубаво е това да сплитваш по масив от символи, така можеш да сплитнеш по няколко символа (например празно място и запетайка или пък по 10 различни неща - изборът е твой). Когато обаче искаш да разделяш само по single space, можеш просто да използваш Split() без параметри. По подразбиране това разделя по празно място (едно).

Второ - за да избегнеш празните позиции в масива, прочети за StringSplitOptions.RemoveEmptyEntries. Тази опция обаче можеш да ползваш само когато използваш за параметър на Split масив от символи (както ти си направил, нищо че масивът има само един елемент). Т.е. можеш просто да добавиш в numbers.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

Тази опция в Split ще премахне всички празни записи и ще направи проверката за null ненужна. Демек - ако имаш два интервала между някоя двойка числа (или пък повече) и разделиш по интервал това ще остави празен елемент между двата интервала (явно вече си се досетил, след като проверяваш за празни елементи). Този празен елемент ще бъде null и като се опиташ да парснеш null, получаваш грешка.

Амиии, това е. Поздрави и успех. Дано съм бил полезен.

0
Albert avatar Albert 1 Точки

Здравей,

 

Ето едно решение, което работи за конкретната задача и може лесно да разшириш обхвата от 5 на много повече събираеми. Предполагам не е най-краткото, но с наличните ми до сега знания толкова :)

 

 

using System;

namespace _07_SumOfFiveNumbers
{
    class SumOfFive
    {
        static void Main()
        {            
            double a = 0;
            double b = 0;
            double sum=0;
            Console.WriteLine("Enter 5 numbers separated by a space");
            string[] userINput = Console.ReadLine().Split();

             for (int i = 0; i < 5; i++)
                {
                    a = Convert.ToDouble(userINput[i]);
                    sum = a + b;
                    b = sum;
                }

            Console.WriteLine("Sum of first five Numbers is {0}",sum);
        }        
    }
}

0
a.angelov avatar a.angelov 1316 Точки

Ползвай http://pastebin.com/ или https://github.com/ за качване на кода и във форума публикувай само линка към него - по-лесно е за преглеждане и е прието така да се прави.

2
Albert avatar Albert 1 Точки

 

Благодаря за коментара относно правилата във форума:

 

Май така е по добре:  линк към задача Sum of 5 Numbers

1
TonislavAtanasov avatar TonislavAtanasov 86 Точки

Можеш да се отървеш от a и b. Трябва ти само една променлива sum от съответния тип (препоръчвам double, за да може да смята и реални числа, а не само цели), която в началото е със стойност 0. В цикъла увеличаваш само сумата с парснатата стойност, т.е. 

sum += double.Parse(userInput[i]);

That's it :)

Успех!

0
naskoprasko avatar naskoprasko 9 Точки

double sum = 0;
string[] arr = Console.ReadLine().Split();
for (int i = 0; i < arr.Length;i++)
{
sum += double.Parse(arr[i]);
}
Console.WriteLine(sum);

За колкото си искате числа...

0
indieza avatar indieza 46 Точки

string [] numbers = new string[5];

double sum = 0;

numbers =Console.ReadLine().Split();

for (int i = 0; i < numbers.Length; i++)

{

sum += Convert.ToDouble(numbers[i]);

}

 

Попринцип на мен това ми помогна, дано и натеб да ти послужи. Успех:))

0
Filkolev avatar Filkolev 4482 Точки

Както е писал колегата по-горе, ако смесиш декларацията на масива със сплитването няма значение колко са числата. Какво става ако ти подадат повече числа и се опиташ да ги запазиш в масив с 5 заделени места за стойности? Един вид ползваш мощно оръжие, което действа в повече ситуации и го осакатяваш, за да може да работи само в конректни условия. Т.е. ето това е доста по-фунцкионално:

string [] numbers = Console.ReadLine().Split();

1
Daniel.S avatar Daniel.S 1 Точки

Console.WriteLine("Enter a number: ");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter a second number: ");
            int b = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter a third number: ");
            int c = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter a forth number: ");
            int d = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter a fifth number: ");
            int e = int.Parse(Console.ReadLine());

            Console.WriteLine("{0} + {1} + {2} + {3} + {4} = {5}", a, b, c, d, e, a + b + c + d + e);

 

Ето и моето решение на тази задача. Надявам се, правилно да съм разбрал и аз условието.smiley

0
Lamms avatar Lamms 197 Точки

Условието не е такова. Пише числата да се въвеждат на един ред, което усложнява задачата.

0
nikolaykk avatar nikolaykk 94 Точки

Здравей,

Ето моето решение.Така можеш да въведеш не 5 ,а колкото искаш числа.

double result = 0;
            string bigNumber = Console.ReadLine();
            string[] numbers = bigNumber.Split(' ');
            for (int i=0; i<numbers.Length;i++)
            {
                result += double.Parse(numbers[i]);
            }
            Console.WriteLine(result);

3
04/06/2015 11:01:23
slavpetroff avatar slavpetroff Trainer 155 Точки

Привет!

Това е моето решение на задачата :

using System;
using System.Linq;
using System.Text.RegularExpressions;

namespace SumOf5Numbers
{
    class SumOf5Numbers
    {
        static void Main()
        {
            int sum = 0;
            string numbersLine = Console.ReadLine();
            string[] numbers = numbersLine.Split(new char[] { ' ' });
            int[] arr = numbers.Select(int.Parse).ToArray();
            for (int i = 0; i < arr.Length; i++)
            {
                sum += arr[i];
            }
            Console.WriteLine(sum);
        }
    }
}

0
Filkolev avatar Filkolev 4482 Точки

Ако ще ползваш LINQ има и още по-кратко решение:

var sum = Console.ReadLine().Split().Sum(x => int.Parse(x));

Console.WriteLine(sum);

2
slavpetroff avatar slavpetroff Trainer 155 Точки

Аз съм доста начинаещ и не съм запознат с ламбда функцията :) Благодаря,за отговора :)

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.