Macro Funktioniert
-
Hallo, Wob, es funktioniert.
Sag mir aber mal, was das macro beim summarischen Endausdruck bei 0 gezählt hat.
#include <string> #include <fstream> #include <iostream> #include <cmath> #include <stdio.h> #include <vector> #include <list> using namespace std; int main(int argc, const char * argv[]) { std::vector<int> NPZcontainer; std::vector<int> PZcontainer; std::vector<int> Laengen(30,0); int pzz=1; //Primzahlzähler int kettenzeler=0; int ketnz=1; // Kettennummerzähler int unpzz=1; // unger. Nichtprimzahlzähler int letztwert=1; // den braucht er um zu prüfen, ob eine Kette vorliegt. int x, i; int nrl=0; for (x = 3; x <= 30000; x=x+2) { for (i = 2; i < x; i++) { // std::cout<<i<< " =i "<<x<<" =x\n"; if (x%i == 0) break; } if (i==x) //Hier werden die PZ hergestellt { // std::cout<<i<<" = "<<pzz<<". Pz.\n"; pzz++; PZcontainer.push_back(i); letztwert = 1; } if (x/i>1) //Hier werden die NPZ hergestellt { //std::cout<<x<<" = "<<unpzz<<". NPZ \n"; NPZcontainer.push_back(x); unpzz++; letztwert = 0; } if(letztwert == 1) { for(auto it = NPZcontainer.begin(); it != NPZcontainer.end();it++) // Ausdruck { // cout<<""<< *it<<" "; // Hier spuckt er die zahlenkette aus. kettenzeler++; } int b = kettenzeler; ++Laengen[b]; if (kettenzeler>0) // Hier stellt er den kettenzähler auf 0, wenn eine PZ kommt. { cout<<NPZcontainer[0]<<" - "<<Laengen[b]<<". "<<kettenzeler<<"-er Kette\n"; cout<<"KetNr:"<<ketnz<<" "; ketnz++; } NPZcontainer.clear(); kettenzeler=0; //cout<<"\n"; } } for(auto it = Laengen.begin(); it != Laengen.end();it++) { std::cout<<nrl<<". "<< *it<<" "<<nrl<<"-er Ketten\n ";// Hier spuckt er aus ++nrl; } return 0; }