• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ARRAYSUB - subarrays

Object Storage Arubacloud
0 głosów
513 wizyt
pytanie zadane 23 marca 2022 w C# przez chrystian Gaduła (4,780 p.)

Mam problem ponieważ spoj w zadaniu Bonus: ARRAYSUB - subarraysZadanie wyświetla mi wrong answer chociaż output jest indetyczny a ideone nie wyświetla żadnego błedu

 kod

using System;

namespace ConsoleApp17
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int n = 9;
            int[] arr = new int[] { 1, 2, 3, 1, 4, 5, 2, 3, 6 };
            int k = 3;
            int val = 0;

            for (int i = 0; i < n - k + 1; i++)
            {
                val = arr[i];
                for (int j = i; j < i + k; j++)
                {
                    if (val < arr[j])
                    {
                        val = arr[j];
                    }
                }
                Console.Write(val + " ");
            }
        }
    }
}

  

1
komentarz 23 marca 2022 przez adrian17 Ekspert (345,160 p.)
No, ale to było tylko przykładowe wejście; gdzie wczytujesz wejście z konsoli?
komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)

czyli rozumiem ze wszytko ma być wczytywane z konsoli i tak samo w tym zadaniu ?

HOTELS - Hotels Along the Croatian Coast

komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)

mam inny problem że dostaje bład

runtime error (NZEC)
using System;

namespace ConsoleApp17
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine()); ;
            int[] arr = new int[n];
            int k;
            if (n > 10 * 10 * 10 * 10 * 10 * 10)
            {
                throw new InvalidOperationException("n to big");
            }

            int val = 0;
            for (int i = 0; i < n; i++)
            {
                arr[i] = int.Parse(Console.ReadLine());
            }
            k = int.Parse(Console.ReadLine());
            if (k > 10 * 10 * 10 * 10 * 10)
            {
                throw new InvalidOperationException("k to big");
            }
            if (1 <= k && k <= n)
            {
                throw new InvalidOperationException("k ");
            }
            for (int i = 0; i < n - k + 1; i++)
            {
                val = arr[i];
                for (int j = i; j < i + k; j++)
                {
                    if (val < arr[j])
                    {
                        val = arr[j];
                    }
                }

                Console.Write(val + " ");
            }
        }
    }
}

 

komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)

czyli rozumiem ze wszytko ma być wczytywane z konsoli i tak samo w tym zadaniu ?

Zawsze tak jest.

arr[i] = int.Parse(Console.ReadLine());

nie patrzyłem na resztę, ale... spójrz jeszcze raz na treść zadania, konkretnie opis wejścia.

A, i w takich zadaniach nie musisz samemu walidować czy wartości na wejściu są w zadanych limitach.

komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)

ideone wywala mi taki bład 

Unhandled Exception:
System.FormatException: Input string was not in a correct format.
  at System.Number.ThrowOverflowOrFormatException (System.Boolean overflow, System.String overflowResourceKey) [0x0001a] in <6649516e5b3542319fb262b421af0adb>:0 
  at System.Number.ParseInt32 (System.ReadOnlySpan`1[T] value, System.Globalization.NumberStyles styles, System.Globalization.NumberFormatInfo info) [0x00016] in <6649516e5b3542319fb262b421af0adb>:0 
  at System.Int32.Parse (System.String s, System.IFormatProvider provider) [0x00017] in <6649516e5b3542319fb262b421af0adb>:0 
  at System.Convert.ToInt32 (System.String value) [0x0000b] in <6649516e5b3542319fb262b421af0adb>:0 
  at ConsoleApp17.Program.Main (System.String[] args) [0x00024] in <66ba6913f28548e9a4165d6c1080ad8d>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.FormatException: Input string was not in a correct format.
  at System.Number.ThrowOverflowOrFormatException (System.Boolean overflow, System.String overflowResourceKey) [0x0001a] in <6649516e5b3542319fb262b421af0adb>:0 
  at System.Number.ParseInt32 (System.ReadOnlySpan`1[T] value, System.Globalization.NumberStyles styles, System.Globalization.NumberFormatInfo info) [0x00016] in <6649516e5b3542319fb262b421af0adb>:0 
  at System.Int32.Parse (System.String s, System.IFormatProvider provider) [0x00017] in <6649516e5b3542319fb262b421af0adb>:0 
  at System.Convert.ToInt32 (System.String value) [0x0000b] in <6649516e5b3542319fb262b421af0adb>:0 
  at ConsoleApp17.Program.Main (System.String[] args) [0x00024] in <66ba6913f28548e9a4165d6c1080ad8d>:0 

 

komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)
w stackoverflow jest napisane by wybrówać tryparse
komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)
Nie, cały czas nie zwracasz uwagi na treść zadania...
komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)
nie wiem czy dobrze rozumiem  ale tłumacząc to

the number n denoting number of elements in the array then after a new line we have the numbers of the array and then k in a new line

n < 10^6
k < 10^5
1 <= k <= n

and each element of the array is between 0 and 10^6

n opisuje liczbe elementów w tablic nastepnie w nowej lini mamy numbery znajdujace  sie w tablicy nastpenie w nowiej linik mamy k

n < 10^6
k < 10^5
1 <= k <= n

lazdy eleementy z tablicy zawiera się w przediałach od 0 do miliona
komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)

No dobrze, a teraz spójrz niżej:

Input:
9
1 2 3 1 4 5 2 3 6
3
            for (int i = 0; i < n; i++)
            {
                arr[i] = int.Parse(Console.ReadLine());
            }

Ta pętla czyta za każdym razem całą linię, a jako wejście z zadania masz kilka liczb na jednej linii.

komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)
komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)

Można tak:

            int[] arr = new int[n];
            string[] parts = Console.ReadLine().Split();
            for (int i = 0; i < n; i++)
            {
                arr[i] = int.Parse(parts [i]);
            }

Można też w jednej linii z LINQ wczytać na raz całą linię jako tablicę:

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

 

komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)

dostaję coś takiego 

runtime error (NZEC)

zmienić napisać methode i zwrócic stringa ??

static string Arr(n,k,arr){

return val
}
private static void Main(string[] args)

console.writeline(Arr())

 

komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)
Nie, nikt nic nie mówił o pisaniu metody. Masz wczytać wejście i odpowiedzieć na wyjściu, SPOJa nie interesuje jaki kod do tego napiszesz.
komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)

rozumiem ale dlaczego wywala mi bład 

ZEC stands for Non Zero Exit Code. For C users, this will be generated if your main method does not have a return 0; statement. Other languages like Java/C++ could generate this error if they throw an exception.

link do stack overlof 

komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)
To może pokaż jaki masz teraz kod.
komentarz 24 marca 2022 przez chrystian Gaduła (4,780 p.)
using System;
using System.Linq;

namespace ConsoleApp17
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int n = Convert.ToInt32((Console.ReadLine()));

            int k;

            int val = 0;

            int[] arr = Console.ReadLine().Split().Select(int.Parse).ToArray();
            k = Convert.ToInt32((Console.ReadLine()));

            for (int i = 0; i < n - k + 1; i++)
            {
                val = arr[i];
                for (int j = i; j < i + k; j++)
                {
                    if (val < arr[j])
                    {
                        val = arr[j];
                    }
                }

                Console.Write(val + " ");
            }
          
        }

    }
}

 

komentarz 24 marca 2022 przez adrian17 Ekspert (345,160 p.)
Hm... nie ukrywam, że na oko nie widzę. Dla kilku przykładowych wejść wydaje się działać poprawnie.

1 odpowiedź

0 głosów
odpowiedź 29 marca 2022 przez chrystian Gaduła (4,780 p.)

Cała odpowiedź znjaduję się w komentarzach tutaj wklejam cały kod błedem było że aplikacja 

np. na końcu ciągu danych znalazła się spacja, to Split załaduje ją do komórki tablicy, przez to  parsowanie się nie powiedzie - zgłoszony zostanie wyjątek.

KOd 

using System;
using System.Linq;

namespace ConsoleApp17
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int n = Convert.ToInt32((Console.ReadLine()));

            int k;

            int val = 0;

            int[] arr = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
 k = Convert.ToInt32((Console.ReadLine()));
            for (int i = 0; i < n - k + 1; i++)
            {
                val = arr[i];
                for (int j = i; j < i + k; j++)
                {
                    if (val < arr[j])
                    {
                        val = arr[j];
                    }
                }

                Console.Write(val + " ");
            }
        }
    }
}

 

Podobne pytania

+2 głosów
2 odpowiedzi 491 wizyt
pytanie zadane 4 listopada 2022 w C# przez JoannS Początkujący (250 p.)
0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 8 marca 2022 w C# przez chrystian Gaduła (4,780 p.)
0 głosów
1 odpowiedź 233 wizyt
pytanie zadane 28 kwietnia 2020 w C# przez kubekszklany Gaduła (3,190 p.)

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...