Exe-Datei



  • Dh dass du wohl nie etwas ausgibst 😉
    Dh das Programm arbeitet vielleicht vor sich hin aber am schluss schreibst du nix ins Fenster 😉
    Deswegen kann in dem Fenster auch nix stehen
    Was soll das Programm den tun und wie hast du es realisiert?



  • Zeig Code, dann kriegst du auch ziemlich schnell Hilfe. So kann man nur raten. 🙂



  • Du hast am ende wahrscheinlich system("PAUSE");

    Aber ohne code kann man dir wircklich nicht helfen



  • 7xCore schrieb:

    Du hast am ende wahrscheinlich system("PAUSE");

    Aber ohne code kann man dir wircklich nicht helfen

    Es geht ja nicht um system("pause") , sondern um quasi alles andere vom Programm und warum es nichts ausgibt. 😉



  • Wie kann ich denn ohne system Pause sonst das Ergebnis betrachtet? 😕



  • tundrablume schrieb:

    Wie kann ich denn ohne system Pause sonst das Ergebnis betrachtet? 😕

    1. Siehe http://www.c-plusplus.net/forum/151578-full

    2. Bitte Postings nicht sinnändern nachträglich editieren. Wenn du dir den Thread nun durchliest, ergeben die Fragen nach Code keinen Sinn.

    3. Zu deinem Problem: Der Startpunkt in deiner Anwendung ist main(). In dieser Funktion machst du aber nichts außer system("pause").

    4. Nutze Code-Tags, um Quellcode zu posten.

    5. Reduziere Codebeispiele so weit wie möglich.



  • 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 0 geachtet. 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 return natü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");
    }
    

Anmelden zum Antworten