"Olanie" części podanych na wejściu liczb - c++

Odpowiedz Nowy wątek
2011-08-02 14:45
0

Kilkakrotnie zdarzyło mi się mieć problem z pewną sytuacją. Z racji, że ciężko jest ją opisać postaram się przedstawić ją w najprostszej możliwie postaci jako zadanie.

Otóż mamy k testów. Każdy test składa się z dwóch linii. W pierwszej mamy dwie liczby a oraz b. W drugiej mamy podane a liczb. Na wyjściu mamy wypisać b'tą w kolejności liczbę.

Wejście :
2
3 1
1 2 3
4 3
1 2 5 4

Wyjście:
1
5

I teraz pojawią się mój problem. Otóż pomijając fakt, że zadanie jest bardzo proste, to jedyne co potrafię, to wczytywać kolejno liczby, aż trafię na b'tą, zapamiętać ją i wczytywać do końca linii, a następnie wypisać zapamiętaną liczbę. Jednak przynajmniej w moim rozumowaniu jest to wolne. Czy istnieje jakiś szybki sposób wczytania tylko b'tej liczby na wejściu, a następnie "olania" reszty liczb i przejściu do następnego testu?

Pozostało 580 znaków

2011-08-02 15:43
0

scanf("%d"); przed modyfikatorem powoduje zignorowanie elementu. W przypadku tego typu programów nie ma się co przejmować tym że będziesz musiał wczytywać do końca.
ten program napisałbym coś w ten deseń (bez kompilowania):

#include <stdio.h>
 
int main()
{
  int d;
  scanf("%d",&d);
  while (d--)
    {
      int a,b;
      scanf("%d%d",&a,&b);
      for (int i=1; i<=a; ++i)
        {
          int c;
          scanf("%d",&c);
          if (i==b)
            printf("%d\n",c);
        }
    }
}

░█░█░█░█░█░█░█░█░█░█░█░
edytowany 2x, ostatnio: krwq, 2011-08-02 15:49

Pozostało 580 znaków

2011-08-02 15:46
Kumashiro
0
Lisik napisał(a)

Jednak przynajmniej w moim rozumowaniu jest to wolne.

Wolne? Wczytujesz te liczby poprzez analizę obrazu z kamery rejestrującej monitor?

Lisik napisał(a)

Czy istnieje jakiś szybki sposób wczytania tylko b'tej liczby na wejściu,

Jakieś gotowe mechanizmy i tak by musiały wczytywać poprzednie liczby, więc na jedno wychodzi.

Lisik napisał(a)

a następnie "olania" reszty liczb i przejściu do następnego testu?

Tak, "fgets" + "continue", "break", "return"... Zależy w jaki sposób wczytujesz. Musisz opróżniać wejście poprzez odczyt. Nie możesz sobie skakać.

Pokakod, to będzie można coś zaproponować.

Pozostało 580 znaków

2011-08-02 17:27
0

Nieważne. Wszystkim odpowiadającym dziękuje. Problem rozwiązany.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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