Loading...
Zarodath avatar Zarodath 0 Точки

[Programming Basics] 10. Half Sum Element (Simple Loops)

Добър ден/вечер на всички, изглежда съм сляп и не мога да си видя грешката - извежда ми разликата в най-голямото число и общата стойност, но когато общатата стойност и най-голямото число са равни, не ми изкарва нищо макар че би трябвало, ето го и кода:

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

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine()); // broi chisla
            var sum = 0; // obshta suma
            var summ = 0; //nai golqmoto chislo

            for (var i = 0; i < n; i++)
            {
                var num = int.Parse(Console.ReadLine());
                sum = sum += num;
                if (num >= summ) { summ = num; };
            }


            if (summ == sum)
            {
                Console.WriteLine("Yes Sum = " + summ);
            }
            else { Console.WriteLine("No Diff = " + (Math.Abs(Math.Abs(summ - sum) - (summ))));};
        }
    }
}

 

Тагове:
0
Programming Basics
aggeorgiev avatar aggeorgiev 326 Точки

Първо промени това:

sum = sum += num;

на :

sum += num;

и както е написана проверката сумата и най-голямото немогат никога да са равни - извади първо най - голямото от сумата и тогава сравнявай (последния if)

0
IcakaxD avatar IcakaxD 3 Точки

И аз много много не ти разбирам идеята.

Аз съм намерил най-голямото число след което го вадя от общия брой и  сравнявам.

Надявам се да ти помогне Java code

    import java.util.Scanner;
    public class HalfSumElement{

        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);

            int iter = Integer.parseInt(scan.nextLine());
            int bestNumber = Integer.MIN_VALUE;
            long sum = 0;

            for (int i = 0; i < iter; i++) {

                int numbers = Integer.parseInt(scan.nextLine());
                sum = sum + numbers;
                if (numbers > bestNumber) {
                    bestNumber = numbers;
                }
            }
            if(bestNumber == 1){
                System.out.println("No, diff = " + 1);
        }else if(sum - bestNumber == bestNumber){
                System.out.println("Yes, sum = " + bestNumber);
            }else{
                System.out.println("No diff = " + Math.abs(sum - bestNumber - bestNumber));
            }
        }
    }

0
Zarodath avatar Zarodath 0 Точки

Благодаря че изявихте желание да помогнете :) грешката е била от невнимание

old:   if (summ == sum)

new:  if ((sum - summ)- summ == 0 )

желая ви приятен ден  laugh

0
why_where_what avatar why_where_what 118 Точки

Малък съвет от мен:не си именувай променливите по подобен начин -> sum, summ и производни. Променливата трябва да ти дава информация какво съдържа в себе си. Например ако имаш 10 променливи и всичките са едни и същи с разлика само един символ ще се объркаш жестоко... Успех! :)

0
Miroslav_Kisov avatar Miroslav_Kisov 60 Точки

Ето едно решение надявам се да помогне https://pastebin.com/b8DefLUD

0
kiovchev avatar kiovchev 2 Точки

в else от общата сума трябва да извадиш най - голямото число и от получения резултат да извадиш още веднъж най -голямото число, а в if (sumn == sum )  условието трябва да е if ((sum - sumn) == sumn), в другия if махни знака равно  от условието (num > = sumn) и sum = sum + num

опитай с тези корекции и успех

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