Inicjowanie zmiennej i przekazywanie tablicy do funkcji
Ostatnio zmodyfikowano 2018-03-19 22:07
Moz4rt Temat założony przez niniejszego użytkownika |
Inicjowanie zmiennej i przekazywanie tablicy do funkcji » 2018-03-19 21:24:39 Rozwiązuję zadanie: https://main2.edu.pl/c/konkurs-podstaw-algorytmiki/p/wes/ Kod: #include <iostream>
using namespace std;
int jumping( int klatka, int skok, int i, int x, int k[] ) { if( k[ i ] == true ) return x; k[ i ] = true; x++; i += skok; if( i >= klatka ) i = i - klatka; jumping( klatka, skok, i, x, k ); } int main() { int z; cin >> z; int n[ z ], d[ z ]; for( int i = 0; i < z; i++ ) cin >> n[ i ] >> d[ i ]; for( int j = 0; j < z; j++ ) { int k[ n[ j ] ] = { }; cout << jumping( n[ j ], d[ j ], 0, 0, k ) << endl; } return 0; } Podczas zgłaszania programu w celu sprawdzenia możliwych błędów wyświetla mi się "a.cpp: In function 'int main()': a.cpp:31:24: error: variable-sized object 'k' may not be initialized" 1. Podejrzewam, że błąd tkwi w wstawieniu tablicy w indeks tablicy (k[n[j]]), co może powodować problem w próbie przekazania tej tablicy (k) do funkcji. Dlatego chciałbym w jak najoptymalniejszy sposób rozwiązać problem, bez nowych zmiennych o wartości kolejnych tablic n . 2. Jeżeli warto coś zmienić w kodzie to proszę o sugestie. |
|
pekfos |
» 2018-03-19 21:37:15 error: variable-sized object 'k' may not be initialized" |
I w czym problem? Treść błędu wyraża się dość jasno - nie możesz takiej tablicy inicjalizować. Co więcej, nie możesz tak tworzyć tablicy, jest to błędny zapis w C++. Do tego, twoja funkcja jumping nic nie zwraca w większości przypadków. |
|
Moz4rt Temat założony przez niniejszego użytkownika |
» 2018-03-19 21:49:42 Po prostu chciałem wiedzieć, czy jest jakiś sposób na przekazywanie do funkcji tablicy z tablicą w indeksie. Problem pojawił się ponieważ w C::B program "działał". Oczywiście domyślam się, że kompilator nie wyrzucił błędu i przyjął tablicę dla indeksu n[0]. |
|
pekfos |
» 2018-03-19 21:59:34 Jak napisałem, problem jest w tworzeniu tablic. int n[ z ], d[ z ]; int k[ n[ j ] ] = { }; Te zapisy są niepoprawne w C++. Tablice jednowymiarowe, czerwona ramka. |
|
Moz4rt Temat założony przez niniejszego użytkownika |
» 2018-03-19 22:07:35 Oto mi chodziło wielkie dzięki. |
|
« 1 » |