Wczytywanie liczb - odwrotna kolejność na wyjściu

0

http://pl.spoj.com/problems/PP0502B/ Błąd wykonania. Proszę o radę. Mam coś takiego

public static void main(String[] args) {
        Scanner skaner = new Scanner(System.in);
        int liczbaTestow = skaner.nextInt();

        ArrayList<String> tablica = new ArrayList<String>();
        for(int i=0;i<liczbaTestow;i++){
            int liczbaLiczb = skaner.nextInt();
            for(int j=0;j<=liczbaLiczb;j++){
                String a = skaner.nextLine();
                tablica.add(a);           
            }
            for(int k=liczbaLiczb;k!=0;k--){
                   String c = tablica.get(k);
                   System.out.print(c+" ");
            }
            
        }

    }
0

Wypisz sobie wartosci licznikow w petlach ("j" i "k") to sam zrozumiesz co jest zle.

0

Nic mi to nie dało. Dodatkowo nie rozumiem dlaczego w pętli z licznikiem "j", dla "liczbaLiczb" = np. 3 wczytuje tylko 3 liczby zamiast 4. j=0, j=1, j=2, j=3 - powinno wczytywać moim zdaniem.

0
public class main {

	public static void main(String[] args) {
        Scanner skaner = new Scanner(System.in);
        int liczbaTestow = skaner.nextInt();
 
        ArrayList<String> tablica = new ArrayList<String>();
        for(int i=0;i<liczbaTestow;i++){
        	
            int liczbaLiczb = skaner.nextInt();
            
            for(int j=0;j<=liczbaLiczb;j++){
                String a = skaner.nextLine();
                tablica.add(a);           
            }
            
            for(int k=liczbaLiczb;k >= 0;k--){
                   String c = tablica.get(k);
                   System.out.print(c+" ");
            }
           tablica.clear();
        }
 
    }

}
0

To nic nie dało.

3

@jabluszko nic w tym twoim kodzie nie jest poprawnie napisane. Weź ty może zacznij od przeczytania ze zrozumieniem dowolnego kursu programowania? Bo póki co każdy twój post wygląda tak:

noidea.jpg

Przecież ten twój kod nie zadziała nawet dla przykładowego zestawu danych! Dowód:
http://ideone.com/ZsjZ6B

Czemu? Na przykład dlatego że znów czytasz CAŁĄ LINIĘ zamiast PO JEDNEJ LICZBIE. Przecież widzisz w treści że kolejne liczby nie są (!) podawane w nowych liniach! Poza tym oczywiście nigdy nie czyścisz tej swojej tablicy więc w każdym kolejnym teście dojdzie ci więcej liczb...

0

Jestem w trakcie czytania kursu oraz książki. Naukę zacząłem 2 tygodnie temu. Robię co mogę. Nie mam pomysłu to od razu pytam, nawet najgłupsze pytanie (wg odbiorcy) ma sens dla pytającego. Jeżeli aż tak mocno bulwersują cię moje wątki, nie psuj sobie zdrowia.

0

Nie mam pomysłu to od razu pytam

W takim razie nie marnuj czasu na nauke programowania, bo to nie jest dyscyplina dla ciebie. Nie mówie tego ze złośliwości, chcę ci oszczędzić rozczarowań i zmarnowanego czasu. Do wszystkiego trzeba mieć predyspozycje, a tobie tych do programowania zwyczajnie brakuje.

0

Nie musisz mnie łapać za słówka. Czego chcesz dowieść? Na podstawie paru wątków na forum stwierdzasz, że to nie dyscyplina dla mnie, że marnuję czas, że brak mi predyspozycji. Na szybko przychodzi mi na myśl Olbrychski, jemu nikt nie wróżył kariery, na pewno spotkał też na swojej drodze kogoś takiego jak ty. Takich przykładów są miliony. Wyluzuj

0

myślę ze @Shalom ma trochę racji. W informatyce, a szczególnie w programowaniu jedną z ważnieszych zdolności potrzebnych do działania jest samodzielne znajdowanie informacji. Czy to do API czy to do prostych metod/klas. Jeżeli ktoś uczy się z kursu/ksiażki i ma problem z (tak naprawdę) podstawowymi zadaniami to co będzie przy naucę obiektowości, polimorfii, dziedziczenia itd. Gdzie dopiero tam zaczynają się schody.

