Exe-Datei
-
tundrablume schrieb:
Wie kann ich denn ohne system Pause sonst das Ergebnis betrachtet?

Für gewöhnlich startet man Konsolenprogramme wo ... genau, in der KONSOLE!
Also cCMD auf, in das Verzeichnis wechseln und name der Exe eingeben ... gar nicht mal so schwer.
-
Ethon schrieb:
tundrablume schrieb:
Wie kann ich denn ohne system Pause sonst das Ergebnis betrachtet?

Für gewöhnlich startet man Konsolenprogramme wo ... genau, in der KONSOLE!
Also cCMD auf, in das Verzeichnis wechseln und name der Exe eingeben ... gar nicht mal so schwer.Oder man startet sein Programm einfach mit STRG+F5. Noch viel weniger schwer.

-
Ein voellig korrektes Programm. Es wurd auf
int main+return 0geachtet. Wozu der restliche Quelltext gut ist, weiss ich nicht.int main(){ system("PAUSE"); return 0; }
-
du solltest vielleicht in deiner mainfunktion die andere Funktion aufrufen

das einzige was dein programm gerade ausführt ist die mainklassse
also er macht eine pause und beendet das programm - fertig
-
greece57 schrieb:
mainklassse
main ist eine Funktion.
-
_matze schrieb:
Ethon schrieb:
tundrablume schrieb:
Wie kann ich denn ohne system Pause sonst das Ergebnis betrachtet?

Für gewöhnlich startet man Konsolenprogramme wo ... genau, in der KONSOLE!
Also cCMD auf, in das Verzeichnis wechseln und name der Exe eingeben ... gar nicht mal so schwer.Oder man startet sein Programm einfach mit STRG+F5. Noch viel weniger schwer.

Und wenn man mehr als ein Programm auf dem Rechner hat ... welches wird dann bei STRG+F5 gestartet?
-
Belli schrieb:
Und wenn man mehr als ein Programm auf dem Rechner hat ... welches wird dann bei STRG+F5 gestartet?

-
Mit STRG + F5 funktionierts irgendwie nicht so. da wird die Zeile nur rot markiert. Was ist dieses cCMD? Ich finde es nicht

