
checko
Mitglieder-
Gesamte Inhalte
13 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von checko
-
Hi, Kennt sich hier jemand mit LAMMPS aus, einem Programm für MD Simulationen? Ich habe eine MEAM-Rechnung angestellt. MEAM sind besondere Potentiale für bestimmte chemische Elemente. Kann ich irgendwie sehen, ob das Programm in einer Endlosschleife feststeckt? Ich hoffe, dass mir jemand helfen kann. Gruß checko:(
-
Hi TDM, Ich kann nur sagen: Vieeeeelen Dank für deine Hilfe. Ohne dich wäre ich aufgeschmissen gewesen. Gruß checko
-
Hi TDM, Das sieht schon interessant aus. Zum Verständnis würde ich gerne die Bedeutung von folgenden Keywords wissen. 1. sprintf 2. sizeof(char) 3. fflush 4. fwrite Wäre nett, wenn du mir das noch erklären könntest. Gruß checko
-
Hi TDM, Das Problem ist, dass die Datei in jedem Schleifendurchgang einen anderen Namen haben soll. So dass die neuen werte in eine ANDERE Datei geschrieben werden soll. Der Ablauf mal ganz konkret: i=0 (i Laufvariable der for-Schleife) Rechnung Schreiben der Ergebnisse in eine Datei "x.dat". i=1 (2. Durchgang) Rechnung (mit etwas anderen Zahlen) Schreiben der neuen Ergebnisse in eine andere Datei "y.dat". i=2 (3. Durchgang) Rechnung (") Schreiben der neuen Ergebnisse in eine dritte Datei "z.dat". Das mache ich aber jetzt nicht 3 mal, sondern vllt. 10 mal. Verstehst du was ich meine? Gruß checko
-
Hi @all, Ich habe folgendes Problem bzw. weiß nicht wie ich das Programmtechnisch umsetzen kann. Ich möchte eine for-Schleife schreiben, in der in jedem Schleifendurchgang nach erfolgter Rechnung die Ergebnisse in eine Datei geschrieben werden. Nun das Problem: Die Datei sollte in jedem Schleifendurchgang einen anderen Namen haben, so dass ich sie unterscheiden kann. Dies wollte ich gerne durch eine Variable steuern, so dass die Datei den Namen Variable.dat hätte. Die Variable wird dann um einen Wert erhöht, sodass die nächste Datei einen anderen Namen hat, nämlich Variable+x.dat. Die Variable ist eine Zahl. Bsp.: Erste Datei heisst: 12.dat Zweite Datei heisst: 15.dat Dritte Datei heisst: 18.dat usw. usw. Kann man sowas mit C programmieren? Eine andere Frage wäre noch: Kann man dem Programm irgendwie sagen, dass er die neuen Zahlen nicht unter die vorherigen Zahlen schreibt, sondern jeweils mit einem Tab getrennt hinter die Zahl. Ich meine folgendes: i=0 (i ist die Laufvariable einer Schleife) a b c d e f usw. i=1 a 1 b 2 c 3 d 4 usw. Vielen Dank schon mal im voraus. Ich hoffe auf eine schnelle Antwort. Gruß checko
-
Hi, Hat sich erledigt, das Problem. Der Fehler lag in der Input-Datei. Er konnte das "," nicht lesen. checko
-
Hi, Ich habe hier noch ein anderes Problem. Der Input sind zwei 8*26 Tabellen aus zwei verschiedenen Dateien, die das Programm nacheinander einlesen soll. Die Daten aus der ersten Datei liest er auch ohne Probleme ein. Doch die Daten aus der zweiten Datei werden komischer weise nicht mehr eingelesen, wie mir der Print-Befehl vor der Berechnung zeigt. Angemerkt sei noch, dass die erste Zahl aus der zweiten Datei richtig eingelesen wird, alle anderen liest er aber nicht mehr ein. Ihr habt mir schon einmal geholfen und ich würde mich freuen, wenn ihr es wieder tuen könntet. Schon mal vielen Dank im Voraus. checko Hier der Code: #include <stdio.h> #include <stdlib.h> int main () { int i; int j; int k; int a; int b; //Benötigte Größen double sum1; double sum2; double sum3; double sum4; double sum5; double sum6; double sum7; double sum8; sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; //Benötigte Arrays printf("Start \n"); double *sas1; double *sas2; double *sas3; double *sas4; double *sas5; double *sas6; double *sas7; double *sas8; double *eta1; double *eta2; double *eta3; double *eta4; double *eta5; double *eta6; double *eta7; double *eta8; // double *sasi; sas1=(double*) malloc(26*sizeof(double)); sas2=(double*) malloc(26*sizeof(double)); sas3=(double*) malloc(26*sizeof(double)); sas4=(double*) malloc(26*sizeof(double)); sas5=(double*) malloc(26*sizeof(double)); sas6=(double*) malloc(26*sizeof(double)); sas7=(double*) malloc(26*sizeof(double)); sas8=(double*) malloc(26*sizeof(double)); eta1=(double*) malloc(26*sizeof(double)); eta2=(double*) malloc(26*sizeof(double)); eta3=(double*) malloc(26*sizeof(double)); eta4=(double*) malloc(26*sizeof(double)); eta5=(double*) malloc(26*sizeof(double)); eta6=(double*) malloc(26*sizeof(double)); eta7=(double*) malloc(26*sizeof(double)); eta8=(double*) malloc(26*sizeof(double)); // sasi=(double*) malloc(15*sizeof(double)); printf("Einlesen der 1. Datei\n"); FILE *fdata; fdata=fopen("tore","r"); for (i=0;i<26;i++) { fscanf(fdata,"%lf",&sas1[i]); fscanf(fdata,"%lf",&sas2[i]); fscanf(fdata,"%lf",&sas3[i]); fscanf(fdata,"%lf",&sas4[i]); fscanf(fdata,"%lf",&sas5[i]); fscanf(fdata,"%lf",&sas6[i]); fscanf(fdata,"%lf",&sas7[i]); fscanf(fdata,"%lf",&sas8[i]); } fclose(fdata); printf("Einlesen der 1. Datei beendet\n"); printf("Einlesen der 2. Datei\n"); FILE *fdato; fdato=fopen("etat","r"); for (a=0;a<26;a++) { fscanf(fdato,"%lf",&eta1[a]); fscanf(fdato,"%lf",&eta2[a]); fscanf(fdato,"%lf",&eta3[a]); fscanf(fdato,"%lf",&eta4[a]); fscanf(fdato,"%lf",&eta5[a]); fscanf(fdato,"%lf",&eta6[a]); fscanf(fdato,"%lf",&eta7[a]); fscanf(fdato,"%lf",&eta8[a]); } fclose(fdato); for (b=0;b<26;b++) { printf("S1: %lf, S2: %lf, S3: %lf, S4: %lf \n",eta1[b],eta2[b],eta3[b],eta4[b]); printf("S5: %lf, S6: %lf, S7: %lf, S8: %lf \n",eta5[b],eta6[b],eta7[b],eta8[b]); } //Abhier kommt die weiterführende Berechnung, die hier nicht mehr wichtig ist. //Falls sie doch notwendig ist, setzte ich sie noch nachträglich rein. PS: Ich habe schon gelernt, dass bei dem malloc-Befehl das (double*) überflüssig ist. Ich schreibe es aber aus Gewohnheit.
-
Hi Klotzkopp, Ich verstehe. Eine Frage habe ich aber noch: Heißt das jetzt, dass ich das "double*" nie schreiben muss oder gibt es Situationen, in denen es doch notwendig ist? checko
-
Hi TDM, Wenn ich das also richtig verstehe, brauche ich das also deswegen nicht zu schreiben, weil der Datentap des Arrays gleichbleibt. Ist das so richtig? @all: Ich möchte nochmal danke sagen, für all das, was ich hier schon gelernt habe. checko
-
Hi Klotzkopp, Für was schreibt man denn dann diesen roten Teil? Das verstehe ich jetzt nicht ganz. checko
-
Hi TDM, Ich verstehe nicht ganz, was du meinst mit Vielleicht kannst du mir es erklären. Das wäre sehr nett von dir. Gruß checko
-
Hi, Oh, das habe ich ja gar nicht gesehen. Vielen vielen Dank. @erster Beitrag: Ich benutze doch Arrays. Gruß checko
-
Hi, Ich bin neu hier und habe ein Problem mit meinem Programm. Das Programm soll aus einer in Arrays (sas1-8) eingelesenen Tabelle (8*22 Felder) die Differenzen von den Werten der benachbarten Spalten berechnen. Also Feld (0,0) - Feld (0,1) z.B. und das nur dann, wenn in keinem der beiden Felder 100 drinsteht. (if-BEdingung). Das Programm läuft zwar (die Zahlen in der Tabelle werden auch richtig eingelesen), aber die FOR-Schleife, in der die Differenzen berechnet werden, wird NICHT durchlaufen (zumindest zeigt er mir das STOP (rote Zeile) nicht an). Ich weiß einfach nicht woran das liegt. Vllt könnt ihr mir das sagen. Hier der Code: #include <stdio.h> #include <stdlib.h> int main () { int i; int j; int k; printf("Start \n"); double *sas1; double *sas2; double *sas3; double *sas4; double *sas5; double *sas6; double *sas7; double *sas8; double *dg0; double *dg1; double *dg2; double *dg3; double *dg4; double *dg5; double *dg6; // double *sasi; sas1=(double*) malloc(22*sizeof(double)); sas2=(double*) malloc(22*sizeof(double)); sas3=(double*) malloc(22*sizeof(double)); sas4=(double*) malloc(22*sizeof(double)); sas5=(double*) malloc(22*sizeof(double)); sas6=(double*) malloc(22*sizeof(double)); sas7=(double*) malloc(22*sizeof(double)); sas8=(double*) malloc(22*sizeof(double)); dg0=(double*) malloc(22*sizeof(double)); dg1=(double*) malloc(22*sizeof(double)); dg2=(double*) malloc(22*sizeof(double)); dg3=(double*) malloc(22*sizeof(double)); dg4=(double*) malloc(22*sizeof(double)); dg5=(double*) malloc(22*sizeof(double)); dg6=(double*) malloc(22*sizeof(double)); // sasi=(double*) malloc(15*sizeof(double)); printf("Einlesen der Daten\n"); FILE *fdata; fdata=fopen("tore","r"); for (i=0;i<22;i++) { fscanf(fdata,"%lf",&sas1[i]); fscanf(fdata,"%lf",&sas2[i]); fscanf(fdata,"%lf",&sas3[i]); fscanf(fdata,"%lf",&sas4[i]); fscanf(fdata,"%lf",&sas5[i]); fscanf(fdata,"%lf",&sas6[i]); fscanf(fdata,"%lf",&sas7[i]); fscanf(fdata,"%lf",&sas8[i]); } fclose(fdata); printf("Einlesen beendet\n"); printf("Berechnung der Differenzen\n"); for (j=0;i<22;i++) { dg0[j]=0; [COLOR="Red"]printf("STOP\n");[/COLOR] if (sas1[j]==100) {dg0[j]=100; printf("stimmt \n");} if (sas2[j]==100) {dg0[j]=100; printf("stimmt2 \n");} else {dg0[j]=sas2[j]-sas1[j]; printf("stimmt3 \n");} dg1[j]=0; if (sas2[j]==100) {dg1[j]=100;} if (sas3[j]==100) {dg1[j]=100;} else {dg1[j]=sas3[j]-sas2[j];} dg2[j]=0; if (sas3[j]==100) {dg2[j]=100;} if (sas4[j]==100) {dg2[j]=100;} else {dg2[j]=sas4[j]-sas3[j];} dg3[j]=0; if (sas4[j]==100) {dg3[j]=100;} if (sas5[j]==100) {dg3[j]=100;} else {dg3[j]=sas5[j]-sas4[j];} dg4[j]=0; if (sas5[j]==100) {dg4[j]=100;} if (sas6[j]==100) {dg4[j]=100;} else {dg4[j]=sas6[j]-sas5[j];} dg5[j]=0; if (sas6[j]==100) {dg5[j]=100;} if (sas7[j]==100) {dg5[j]=100;} else {dg5[j]=sas7[j]-sas6[j];} dg6[j]=0; if (sas7[j]==100) {dg6[j]=100;} if (sas8[j]==100) {dg6[j]=100;} else {dg6[j]=sas8[j]-sas7[j];} } printf("Berechnung beendet\n"); printf("Ausgabe:\n"); for (k=0;k<22;k++) { printf("k: %d \n", k); printf("0: %lf \n",dg0[k]); /*printf("1: %lf \n",dg1[k]); printf("2: %lf \n",dg2[k]); printf("3: %lf \n",dg3[k]); printf("4: %lf \n",dg4[k]); printf("5: %lf \n",dg5[k]); printf("6: %lf \n",dg6[k]); */ } /*printf("Schreiben der Ausgabedatei\n"); FILE *fdat; fdat=fopen("plot.dat","w"); for (k=0;k<22;k++) { if (dg0[k]==100) {continue;} if (dg1[k]==100) {continue;} else{ fprintf(fdat,"%lf %lf",dg0[k], dg1[k]); fprintf(fdat,"\n");} if (dg1[k]==100) {continue;} if (dg2[k]==100) {continue;} else{ fprintf(fdat,"%lf %lf",dg1[k], dg2[k]); fprintf(fdat,"\n");} if (dg2[k]==100) {continue;} if (dg3[k]==100) {continue;} else{ fprintf(fdat,"%lf %lf",dg2[k], dg3[k]); fprintf(fdat,"\n");} if (dg3[k]==100) {continue;} if (dg4[k]==100) {continue;} else{ fprintf(fdat,"%lf %lf",dg3[k], dg4[k]); fprintf(fdat,"\n");} if (dg4[k]==100) {continue;} if (dg5[k]==100) {continue;} else{ fprintf(fdat,"%lf %lf",dg4[k], dg5[k]); fprintf(fdat,"\n");} if (dg5[k]==100) {continue;} if (dg6[k]==100) {continue;} else{ fprintf(fdat,"%lf %lf",dg5[k], dg6[k]); fprintf(fdat,"\n");} } fclose(fdat); printf("Schreiben beendet\n"); */ printf("Auftrag ausgeführt\n"); return 0; } Schonmal vielen Dank im voraus. Ich hoffe auf eine schnelle Antwort. checko