krolik5a Temat założony przez niniejszego użytkownika |
Program wyliczający ilość samochodów, które się miną » 2016-08-12 09:17:24 Cześć, mam pytanie, czy mógłby mi ktoś napisać co w tym programie jest nie tak, za każdym razem program zamiast wypisać jakąś liczbę ( z przykładu 5) wypisuje 0. Bardzo proszę o pomoc.: #include <iostream> using namespace std;
int main() { int n; cin >> n; int t[ n ]; cin >> t[ n ]; int wynik = 0; for( int a = 0; a < n - 1; a++ ) { for( int b = 1; b < n; b++ ) { if(( t[ a ] == 0 ) &&( t[ b ] == 1 ) ) wynik++; } } cout << wynik << endl; }
Treść zadania jest taka: Przemek obserwuje ruch samochodów na drodze. Droga jest dwukierunkowa i łączy wschodnią część miasta z zachodnią. Ponieważ Przemek stoi na wzgórzu, to widzi dokładane położenie wszystkich samochodów. Zastanawia się teraz, ile par samochodów minie się między sobą. Dwa samochody miną się, jeśli jadą w przeciwnych kierunkach, gdy pierwszy z nich (patrząc od lewej) jedzie na wschód, a drugi na zachód. Zakładamy, że samochody nie zawracają, nie wyprzedzają oraz wszystkie jadą prosto przed siebie. Wejście W pierwszym wierszu wejścia znajduje się jedna liczba całkowita (), oznaczająca liczbę wszystkich samochodów, które widzi Przemek. W drugim wierszu wejścia znajduje się liczb całkowitych (), oznaczających kolejne samochody, podawane w kolejności od najbardziej położonych na zachód (samochód jest położony bardziej na zachód niż samochód ). Liczba , oznacza kierunek jazdy -tego samochodu: - samochód jedzie na wschód, - samochód jedzie na zachód. W testach wartych co najmniej punktów zachodzi dodatkowy warunek . Wyjście Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę całkowitą, równą liczbie par samochodów, które będą się mijały. Przykład Dla danych wejściowych: 5 0 1 0 1 1 poprawną odpowiedzią jest: 5 |
|
carlosmay |
» 2016-08-12 10:49:11 int n; cin >> n; int t[ n ]; cin >> t[ n ];
|
Użyj std::vector jeśli tablica nią ma z góry określonego rozmiaru. |
|
mateczek |
» 2016-08-13 04:03:58 @ carlosmay Coś mi się wydaje, że pami tą komendą chciała wczytać całą tablice (wszystkie elementy ze strumienia):P @krolik5a Do wczytania elementów musisz użyć pętli!!! #include <iostream> #include <vector>
using namespace std; int main() { int n; cin >> n; vector < int > tablicaAut( n ); for( int & kierunek: tablicaAut ) { cin >> kierunek; } int licznikMijania = 0; for( int i = 0; i < tablicaAut.size() - 1; i++ ) { if( tablicaAut[ i ] == 1 ) continue; for( int j = i + 1; j < tablicaAut.size(); j++ ) { if( tablicaAut[ j ] == 1 ) licznikMijania++; } } cout << licznikMijania << endl; }
|
|
krolik5a Temat założony przez niniejszego użytkownika |
» 2016-09-14 11:57:19 Dziękuję bardzo za pomoc. A jakbym zrobiła to takim sposobem?: #include <iostream> using namespace std;
int main() { int n, kierunek; cin >> n; int wynik = 0, wschod = 0; for( int k = 1; k <= n; k++ ) { cin >> kierunek; if( kierunek == 0 ) wschod = wschod + 1; else wynik = wynik + wschod; } cout << wynik << endl; }
Wynik wychodzi mi poprawny, ale na sprawdzarce nie przechodzi. Co jest w nim źle? |
|
mateczek |
» 2016-09-16 00:37:39 a kod wyżej ci przechodzi?? dla mnie wygląda w porządku zmień licznik mijań na long long long long wynik = 0, wschod = 0; |
|
krolik5a Temat założony przez niniejszego użytkownika |
» 2016-09-16 01:55:06 No właśnie, ten który wysłałeś nie przechodzi. Jak zmieniłam na long long to jest już dobrze. Mam tylko prośbę, mógłbyś mi napisać dlaczego tam ma być long long a nie int, bo nie wiem? :) |
|
michal11 |
» 2016-09-16 10:07:11 Pojęcie zmiennej i podstawowe typy danychJeżeli może być maksymalnie 10^6 samochodów to w najgorszym przypadku liczba par będzie znacznie większa niż maksymalny zakres inta. Przetestuj taki program dla miennej wynik typu int i long long: #include <iostream> using namespace std;
int main() { int n = 1000000, kierunek; long long wynik = 0, wschod = 0; for( int k = 1; k <= n; k++ ) { if( k < n / 2 ) { kierunek = 0; } else { kierunek = 1; } if( kierunek == 0 ) wschod = wschod + 1; else wynik = wynik + wschod; } cout << wynik << endl; }
|
|
mateczek |
» 2016-09-16 11:45:43 Az sobie założyłem konto by zobaczyć co się dzieje. :P Program z góry nie przechodził bo serwis nie wspiera c++11 i chyba kontenerów też nie za bardzo(błąd kompilacji) nie wnikałem głęboko Przy próbie kompilacji twojej drugiej wersji wyskoczyło, że oczekiwany wynik 232143253465456 a otrzymany -1423523 Liczba ujemna wskazuje na wyjście poza zakres liczby int. trzeba zwiększyć typ lub spróbować z unsigned int |
|
« 1 » 2 |