Czemu program się wysypuje przy wprowadzaniu wielomianu stopnia wiekszego od 5?
Wybaczcie za mieszanie polskiego z angielskim. Dopiero się uczę więc chętnie przyjmę uwagi i wskazówki, ale prosiłbym bez nerwów ;)

#include <iostream>
#include <vector>

using namespace std;

int pow(int pdst, int wyk){
 int potega=1;
 for(int i=0; i<wyk; i++){
   potega*=pdst;
 }
 return potega;
}  

class Wielomian{
public:
  vector<int> wspol;
  int stopien;

  Wielomian(){
    wspol.push_back(0);
    stopien=0;
    
  }
  
  ~Wielomian(){
    wspol.clear();
    stopien=0;
  }
  
  void ustaw(int n, int value){
    if(n>stopien){
      for(int i=0; i<n-stopien-1; i++) wspol.push_back(0);
      wspol.push_back(value);
      stopien = n;
    }
    else wspol[n]=value;
  }
  
  friend istream &operator >>(istream &s, Wielomian &w){
    cout << "Podaj stopien wielomianu:"; s >> w.stopien;
    int tmp;
    for(int i=0; i<=w.stopien; i++){
      s >> tmp;
      w.ustaw(i, tmp);
    }
    return s;
  }
  
  friend ostream &operator <<(ostream &s, Wielomian &w){
    for(int i=0; i<w.stopien; i++){
      s << w.wspol[i] <<"x["<<i<<"]";(w.wspol[i+1]<0)?s<<"":s<<"+";
    }
    s<<w.wspol[w.stopien]<<"x[" << w.stopien << "]";
    return s;
  }
  
  int oblicz(int wartosc){
    int wynik=0;
    for(int i=0; i<=stopien; i++){
      wynik+=wspol[i]*pow(wartosc, i);
    }
    return wynik;
  }
  
};

int main(){
  Wielomian w;
  cin >> w;
  cout << w << endl << w.oblicz(0);
return 0;
}

EDIT:
W konstruktorze dodałem wspol.resize(10); a w funkcji ustaw if(n>=wspol.size()) wspol.resize(n+10); i działa nawet dla wielomianow setnego stopnia. Ale nadal program pozostawiam krytyce.