Kopiec c++

0

Witam,

Mam do napisania program o treści:

Zaimplementuj kopiec maksymalizujący i następujące operacje na nim:

  • nr v
    dodanie do kopca o numerze nr liczby v
  • nr
    usunięcie z kopca o numerze nr maksimum i wypisanie go na ekran
    p nr
    wypisanie wszystkich elementów z kopca w kolejności, w jakiej znajdują się w tablicy
    r nr n v1 ...vn
    usunięcie z kopca o numerze nr wszystkich elementów i wpisanie do niego n nowych, o wartościach v1 ...vn
    j a b
    złączenie kopców a i b; w wyniku kopiec a powinien zawierać wszystkie elementy z obu kopców, kopiec b powinien być pusty
    q
    zakończenie programu
    Numerami kopców będą liczby 0, 1, ..., 9. Rozmiar żadnego kopca nie przekroczy 8192 elementów.
    Wejście

Na wejściu pojawi się ciąg poleceń w przedstawionym wyżej formacie. Ostatnim poleceniem będzie polecenie q.
Wyjście

Na wyjściu należy wypisać wynik poleceń - i p.

na razie mam coś takiego:

 
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
 

int main(int argc, char *argv[])
{


 const int N = 7;
  int i,j,k,x;
int d[N+1]={7,1,9,6 ,5, 8, 10};



  for(i = 2;i <= N; i++)
  {
    j = i; k = j / 2;
    x = d[i];
    while((k > 0) && (d[k] < x))
    {
      d[j] = d[k];
      j = k; k = j / 2;
    }
    d[j] = x;
  }



  x = (N + 1) / 2; k = 2;
  for(i = 1; i <= N; i++)
  {
    for(j = 1; j <= x - 1; j++) cout << " ";
    cout << d[i];
    for(j = 1; j <= x; j++) cout << " ";
    if(i + 1 == k)
    {
      k += k; x /= 2; cout << endl;
    }
  }



  cout << endl << endl;

I coś to źle wypisuje, mógłby mi ktoś powiedzieć dlaczego?

0

const int N = 7;
int i,j,k,x;
int d[N+1]={7,1,9,6 ,5, 8, 10};

Setka zmiennych jednoliterowych to może coś co się łatwo i szybko pisze, ale czyta zdecydowanie gorzej. W chwili obecnej czytanie tego to wyzwanie.

Po drugie, co to znaczy coś to źle wypisuje?

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