myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Ausgabe Datei erstellen, Frage

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 03.01.12, 21:15   #1
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard Ausgabe Datei erstellen, Frage

Hallo Leute,

an der Uni musste ich ein Program schreiben und dabei bin ich auf ein kleines Problem gestoßen Das Programm ist eig schon fertig, läuft schön, habe es mit Visual C++ programiert.

Es rechnet bei der Simulation und spuckt dabei Ergebnisse aus, die er als eine "Ergebnis.txt" Datei speichert. Dies habe ich so geschrieben:

PHP-Code:
void gebeAus() {                                                                        //Datei oeffnen
        
ausgabe fopen("Ergebnis.txt","a");
if(
ausgabe != NULL) {
fprintf(ausgabe,                                                                    // Die Ausgabe
     
"%2.4lf s %15.6lf A %15.6lf V %15.6lf Ohm %10.6lf W (Pw) %15.6lf W (Pel) %15.6lf W (Pstr) %20.10lf Kelvin (Temp. d. Drahtes) %20.10lf Kelvin (Temp. d. Glaskolbens) \n",\
     
t,I,U,Rt,Pw,Pel,Pstr,Tkelv,Tkelv_g);  
    }
    
fclose(ausgabe); 

Mein Intervall geht von 0.000001 Sekunde (also eine Microsekunde) bis 1.0 Sekunde. Ist in der Aufgabenstallung vorgegeben. Lieder hat dann die Ergebnisdatei über eine Mio. Zeilen und das möchte ich nicht. Gibt es eine Möglichkeit bzw. ein Befehl der mir es ermöglicht, z.b. alle 100 Zeilen in die Ergebnisdatei zu speichern und nicht jede ohne das ich das Intervall ändere, weil es muss bei der Microsekunde bleiben.

Vielen Dank im Voraus
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 04.01.12, 22:26   #2
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Danke ich versuch es dann mal
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 04.01.12, 22:59   #3
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Also es geht darum das ich eine Glühlampe simulieren muss, ich hab erst alle Variablen bennant, danach die Formeln aufgstellt, die Spannung, Widerstand, Temperatur des Drahtes usw. berechnen in Abhängigkeit von der Zeit, unzwar im Interwall von

1*10^-6 sekunden bis zur 1 Sekunde. Wenn das Program ein Intervall hinter sich hat, dann wird diese sofort in die Datei gespeichert und das macht er bis er die eine Sekunde erreicht hat. mein t ist halt immer t = t + Intervall.

Jetzt habe ich Probleme mit deinem Vorschlag, unzwar weiß ich jetzt nicht gaz was das mit dem "CounterTxtDatei" bedeutet.


Wenn ich "ausgabe = fopen("Ergebnis"+ CounterTxtDatei.(String) + ".txt","a");" schreibe dann zeigt er mir en --> Der Ausdruck muss einen Klassentyp aufweisen



Habe ich das richtig vertanden mit der If zeile die du mir geschrieben hast, das soll bedeuten, wenn die Zeile größer gleich 1 ist soll der dann die nächte +1 schreiben, richtig?

Sry, die Fachsprache der Programierer behersche ich nicht Studiere ja auch kein Informatik, ich hab diese Program mit seht viel Aufwand und google geschrieben.


Mein Programm spuckt mir ja über 1Mio. Zeilen raus (knapp 180MB), er soll die ja alle berechnen, aber z.b nur jede tausendste speichern. Ich wollte das Intervall ändern indem ich sage er soll nicht jede 1 Microsekunde rechnen sondern jede 100. aber das will der prof nicht -.-
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 05.01.12, 20:53   #4
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Nein, er soll mir nicht mehrere Dateien erstellen, sondern in der "Ergebnis" Datei jedes 100. Ergebnis aus der Rechnung speichern und nicht jedes.

Ich sag mal so, mein Program rechnet ich sag mal "1000" Rechnungen und speichert dies in Form von 1000 Zeilen. Ich brauche aber in der Datei nur jede 100. Rechnung oder 10. Rechnung zu speichern und nicht jede einzelne.

Danke für deine Hilfe
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 05.01.12, 21:59   #5
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Wenn du nur jede hunderste Zeile speichern möchtest, kannst du den obigen Code einfach wie folgt verwenden.
PHP-Code:
void gebeAus() {
  
Zaehlerdateizeile++;
  if(
Zaehlerdateizeile 100)
  {
     
Zaehlerdateizeile 0;
     return;
  }      

  ... 
germgerm ist offline   Mit Zitat antworten
Ungelesen 06.01.12, 14:30   #6
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von germgerm Beitrag anzeigen
Wenn du nur jede hunderste Zeile speichern möchtest, kannst du den obigen Code einfach wie folgt verwenden.
PHP-Code:
void gebeAus() {
  
Zaehlerdateizeile++;
  if(
Zaehlerdateizeile 100)
  {
     
Zaehlerdateizeile 0;
     return;
  }      

  ... 
Ok ich habs so übernommen (zeigt auch keine Fehlermeldung an), aber er speichert immer noch alle Zeilen ab. Aber woher weiß er, dass "Zaehlerdateizeile" meine Zaehlerdateizeile ist? Ist dieser Begriff schon vordefiniert? Weil das Programm läuft ja über das Intervall von einer Microsekunde bezogen auf die Dauer 1 Sekunde. Muss ich da vllt etwas bei der "fprintf(ausgabe" ändern? Weil die speichert ja die Informationen in die Text Datei.

PHP-Code:
// AUSGABE DER WERTE IN EINE DATEI
void gebeAus() {                                                                        //Datei oeffnen
    
Zaehlerdateizeile++;
if(
Zaehlerdateizeile 100)
{
    
Zaehlerdateizeile 0;
    return;
}
    
ausgabe fopen("Ergebnis.txt","a");
if(
ausgabe != NULL) {

     
fprintf(ausgabe,                                                                    // Die Ausgabe
     
"%2.6lf s %15.6lf A %15.6lf V %15.6lf Ohm %10.6lf W (Pw) %15.6lf W (Pel) %15.6lf W (Pstr) %20.10lf Kelvin (Temp. d. Drahtes) %20.10lf Kelvin (Temp. d. Glaskolbens) \n",\
     
t,I,U,Rt,Pw,Pel,Pstr,Tkelv,Tkelv_g);  
     
Zaehlerdateizeile +=1;
    }
    
fclose(ausgabe);                                                                    // Datei schließen
}

// DIE SIMULATION DES EINSCHALTENS
void simuliere() {
    
erzeugeKonstante();                                                                    // Schleifendurchlaeufe
    
double i 0;

for ( 
i<= dauerSimulation+= INTERVALL) {
      
printf("%2.6f / %2.6f\r"dauerSimulation);
      
durchlaufEinesIntervalls();
      
gebeAus();   
    } 
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 06.01.12, 17:38   #7
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Oje, das war wohl nix ^^

Code:
void gebeAus() {

if(Zaehlerdateizeile%100) 
{ 
    Zaehlerdateizeile++; 
    return; 
} 

...
Habe ich aber wieder nicht ausprobiert!

Zaehlerdateizeile muss von dir irgendwo deklariert sein, von selbst schluckt sowas nur das alte Fortran.
germgerm ist offline   Mit Zitat antworten
Ungelesen 06.01.12, 23:09   #8
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Ja ich das Program macht immer noch das selbe, es speichert immer noch jede Zeile. Ich hab schon nach 1sek. 9MB und das Program läuft par Minuten bis es fertig ist.

Ja ich hab Zeahlerdateizeile mit double definiert. Aber ich was es genau ist nicht, nur das es = 0 ist.

hier mal das ganze Program:

PHP-Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double M_PI 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679;
    
FILE *ausgabe;
 
  
  
double Zaehlerdateizeile 1;
  
double I;                                                                                // Grundlage: I = U/Rt
  
double U;
  
double Rt;
 
  
// BERECHNUNG DER SPANNUNG IN ABHAENGIGKEIT VON DER ZEIT:  U(t) = 230 * sqrt(2) * sin (t * 2 * Math.PI * f)
  
  
double t 0;                                                                            // Zeit in Sekunden
  
int FREQUENZ 50;                                                                    // Frequenz = 50 Hz, genormte Netzfrequenz                                   
 
  // BERECHNUNG DES WIDERSTANDES IN ABHAENGIGKEIT VON DER TEMPERATUR: Rt = Rel * (1 + alpha * (T1-T0)), wobei (T1-T0) = delta_T ist

  
double ALPHA 0.0048;                                                                // linearer Temperaturkoeffizient 4,8 * 10 ^-3 K^-1 bei 20°C
  
double delta_T;                                                                        // T1-T0 (T1 => Drahttemperatur, T0 => Raumtemperatur)
  
double Tkelv;                                                                            // Temperatur des Drahtes in °Kelvin   
  
double Tkelv_g;                                                                        // Temperatur des Glases in °Kelvin
  
double raumTemp 293.15;                                                                // Raumtemperatur in Kelvin                                          
  
double Rel;                                                                            // Elektrisches Widerstand            
  
double roSpez 0.0528;                                                                // Spezifischer Widerstand von Wolfram in Ohm^2
  
double laenge 0.62;                                                                    // Laenge in m 0.062
  
double A_d;                                                                            // Querschnitt in m^2 des Drahtes A_d = r ^2 * Math.PI
  
double durchmesser 0.000015;                                                        // Durchmesser in m                                    
  

  // BERECHNUNG DER TEMPERATURDIFFERENZ (delta_T)
  
  // C = DeltaQ/DeltaT  <=> DeltaT = DeltaQ/C
  // C = c * m
  
  
double C_w;                                                                            // Waermekapazitaet in                            J/K (Wolfram)
  
double C_g;                                                                            // Wearmekapazitaet in                            J/K (Glass)
  
int c_w 134;                                                                        // spezifische Waermekapazitaet von Wolfram        in J/(kg*K)  
  
int c_g 700;                                                                        // spezifische Waermekapazitaet von Glas        in J/(kg*K) 
  
double m_d;                                                                            // Masse des Drahtes in kg                        m = V_d * Rho_W
  
double m_g;                                                                            // Masse Glaskolben in kg
  
double V_d;                                                                            // Volumen des Drahtes in m^3
  
double V_g 0.12;                                                                    // Volumen des Glaskolbens in m^3 ergibbt sich aus Subration 2er Kugeln
  
int Rho_W 19270;                                                                    // Dichte von Wolfram in kg/m^3
  
int Rho_G 2500;                                                                        // Dichte von Glass in kg/m^3
    
  // BERECHNUNG DER THERMISCHEN ENERGIE

  
double delta_Q;                                                                        // thermische Energie in J DeltaQ = Pw * delta_t
  
double Pw;                                                                            // Waermeleistung in Watt
  
  // BERECHNEN DER WAERMELEISTUNG
  
  
double Pel;                                                                            // elektrische Leistung in Watt  Pel = Pw + Pstr <=> Pw = Pel - Pstr
  
double Pstr;                                                                            // Strahlungsleistung in Watt
  
  
  // STRAHLUNGSLEISTUNG BERECHNEN
  
  
double BK 0.0000000567;                                                                // Stefan-Boltzmann-Konstante J/K Pstr = T^4 * Bk * Ob * Epsilon(T)
  
double Ob_d;                                                                            // Oberflaeche m^2
  
double Ob_g;
  
double eps_w;                                                                            // Emissionsgrad Wolfram
  
double eps_g;                                                                            // Emissionsgrad Glass
  
  // ZUR RECHNUNG BENÖTIGTEN WERTE

  
double INTERVALL 0.000001;            //0.000001                                                // entspricht Delta t in Sekunden
  
double Terwaerm_draht;                                                                // Erwaermung des Drahtes
  
double Terwaerm_glas;                                                                    // Erwearmung des Glases
  
double ausdehn_l;                                                                        // Laenge nach Ausdehnung
  
double ausdehn_l_glas;                                                                // Leange nach Ausdehnung Glas
  
double ausdehn_d;                                                                        // Durchmesser nach Ausdehnung
  
double ausdehn_d_glas;                                                                // Durchmesser Ausdehnung glas
  
double ausdehnungskoeff_w 0.0000045;                                                // Ausdehnungskoeffizient Wolfram
  
double ausdehnungskoeff_g    0.0000076;                                                // Ausdehnungskoeffizient Glas
  
double dauerSimulation 1.0;                                                            // Simulationsdauer in Sekunden       
  
double Kelvin 273.15;                                   
 
 
 
// BERECHNUNG DER KONSTANEN WERTE DIE FÜR DEN ERSTEN DURCHLAUF BENÖTIGT WERDEN

 
void erzeugeKonstante() {
      
      
A_d pow((durchmesser/2),2) * M_PI;
      
Rel 58.5;                                                                        // Rel = roSpez * laenge / A
      
Tkelv raumTemp;
      
Tkelv_g raumTemp;
      
Ob_d * (durchmesser/2) * M_PI laenge;
      
m_d A_d laenge Rho_W;                                                        // Berechnung der Masse des Drahtes
      
m_g Rho_G V_g;                                                                // Berechnung des Masse des Glaskolebsn (Volumen ergibt sich auch Subtraktion zweier Kugeln, 55mm und 54mm, daraus resultiert die Wandstaerke)
      
C_w c_w m_d;                                                                    // Berechnung der Waermekapazitaet (Wolfram)
      
C_g c_g m_g;                                                                    // Berechnung der Waermekapazitaet (Glas)

}
 
// BERECHNUNG DER WERTE DIE SICH AUFGRUND DER AUSDEHNUNG AENDERN  

void berechneVariable() {

        
delta_T Tkelv Tkelv_g;
        
ausdehn_l laenge * ( ausdehnungskoeff_w delta_T );
        
ausdehn_d durchmesser * ( ausdehnungskoeff_w delta_T);
        
Ob_d * (ausdehn_d/2) * M_PI ausdehn_l;
        
Ob_g M_PI pow((ausdehn_d_glas),2);
}

// BERECHNUNG EINES INTERVALLS

void durchlaufEinesIntervalls() {
        
        
berechneVariable();                                                                // BERECHNUNG DER VERAENDERTEN VARIABLEN
         
        
230 sqrt(2.0) * sin(M_PI FREQUENZ);
        
Rt Rel * ( ALPHA delta_T);
        
Rt;
        
Pel = (U*U)/Rt;
        
eps_w 0.39;                                                                    // Emissionsgrad Wolfram
        
eps_g 0.94;                                                                    // Emissionsgrad  Glas
        
Pstr BK * ((Ob_d * ((pow(Tkelv,4))-(pow(Tkelv_g,4))) * eps_w) - (Ob_g * ((pow(Tkelv_g,4))-(pow(raumTemp,4))) * eps_g)) ; // Waermeabgabe von Draht zu Glaskolen und von Glaskolben zur Umgebungsluft bzw. Raumptemperatur
        
Pw Pel Pstr;
        
Terwaerm_draht = (Pw INTERVALL) / C_w;
        
Terwaerm_glas = (Pw INTERVALL) / C_g;
        
Tkelv Tkelv Terwaerm_draht;
        
Tkelv_g Tkelv_g Terwaerm_glas;
        
INTERVALL
}

// AUSGABE DER WERTE IN EINE DATEI
void gebeAus() {                                                                        //Datei oeffnen
if(Zaehlerdateizeile%100)
{
    
Zaehlerdateizeile++;
    return;
}
    
ausgabe fopen("Ergebnis.txt","a");
if(
ausgabe != NULL) {

     
fprintf(ausgabe,                                                                    // Die Ausgabe
     
"%2.6lf s %15.6lf A %15.6lf V %15.6lf Ohm %10.6lf W (Pw) %15.6lf W (Pel) %15.6lf W (Pstr) %20.10lf Kelvin (Temp. d. Drahtes) %20.10lf Kelvin (Temp. d. Glaskolbens) \n",\
     
t,I,U,Rt,Pw,Pel,Pstr,Tkelv,Tkelv_g);  
     
Zaehlerdateizeile +=1;
    }
    
fclose(ausgabe);                                                                    // Datei schließen
}

// DIE SIMULATION DES EINSCHALTENS
void simuliere() {
    
erzeugeKonstante();                                                                    // Schleifendurchlaeufe
    
double i 0;

for ( 
i<= dauerSimulation+= INTERVALL) {
      
printf("%2.6f / %2.6f\r"dauerSimulation);
      
durchlaufEinesIntervalls();
      
gebeAus();   
    }
}

int main()
{
    
printf("SIMULATION DES EINSCHALTENS EINER GLUELAMPE.\n\nBITTE WARTEN BIS DIE SIMULATION BEENDET IST, DANKE\n");
    
    
simuliere();                                                                         // Beginn der Simulation
        
    
printf("\n\n\nDIE SIMULATION IST BEENDET. SIE KOENNEN NUN DIE ERGEBNIS \nDATEI OEFFNEN. DIESE FINDEN SIE IM MICROSOFT VISUAL C++ PROJEKT ORDNER\n");
    
system("PAUSE");    
    return 
0
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 07.01.12, 09:10   #9
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Kaioken90 Beitrag anzeigen
Ja ich hab Zeahlerdateizeile mit double definiert. Aber ich was es genau ist nicht, nur das es = 0 ist.
Probier mal
long Zeahlerdateizeile = 0;
germgerm ist offline   Mit Zitat antworten
Ungelesen 07.01.12, 18:52   #10
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von saibot521 Beitrag anzeigen
PHP-Code:
// Variable deklarieren
int counter 0;

...

void gebeAus() {                                                                        //Datei oeffnen
    
ausgabe fopen("Ergebnis.txt","a");
    if(
ausgabe != NULL) {
               
// reset counter
               
if (counter 99)
               {
                           
counter 0;
               }
               
// nimm immer nur die 1. von 100 Datenzeilen
               
if (counter == 0)
               {
                           
fprintf(ausgabe,                                                                    // Die Ausgabe
                           
"%2.6lf s %15.6lf A %15.6lf V %15.6lf Ohm %10.6lf W (Pw) %15.6lf W (Pel) %15.6lf W (Pstr) %20.10lf Kelvin (Temp. d. Drahtes) %20.10lf Kelvin (Temp. d. Glaskolbens) \n",\
                           
t,I,U,Rt,Pw,Pel,Pstr,Tkelv,Tkelv_g);  
               }
               
// counter um 1 erhöhen
               
counter ++;
    }
    
fclose(ausgabe);                                                                    // Datei schließen

Das ergebnis schaut dann so aus, dass du die Sekunden von:
0.000001 s ...
0.000101 s ...
0.000201 s ...
0.000301 s ...
u.s.w


Ahhhh so einfach! Vielen vielen Dank TOP TOP, hätte ich das nur mit "counter" gewusst. Schöne Methode, ist genau das was ich haben wollte. Immerhin sind es jetzt keine 181MB sondern 2.3MB... Ach ja, dadurch das er jetzt alle 100 Schreitte Informationen speichert, speichert er mir am ende nicht die ganze volle Sekunden, sondern nur 0.999901, da fehlen halt die 99 die halt in der "if" schleife defieniert sind, kann man da noch was machen? Möchte ungern das Intervall ändern.
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 15.01.12, 16:27   #11
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von saibot521 Beitrag anzeigen
Das Problem ist, dass er nicht bei 0.00000s sondern bei 0.00001s anfängt in die Funktion Ausgabe zu springen. Und wenn du am Ende ne 1 hast und 100 weiter gehst ... dann hast du am Ende immer noch ne 1.

Ich habs mal mit Modulo probiert, aber das hat zumindest bei mir nicht gut funktioniert.

Hab aber dann ne weitere If-Anweisung genommen und nun schaut das Ergebnis so aus:

0.000001 s
0.000100 s
0.000200 s
0.000300 s
u.s.w.

Ich denke das ist genau das, was du haben willst.

PHP-Code:
int counter 0;
bool ErsterDurchlauf true;

...


// AUSGABE DER WERTE IN EINE DATEI
void gebeAus() {                                                                        //Datei oeffnen
    
ausgabe fopen("Ergebnis.txt","a");
    if(
ausgabe != NULL) {
               
// erster Durchlauf nur 99x hochzählen, da nicht bei 0 sondern 0.00001 begonnen wird
               
if(ErsterDurchlauf)
               {
                   if (
counter 98)
                   {
                               
// reset counter
                               
counter 0;
                               
ErsterDurchlauf false;
                   }               
               }
               else
               {
                   if (
counter 99)
                   {
                               
// reset counter
                               
counter 0;
                   }
               }
                                  
               
               
// nimm immer nur die 1. von 100 Datenzeilen
               
if (counter == 0)
               {
                           
fprintf(ausgabe,                                              
                           
"%2.6lf s %15.6lf A %15.6lf V %15.6lf Ohm %10.6lf W (Pw) %15.6lf W (Pel) %15.6lf W (Pstr) %20.10lf Kelvin (Temp. d. Drahtes) %20.10lf Kelvin (Temp. d. Glaskolbens) \n",\
                           
t,I,U,Rt,Pw,Pel,Pstr,Tkelv,Tkelv_g);  
               }
               
// counter um 1 erhöhen
               
counter ++;
    }
    
fclose(ausgabe);                                                                    // Datei schließen


Hi, erst mal Danke also anfangs funktioniert es, doch am Ende springt er iwie über und zeigt mir dann im Terminal 0.999999/1.000000 und am Ende der Ergebnisdatei 0.999901 s an o.O komisch obwohl deine if Schleife eig funktionieren müsste
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 16.01.12, 19:57   #12
Ice weasel
Anfänger
 
Registriert seit: Aug 2011
Beiträge: 8
Bedankt: 3
Ice weasel ist noch neu hier! | 0 Respekt Punkte
Standard

Code:
void gebeAus() 
{
static int zaehler = 100; // wegen ersten durchlauf
if(zaehler == 100)
{
    //fopen und so
    //ausgabe
    zaehler = 0;
   fclose();
   return;
}
zahler++;
}
das static sorgt dafür das die werte zwischen den funktionsaufrufen erhalten bleiben.
Ice weasel ist offline   Mit Zitat antworten
Ungelesen 16.01.12, 22:10   #13
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Ice weasel Beitrag anzeigen
Code:
void gebeAus() 
{
static int zaehler = 100; // wegen ersten durchlauf
if(zaehler == 100)
{
    //fopen und so
    //ausgabe
    zaehler = 0;
   fclose();
   return;
}
zahler++;
}
das static sorgt dafür das die werte zwischen den funktionsaufrufen erhalten bleiben.
Meintest du es so vllt?


PHP-Code:
void gebeAus() {                                                                        //Datei oeffnen
    
static int zaehler 100;
    if(
zaehler == 100)
    {
    
ausgabe fopen("Ergebnis.txt","a");
if(
ausgabe != NULL) {
fprintf(ausgabe,                                                                    // Die Ausgabe
     
"%2.6lf s %15.6lf A %15.6lf V %15.6lf Ohm %10.6lf W (Pw) %15.6lf W (Pel) %15.6lf W (Pstr) %20.10lf Kelvin (Temp. d. Drahtes) %20.10lf Kelvin (Temp. d. Glaskolbens) \n",\
     
t,I,U,Rt,Pw,Pel,Pstr,Tkelv,Tkelv_g);  
    }
        
zaehler 0;
    
fclose(ausgabe);                                                                    // Datei schließen
    
return;
}
zaehler++;

__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Ungelesen 18.01.12, 21:29   #14
Ice weasel
Anfänger
 
Registriert seit: Aug 2011
Beiträge: 8
Bedankt: 3
Ice weasel ist noch neu hier! | 0 Respekt Punkte
Standard

ja, funktionierts denn?
Ice weasel ist offline   Mit Zitat antworten
Ungelesen 22.01.12, 01:22   #15
Kaioken90
Black Sabbath
 
Benutzerbild von Kaioken90
 
Registriert seit: Sep 2010
Beiträge: 56
Bedankt: 4
Kaioken90 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Ice weasel Beitrag anzeigen
ja, funktionierts denn?
Hi,

ja es funktioniert genau so wie das obrige davor, hat aber den Vorteil das es kürzer ist. Ich habe den Bereich noch auf 500 erhöt, da 100 Schritte doch zu viel sind (wollte der Prof so)

Aber beides funktioniert

Vielen Dank an alle
__________________
MSI X79-GD45 Plus
Intel Core i7-4930k @ 4,4 GHz
G-Skill 16 GB @ 1600 MHz
nVidia GeForce GTX 670 SLI
Samsung SSD 256GB
Kaioken90 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr.


Sitemap

().