Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tablice wielowymiarowe

Ostatnio zmodyfikowano 2018-06-04 20:58
Autor Wiadomość
milmega
Temat założony przez niniejszego użytkownika
Tablice wielowymiarowe
» 2017-04-29 13:31:46
Uzupełnij funkcję void check_speed ( int ticket_list[20][2] ) w taki sposób, aby sprawdzała prędkość pojazdu w polu widzenia urządzenia. Jeżeli prędkość przekracza dopuszczalną w tym miejscu wartość 60 km/h, funkcja powinna zapisywać do tabeli  int ticket_list[20][2] numer rejestracyjny pojazdu oraz zmierzoną wartość prędkości. W pierwszym wierszu tablicy umieść numery rejestracyjne, w drugim wartości przekroczonych prędkości.
API:
int get_license_number(void); - zwraca liczbowy numer rejestracyjny.
int get_current_speed(void);  - zwraca predkość w km/h.

Wydaje mi się, że funkcja jest poprawna, aczkolwiek pojawia mi się błąd w testach. O co może chodzić?

C/C++
#include <ALPR_api.h>
void check_speed( int ticket_list[ 20 ][ 2 ] )
{
    int speed = get_current_speed();
    int number = get_license_number();
    int licznik = 0;
   
   
    if( speed > 60 )
    {
        ticket_list[ licznik ][ 0 ] = number;
        ticket_list[ licznik ][ 1 ] = speed;
        licznik++;
    }
}
P-160593
karambaHZP
» 2017-04-29 14:54:25
pojawia mi się błąd w testach. O co może chodzić?
Jaki błąd i co ma chodzić?

edit:
przykład:
C/C++
void f( int arr[][ 2 ], int size, int & idx ) // size = 20
{
    if( idx < size ) {
        // zrób coś z danymi
        ++idx;
    }
}
Ogólnie za każdym razem gdy zaglądasz do funkcji nadpisujesz te same elementy.
C/C++
int licznik = 0;
// ...
++licznik;
// wychodzę z funkcji i zmiany na licznik są tracone
C/C++
int ticket_list[ 20 ][ 2 ] // wartość z pierwszego nawiasu należy przekazać osobno
// nie jest brana pod uwagę w takim przekazaniu
lub skorzystaj z tablicy
std::array < std::array < int, 2 >, 20 >
 i nie będzie potrzeby
przekazywać rozmiarów. Będą dostępne metodą
size()
.
P-160595
milmega
Temat założony przez niniejszego użytkownika
» 2017-04-29 15:09:41
Błędu jako błędu to nie ma, ale robię to na platformie zadaniowej i nie zalicza mi testów.

FAILED
check_speed( ticket_list[20][2] )
{
    return {
            { 7436,8991,5458,5236,5524,2750,5027,1569,9411,954,2601,8685,4875,2276,3211,9965,2241,2971,8165,2130 },
            { 99,77,108,77,87,93,101,65,70,70,100,94,87,121,104,82,70,114,84,115 }
           };
}
P-160596
karambaHZP
» 2017-04-29 15:18:35
No to jeszcze raz:
C/C++
void check_speed( int ticket_list[ 20 ][ 2 ] ) // nie ma przekazanego rozmiaru pierwszego nawiasu
{
    int speed = get_current_speed(); // ok
    int number = get_license_number(); // ok
    int licznik = 0; // pierwszy indeks jest zerowany za każdym razem
    // jeśli licznik jest dostępny globalnie (a powinien być aby można go aktualizować, usuń ten wiersz)
   
   
    if( speed > 60 )
    {
        ticket_list[ licznik ][ 0 ] = number; // zapisuj się tylko do pierwszego wiersza
        ticket_list[ licznik ][ 1 ] = speed;
        licznik++; // aktualizacja licznika
    }
} // tutaj zmian licznika już nie ma i przy ponownym uruchomieniu funkcji zapisywany jest znów wiersz 0
P-160597
kaktus12121
» 2017-05-07 22:41:45
Witam. Mam to samo zadanie. Czy rozwiązałeś już je i czy mógłbyś się podzielić?
P-160827
milmega
Temat założony przez niniejszego użytkownika
» 2017-05-09 17:44:13
Musisz najpierw stworzyc 2 inty. Później pętla while pobierasz dla każdego miejsca w tablicy po kolei predkosc i numery. No a pozniej cały czas w tej petli sprawdzasz czy pobrana predkosc jest wieksza niz 60 i jesli jest to zapisujesz w tablicy. Nie umiem tłumaczyc wiec jakby co to pisz to ci podeśle fragmenty kodu.
P-160877
marcin_kondo
Mam problem z interpretacją odpowiedzi
» 2018-06-04 20:39:41
Mam problem z moją interpretacją odpowiedzi. Mój program nie działa jak powinien.
#include <ALPR_api.h>
void check_speed ( int ticket_list[20][2] )
{
    int licznik=0;
   
    int speed=get_current_speed();
    int number=get_license_number();

    //for(;;)
   

    while(licznik<20)
    {
       
         ticket_list[licznik][0] = number;
         ticket_list[licznik][1] = speed;
         licznik++;
        
         if(speed>60)
         {
            for(licznik=0; licznik<20; licznik++)
            {
            ticket_list[licznik][0] = number;
            ticket_list[licznik][1] = speed;
            }
         }
    }
   
}
P-171373
pekfos
» 2018-06-04 20:58:04
Debuguj. Jak wymyślisz jakieś konkretne pytanie, zadaj je we własnym temacie.
P-171377
« 1 »
  Strona 1 z 1