Zadanie o Tapczanach

0

Witam,
Zadanie o tapczanach polega na tym że Pan o mało ważnym imieniu :) przegląda katalog w którym znajduje się N tapczanów o jakiejś cenie i wielkości. naszym zadaniem jest znając te dane powiedzieć mu ile tapczanów może od razu odrzucić oraz które z kolei są to tapczany. Pan będzie odrzucał tylko te tapczanu, które będą zarówno droższe i mniejsze od jakiegoś innego tapczanu z katalogu. Zadanie wydało mi się bardzo proste ... ale coś mi nie działa. Dlatego proszę o naprowadzenie mnie na ten że błąd.
Oto mój kod:
#include <iostream>

using namespace std;

int main()
{
int n;
cin >> n;
int cena[n], wielkosc[n];
bool odp[n];
for(int i = 0; i < n; i++)
{
odp[i] = true;
}
for(int i = 0; i < n; i++)
{
cin >> cena[n] >> wielkosc[n];
}
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
if(cena[i] < cena[j] && wielkosc[i] > wielkosc[j])
{
odp[j] = false;
}
}
}
int a = 0;
for(int i = 0; i < n; i++)
{
if(odp[i] == false) a = a + 1;
}
cout << a << std::endl;
for(int i = 0; i < n; i++)
{
if(odp[i] == false)
cout << i + 1 << " ";
}
}

1
            if(cena[i] < cena[j] && wielkosc[i] > wielkosc[j])    
            {
                odp[j] = false;   
            }

Pomieszałeś indeksy, zamień i z j bo teraz to nie ma sensu.

3
cin >> n
int cena[n], wielkosc[n]; 

w C++ jest to blad. Nie ma VLA w C++

0

Na yt jest omówione

1
  1. Smrodek przy inkrementacji: http://4programmers.net/Forum/1101404
  2. int cena[n] - w C zadziała w C++ już nie - użyj vektor lub array
  3. cin >> cena[n] - mazanie po pamięci - cena ma indeksy od 0 do n-1
  4. if(odp[i] == false) - == true i == false to jakieś dziwolągi nie z tej ziemi, czemu nie napisać po ludzku: if(!odp[i])?
  5. a = a + 1; oczywiście o ++a nie słyszałeś?

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