Z innej strony rozumiem @jabluszko młody szalony i narwany :D Z czasem zrozumiesz o co chodzi @Shalom :P A tym czasem proponuję poczytać te kursy i książki, życzę wytrwałości :D

0
  1. Pobierasz liczbę testów
  2. Pobierasz ilość liczb i tworzysz tablice o takiej samej ilości
  3. Wczytujesz liczby do tablicy
  4. Wypisujesz od tyłu
0

Masz zobacz napisalem ci w c# :

EDIT: Według wskazówek n0name_l zmieniłem ten program i ma się następująco xD

Program.cs

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

namespace WriteNumbers
{
    /*
     * Odwróć kolejność elementów w tablicy.
        Wejście

        Najpierw liczba testów t (t ≤ 100). Następnie dla każdego testu liczba n (n ≤ 100) i n liczb oddzielonych spacjami.
        Wyjście

        Dla każdego testu n liczb w porządku odwrotnym niż na wejściu.
        Przykład

        Wejście:
        2
        7 1 2 3 4 5 6 7
        3 3 2 11

        Wyjście:
        7 6 5 4 3 2 1
        11 2 3

     */ 
    class Program
    {
        static bool TranslateTokensToListOfNumbers(string[] tokens, out List<int> eachTest)
        {
            eachTest = new List<int>();
            for (int i = 0; i < tokens.Count(); i++)
            {
                int number;
                if (int.TryParse(tokens[i], out number))
                {
                    eachTest.Add(number);
                }
                else
                {
                    eachTest = null;
                    return false;
                }
            }
            return true;
        }
        static void Main(string[] args)
        {
            ReverseOrder reverseOrder = new ReverseOrder();
            int tests;
            string consoleInput;

            consoleInput = Console.ReadLine();

            while (!int.TryParse(consoleInput, out tests) || (!reverseOrder.CheckCountOfTests(tests)))
            {
                Console.WriteLine("Podales nieprawidlowe dane lub nie podales liczby w przedziale (" + ReverseOrder.minCountOfTests + "," + ReverseOrder.maxCountOfTests+")");
                consoleInput = Console.ReadLine();
            }

            reverseOrder.CountOfTests = tests;

            for (int i = 0; i < reverseOrder.CountOfTests; i++)
            {
                List<int> eachTest ;
                string[] tokens = Console.ReadLine().Split();
                while (!TranslateTokensToListOfNumbers(tokens, out eachTest) || !reverseOrder.CheckTestNumbers(eachTest))
                {
                    Console.WriteLine("Podales nieprawidlowe dane lub nie podales pojedynczej liczby n w przedziale(" + ReverseOrder.minValueOfNumber + "," + ReverseOrder.maxValueOfNNumber + ")");
                    tokens = Console.ReadLine().Split();
                }
                reverseOrder.Numbers.Add(eachTest);
            }

            reverseOrder.WriteAllNumbers();
            Console.ReadLine();




        }
    }
}

ReverseOrder.cs

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

namespace WriteNumbers
{
    class ReverseOrder
    {

        public const int minCountOfTests = 0;
        public const int maxCountOfTests = 100;
        public const int minValueOfNumber = 0;
        public const int maxValueOfNNumber = 100;


        public ReverseOrder()
        {
            Numbers = new List<List<int>>();
        }
        public List<List<int>> Numbers { get; set; }
        public int CountOfTests { get; set; }




        public bool CheckCountOfTests(int countOfTests)
        {
            if ((countOfTests > minCountOfTests) && (countOfTests<= maxCountOfTests)) return true;
            return false;
        }
        public bool CheckValueOfN(int nNumberValue)
        {
            if ((nNumberValue > minValueOfNumber) && (nNumberValue <= maxValueOfNNumber)) return true;
            return false;
        }

        public bool CheckTestNumbers(List<int> numbers)
        {
            if (numbers == null) return false;
            if (numbers.Count == 0) return false;
            if (numbers.First() != numbers.Count - 1) return false;
            return true;
        }


        public void WriteAllNumbers()
        {
            for (int i = 0; i < CountOfTests; i++)
            {
                for (int j = Numbers[i].Count - 1; j > 0; j--)
                {
                    Console.Write(Numbers[i][j] + " ");
                }
                Console.WriteLine();
            }
        }

    }
}

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