-
Das mit STRG+F5 war entweder nicht ernst gemeint oder er meinte die Tastenkombination im Compiler (in VS ist es F5) (führt das Projekt aus).
Nicht cCMD sondern cmd (führe den Befehl aus und es wird die Konsole geöffnet).
-
Ich habe jetzt ganz am Ende eingegeben
int main(){ system("Algorithmen"); // Name der Anwendungsdatei system("PAUSE"); return 0; }Es erscheint dann nur ein schwarzes Fenster, was ^^^^C^^C^^... ausspuckt, wenn ich es schließen will. Es lässt sich nicht mal mit dem Taskmanager schließen

Liegts doch am Falschprogrammieren??
-
tundrablume schrieb:
Ich habe jetzt ganz am Ende eingegeben
int main(){ system("Algorithmen"); // Name der Anwendungsdatei system("PAUSE"); return 0; }Es erscheint dann nur ein schwarzes Fenster, was ^^^^C^^C^^... ausspuckt, wenn ich es schließen will. Es lässt sich nicht mal mit dem Taskmanager schließen

Liegts doch am Falschprogrammieren??

you made my day
Du musst in der main()-Funktion schon irgendetwas mit deinen Funktionen machen, sonst haben die ja gar keinen Sinn.
Was du gerade gemacht hast war (denke ich), dein Programm rekursiv im eigenen Programm aufzurufen
-
Ich bin gerade derbe am Verzweifeln wegen dem Starten

Würde einer für mich das Programm in seinem C++ durchlaufen lassen und mir sagen, ob ich da was falsch programmiert habe oder, ob ich einfach zu doof zum Starten bin?
Pleeeease#include<iostream> #include<string> #include<vector> #include<algorithm> #include<cmath> using namespace std; // Dimension n festlegen = Anzahl der Vektoren const int n =3; // Dimension der Vektoren b Element R^d festlegen const int d = 3; // Matrix deklarieren, Vektoren waagrecht int sa_matrix[d][n]={{-8,2,8},{7,8,-2}, {3,6,-1}}; double coeff_matrix[d][n]; // Zufallskonstante u mit 1<= u <n definieren, wird in sampling_algorithmus und short_algorithmus gebraucht. const int u = 1+rand()%(n-1); // berechnet zu einer gegebenen Matrix aus Integer-Werten eine orthogonalisierte Matrix im Gram-Schmidt-Verfahren // für n = 3, d = 3 hat die Matrix folgende Form: // erste Zeile: 1 0 0 // zweite Zeile: mü_2,1 1 0 // dritte Zeile: mü_3,1 mü_3,2 1 void gram_schmidt(int sa_matrix[d][n]){ // Matrix für das Ergebnis initialisieren for(int i= 0; i<d; i++) for(int j=0; j<n; j++) coeff_matrix[i][j] = 0; //Vektor zu Berechnnug der Koeffizienten vector<double>stern (n); for (int i = 0; i<d; i++) stern[i]=0; // Koeffizient double coeff = 1.0; //Zeilenweise vorgehen for(int i = 0; i<d; i++){ // stern aktualisieren, muss vollständig sein, bevor weiter vorgegangen wird. double fak = coeff_matrix[i][0]; for (int j=0; j<n; j++) stern[j] = sa_matrix[i][j] - fak*stern[j]; for (int j=0; j<n; j++){ //spaltenweise vorgehen, die Spalten links sind schon vollständig, bei der aktuellen Zeile wird eine 1 gefolgt von 0 aufgeschrieben //aktuelle Zeile eintragen // i==j nix tun, ist eingetragen if(i>j){} //1 eintragen und allde darunter leigenden Spalten mit mü-Koeffizienten füllen else if(i ==j) { coeff_matrix[i][j] = 1; // Koeffizienten berechnen und in die aktuelle Spalte eintragen double zaehler = 0.0; double nenner = 0.0; int akt = i+1; while( akt < d){ for (int k = 0; k<n; k++){ zaehler = zaehler + stern[k]*sa_matrix[akt][k]; nenner = nenner + stern[k]* stern[k]; }// Ende for int k =0 coeff = zaehler/nenner; coeff_matrix[akt][j] = coeff; //zaehler und nenner zurücksetzen für die nächste Rechnung zaehler = 0.0; nenner = 0.0; akt++; }// Ende while }// Ende else if else coeff_matrix[i][j]=0; }// Ende for int j = 0 }//Ende for int i = 0 }//Ende gram_schmidt // Der Sampling-Algorithmus nach Schnorr, sämtliche Bezeichnungen sind dem Algorithmus entnommen. vector<double> sampling_algorithmus(int sa_matrix[d][ n]){ // Punkt 1. des Sampling Algorithm (SA) // Vektor b = b_1 festlegen, vector<double>b(d); for(int i = 0; i<d; i++) b[i] = sa_matrix[0][i] ; //Koeffizientenmatrix erstellen gram_schmidt(sa_matrix); // die Koeffizienten mue_0,i in einem Vektor speichern vector<double>mue_j_vector(d); for(int i = 0; i<n; i++) mue_j_vector[i] = coeff_matrix[i][0]; // Punkt 2 des Algorithmus; es wurde b_1 als Basis verwendet, daher ist die for-Schleife aufsteigend. //Soll unbedingt von b_n ausgegangen werden, muss sa_matrix umkopiert werden, so dass die Vektoren b_1..b_n in umgekehrter Reihenfolge stehen. //Da es sich um Arrays handelt, steht b_1 an Position 0 und wird nicht betrachtet. // Vektor mit mue_0,i festlegen for(int i=1; i<n; i++){ // mü_i bestimmen,für i < m - u liegt mue_i im Intervall -0,5 < mue_i<0,5 double mue_i = (1+rand()%(n-1))* 0.1; // mü wird bestimmt, Start mit mue = 1 double mue = 1.0; // erster Fall: Für die in der Matrix näher als u an b stehenden Vektoren gilt: |mue_i - mue| d<=[-1,01 ] // der Datenverlust beim Casting double- int ist hier gewünscht; nur der ganzzahlige ASnteil von mue_i soll weiter bearbeitet werden. int int_mue = mue_i; if( i <= u-n) mue = int_mue; else mue = int_mue +(mue_i - int_mue)*0.5; // jetzt ist mue bestimmt. // b := b - mue* b_i berechnen for(int j = 0; j<d; j++) b[j] = b[j] - mue * sa_matrix[i][j]; //Vektor der mue_j = mue_j -mue * mue_i,j berechnen for(int j = 0; j<n; j++) mue_j_vector[j] = mue_j_vector[j] - mue * mue_j_vector[j]; }//Ende for int i = 1; Punkt2 return b; }// Ende sampling_algorithmus // Diese Funktion berechnet 2^u int calculate_max_u(int u){ int calculator = 2; for (int i = 1; i < u; i++) calculator = calculator * 2; return calculator; } // SHORT-Algorithmus nach Schnorr, sämtliche Bezeichnungen sind dem Algorithmus entnommen. vector<double>short_algorithmus(int sa_matrix[d][ n]){ //2^u berechnen, pow(int, int) ist nicht definiert. int max_u = calculate_max_u(u); for(int i = 1; i< max_u; i++){ vector<double>b(d); b = sampling_algorithmus( sa_matrix); // Länge von b² berechnen double dist_b = 0.0; for (int i = 0; i<d; i++) dist_b = dist_b + b[i]* b[i]; // Länge von b_1 berechnen double dist_b_1 = 0.0; for (int i = 0; i<d; i++) dist_b_1 = dist_b_1 + sa_matrix[1][i]*sa_matrix[1][i]; if(dist_b < dist_b_1 * 0.99) return b; //erste Zeile aus sa_matrix löschen und mit der verkleinerten Matrix die nächste Schleife durchlaufen for (int i = 1; i< d; i++) for (int j = 0; j<n; j++) sa_matrix[i][j] = sa_matrix[i-1][j]; }// Ende for vector<double> not_found(d); for(int i =0; i<d; i++) not_found[i] = 0; return not_found; }//Ende short_algorithmus int main(){ //wenn ich hier etwas mit system("irgendwas") einfüge, hängt das Programm bei mir return 0; }
-
in main() musst du irgendwie dein Verfahren starten (eine der Funktionen aufrufen, die das Ganze in Gang setzt). Am Ende der main()-Funktion kommt system("pause") (vor
returnnatürlich).
-
Wieso versuchst du es nicht mal ganz einfach mit einem Hallo Welt - Programm:
#include <iostream> #include <cstdlib> using namespace std; int main() { cout << "Hallo Welt!"; system("pause"); }
-
Ich kann mir nicht vorstellen das du die ganzen Funktionen geschrieben hast aber keine Funktionen aufrufen kannst, geschweige denn weist das main() dein einstiegspunkt ist....
copy & paste ist nicht immer die beste Lösung!
-
Danke Rewind und den ersten paar Helfern und einige dazwischen. Eure Tipps und Hilfen sind die Besten


Ich knobel noch ein paar Stunden rum. Wenns immer noch nicht klappt, kommt ich wieder angekrochen ^^