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

[Homework] Advanced C# - Arrays, Lists, Stacks, Queues - Въпрос за задача 5

Здравейте.

Проблема при мен е, че нямам идея как да изпринтя последният елемент от последната нарастваща редица. Като цяло и начина ми се струва малко абсурден, но по добър не можах да измисля. Това е без момента за намирането на най - дългата редица. Също се чудя как при if - a да не изключвам последния елемент, т.е когато вече numbers[i+1]<numbers[i] все пак да отпечатам и numbers[i+1]. Затова съм и изнесъл след else-а един console.write. Ако някой може да ми предложи цялостно решение на задачата за да го разгледам ще му бъда много благодарен

class Program
    {
        static void Main()
        {
           int currentidex = 0;
            int[] numbers = Console.ReadLine().Trim().Split().Select(int.Parse).ToArray();
            for (int i=currentidex; i<numbers.Length-1;i++)
            {
                if (numbers[i] < numbers[i + 1])
                {
                    Console.Write("{0}", numbers[i]);
                }
                else
                    Console.WriteLine(numbers[i]);
                currentidex = i + 1;
                continue;
                
            }
        }
    }
}

 

Тагове:
0
Fundamentals Module 16/09/2015 16:47:05
Spaskich avatar Spaskich 36 Точки

Колеги, някой от вас може ли да ми посочи къде е грешката ми. Изваждането на конзолата работи добре, но самото записване на sequence-a не се получава в някои случаи:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] numbers = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);

        List<int> tempSequence = new List<int>();
        List<int> longestSequence = new List<int>();

        Console.Write(numbers[0] + " ");
        tempSequence.Add(numbers[0]);
        for (int i = 1; i < numbers.Length; i++)
        {
            if (numbers[i] > numbers[i - 1])
            {
                tempSequence.Add(numbers[i]);
                Console.Write(numbers[i] + " ");
            }
            else
            {
                if (tempSequence.Count > longestSequence.Count)
                {
                    longestSequence = tempSequence;
                }
                Console.WriteLine();
                tempSequence.Clear();
                tempSequence.Add(numbers[i]);
                Console.Write(numbers[i] + " ");
            }

            
        }

        Console.WriteLine("\nLongest: {0}", string.Join(" ", longestSequence));
    }
}

Благодаря ви предварително!

0
Gabriela_banova avatar Gabriela_banova 12 Точки

az izpolzvah nachina ot zadacha 4,koito e mn kratuk i  pochti raboti:))-, na output mi reje poslednoto chislo + indexOutOfRange=-outside the bounds??

prekaleno elementarno mi se struva ,ako e po tozi nachin

int [] input = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            for (int i =0;i < input.Length; i++)
            {
                int currentNumber =input[i];
                int nextNumber = input[i + 1];
                Console.Write(input[i] + " ");
                if (i < input.Length - 1 && currentNumber < nextNumber)
                {
                    Console.Write(" ");
                }
                else
                {
                    Console.WriteLine();
                }

            }

0
Fujitzo avatar Fujitzo 9 Точки

Здравей Spaskich,

Много хубаво и опростено решение, малко не му достига за да работи. Аз бях доста позациклил снощи поне 2ч на тази задача преди най-накрая да дойде евриката:

1во трябва да вмъкнеш още един if в първия, в случай че програмата не стигне до else-a -т.е най-дългата поредица е накрая.

2ро не може да се присвояват списъци с "=". Аз първо зачиствам с .clear() и после с .insertrange(0, temp) - 0лата е позицията от която да започне. Ето го целия код:

int[] numbers = Console.ReadLine().Split().Select(int.Parse).ToArray();

            List<int> temp = new List<int>();
            List<int> longest = new List<int>();

            temp.Add(numbers[0]);
            Console.Write(numbers[0]+" ");

            for (int i = 1; i < numbers.Length; i++)
            {
                if (numbers[i] > numbers[i - 1])
                {
                    temp.Add(numbers[i]);
                    Console.Write("{0} ", numbers[i]);
                    if (i == numbers.Length - 1 && temp.Count > longest.Count)
                    {
                        longest.Clear();
                        longest.InsertRange(0, temp);
                    }
                }
                else
                {
                    if (temp.Count > longest.Count)
                    {
                        longest.Clear();
                        longest.InsertRange(0, temp);
                    }
                    temp.Clear();
                    temp.Add(numbers[i]);
                    Console.WriteLine();
                    Console.Write("{0} ", numbers[i]);
                }
            }
            Console.WriteLine();
            Console.WriteLine("Longest: {0}", string.Join(" ", longest));

1
20/09/2015 18:25:36
Spaskich avatar Spaskich 36 Точки

Благодаря ти, колега! Оправих проблема по твоя начин, но просто пътувам вече 2 дни и нямах време да постна. Мерси и успех! :)

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