danke danke danke
auch wenn ich denke, dass es
scanf("%[^abc]", String); //%[^abc] liest so lange Zeichen ein, bis es auf ein Zeichen trifft, was nicht in der Klammer steht.
aber das war der Denkpart meinerseits, nicht?
hypersayyajin16_5 schrieb:
int i;
for (i=1;i<=t;i=i+1;)
{
fnorm1 = cos_d(winkel)*m*(ortsfaktor*(1)+((winkel/180)*((fha-fglei)/m)*(pow(i,2)))*(3*(pow(10,-6))));
ofstream out("werte.dat", ios::app);
out<<fnorm1<<endl;
};
1. Es ist unmöglich zu komeilieren,denn in der For-Kopf stehen vier Befehle (getrennt duch drei Semiloions) Besser:
[...]
for (i=1;i<=t;i=i+1)
[...]
2. Es gibt einige Programmiertechniken, die dir das programmieren vereinfachen (Inkrementieren, Variablen-"festlegen" im For-Kopf):
for (int i=1; i<=t ; i++)
{
[...]
}
3. Es ist viel schneller wenn man den "ofstream" außerhab der For-schleife zu nutzen und ihn im Inneren zu verwenden.
ofstream out("werte.dat", ios::app);
for (int i=1; i<=t ; i++)
{
fnorm1 = cos_d(winkel)*m*(ortsfaktor*(1)+((winkel/180)*((fha-fglei)/m)*(pow(i,2)))*(3*(pow(10,-6))));
[...]
}
4. Fehlt nicht auch
out.close();
??? (Wahrscheinlich Hauptfehler; Vermutlich wird die Datei immer überschrieben; = Ist das "zufälliger Weise" immer der letzte Wert) Wenn nicht muss nach "ofstream out("werte.dat", ios::app" einige Sachen folge, die dem PC "sagen", dass er nicht überschreiben sondern anhängen soll.
5. Es wird schneller wenn du alles vorher ausrechnest was sich nicht ändert (Außerdem zu viele klammern):
ofstream out("werte.dat", ios::app);
float temp1 = cos_d(winkel)*m;
float temp2 = ortsfaktor*(1);
float temp3 = winkel/180*(fha-fglei)/m*3*pow(10,-6);
for (int i=1; i<=t ; i++)
{
fnorm1 = temp1*(temp2 + temp3*pow(i,2));
out<<fnorm1<<endl;
}
Mit freundlichen Grüßen
Rhombicosidodecahedron
wie sieht den das dynamische menü codemässig aus?
das ist ein problem dass mich schon länger plagt.. bringe es nur so fertig, dass wennich einen neuen befehl erstelle diesen an zigtausend stellen (oder so..) im code ändern bzw. hinzufügen müsste.. habe vermutlich falsche verbindungen in meinem hirn
hallo ich hab hier eine Funktion, die den Cursor versteckt klein darstellt oder groß darstellt. Dass alles funktioniert auch, wenn ich nicht im Fullscreen-mode bin.
hier mal beide Funktionen:
void SetCursorType(int type)
{
CONSOLE_CURSOR_INFO Info;
Info.bVisible = TRUE;
if (type == 0) Info.dwSize=1, Info.bVisible=FALSE;
else if(type == 1) Info.dwSize = 100;
else if(type == 2) Info.dwSize = 1;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &Info);
}
und
int fullscreen()
{
keybd_event(VK_MENU, 0x38, 0, 0);
keybd_event(VK_RETURN, 0x1c, 20, 20);
keybd_event(VK_RETURN, 0x1c, KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, 0x38, KEYEVENTF_KEYUP, 0);
return 0;
}
Daher meine Frage: Wieso "ignoriert" mein Programm im Fullscreen-mode meinen CursorType ?
Hat jemand ne Ahnung wie ich dieses Problem beheben kann?
Danke schonmal im voraus für eure Hilfe
PS: Wenn Interesse besteht kann ich den gesamten Quelltext posten.
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Thx, für die Antworten... jaja die Rechtschreibung^^
Etwas sehr wichtiges für mich hattet ihr jedoch vergessen, allein mit cout.width kam ich nicht weiter, aber es war das Stichwort mit dem ich weiterkam.
Ich stieß dann nämlich auch noch auf cout.fill();
Jetzt klappt es so wie ich es wollte.
Ich danke.
mfg
Last-Boyscout
thomasss schrieb:
oder klickt hier eh keine sau drauf..?
Auf eine exe, deren Verfasser unbekannt ist wird hier tatsächlich niemand klicken. Wenn du Feedback willst, dann zeig den Source.
Alle Befehle befinden sich im Ordner
bin\
, jetzt dachte ich mir ich lese den inhalt aus und speicher die Befehle in eine Datei, später soll in der Eingabe die Befehle aus der Datei verglichen werden. Ist die Methode erforderlich oder sollte ich direkt aus *bin* auslesen?
Auch kommst Du wie schon erwähnt nicht drum rum jeden Tastendruck separat einzulesen und auszuwerten.
Also jedes eingegebene Zeichen soll erst verglichen werden, sobald die TAB Taste gedrückt wird. Ist das so die richtige Funktionweise oder wie würdet ihr das Realisieren'?
Erstens: sfds
Zweitens: Wenn du nur eine Schleifenebene hast, kannst du mit break ganz schnell raus. Andernfalls mußt du schrittweise alle verschachtelten Schleifen verlassen (wobei, das ist eine der Ausnahmen, wo auch ein goto in Frage kommen würde)
bool exit = false;
while(!exit)
{
...
if(i=='8') exit = true;
}
Btw, es gibt elegantere Wege, die Nutzereingabe abzufragen als dein KeyState-Gebastel.
#include <iostream>
#include <string>
using namespace std;
int main ()
{
cout << "Stundentenbegruessungsprogramm\n";
int i = 0 ;
string text1 = "ja";
string text2 = "nein";
string text;
do
{
cout << "Hallo Herr Butt, wir begruessen Sie an unserer FH!\n";
cout<< "Soll die Ausgabe nochmal angezeigt werden? :";
cin>>text;
i++;
}
while(i<10 && text==text1);
int n1, n2 ;
while (n1 != 0 && n2 != 0)
{
cout << "\nGeben Sie eine Zahl n1 ein :";
cin >> n1;
cout << "\nGeben Sie n2 ein: ";
cin >> n2;
//Ferlermeldung ---> int-Bereich ist zwischen -32768 und +32767
cout<<"\nDie Multiplikation von n1="<< n1 <<" und n2="<< n2 <<" ist: " << n1*n2;
cout<<"\nDie Summe von n1="<< n1 <<" und n2="<< n2 <<" ist: " << n1+n2 <<endl;
}
cout << "ENDE! .... ";
int dummy;
cin>>dummy;
return 0;
}
es läuft, aber Du kannst's noch verbessern ... die Antwort mit "ja" oder "nein" funkioniert nur wenn Du sie klein schreibst