Announcement

Collapse
No announcement yet.

csv Datei erstellen /Fakultät und Permutation (Sprache C )

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • csv Datei erstellen /Fakultät und Permutation (Sprache C )

    Hallo Zusammen,

    ich möchte eine csv Datei erstellen. Diese Datei soll in der Ersten Spalte eine gewisse Anzahl an Zuständen haben. z.B. 4374. Die zweite, dritte und vierte Spalte soll die Werte der Fakultät N = 3 (3! = 6) haben. (d.h. 012, 102, 201, 210, 021, 120). Die restlichen sechs Spalten können jeweils Werte von 0-2 annehmen (N=3).
    Das heißt die Erste Spalte besitzt nun z.B. die Zustände 1-6.
    1 012 000000
    2 102 000000
    3 201 000000
    4 210 000000
    5 021 000000
    6 120 000000
    7 012 000001
    8 102 000001
    9 201 000001
    10 210 000001
    11 021 000001
    12 120 000001
    usw.

    Habe die letzten 9 Spalten mittels for-Schleifen geschrieben und darum eine while-Schleife gesetzt, welche die Zustände angeben soll.

    [CODE]#include <stdio.h>

    int main()
    {

    int q = 1, x = 0, y = 0, z = 0;
    int a = 0, b = 0, c = 0;


    FILE *permutation=fopen("testn3.csv","w+");

    fprintf(permutation, "Zustand; N; a; b; c;\n");

    {


    while(q <= 4374){

    for(a=0; a<=3; a++)
    {
    for(b=0; b<=3; b++)
    {
    for(c=0; c<=3; c++)
    {


    for (x = 0; x <= 3; x++)
    {

    for (y = 0; y <= 3; y++)
    {

    for (z = 0; z <= 3; z++)
    {



    {


    fprintf(permutation, "%d %25d %d %d %30d %30d %30d\n",
    q,a,b,c,x,y,z);

    q++;

    }


    }

    }
    }

    }

    }
    }
    }
    }
    }
    /CODE]

  • #2
    Tolle Idee.
    Und was ist die Frage?
    Christian

    Comment


    • #3
      Stimmt hätte ich noch dazu schreiben sollen
      Mein Problem ist, dass es nicht so läuft wie es laufen soll.
      Die Ausgabe sieht folgendermaßen aus:

      Bildschirmfoto 2017-10-01 um 14.52.40.jpg
      Bildschirmfoto 2017-10-01 um 14.53.06.jpg
      Zuletzt editiert von 01110111; 01.10.2017, 15:02.

      Comment


      • #4
        Auf den Screenshot ist nichts zu erkennen (was ist daran falsch?) und

        dass es nicht so läuft wie es laufen soll.
        ist kein Fehler.

        a) schaue dir die Datei in einem Texteditor an, denn der ist maßgebend und nicht was irgendeine Tabellenverarbeitung daraus macht
        b) wie wäre es mit einer Fehlerbeschreibung
        Christian

        Comment


        • #5
          Die Zeilen der Werte N=3 durchlaufen die Ausgabe 000 64 mal. Es sollen jedoch nur 6 Durchlaufe der jeweiligen Möglichkeiten untereinander erscheinen.
          Aber die Datei soll ja in einer csv Datei ausgegeben werden.

          Comment


          • #6
            Die Zeilen der Werte N=3 durchlaufen die Ausgabe 000 64 mal. Es sollen jedoch nur 6 Durchlaufe der jeweiligen Möglichkeiten untereinander erscheinen.
            Dann stimmt wohl etwas mit der Programmierung nicht

            http://www.cplusplus.com/reference/a...t_permutation/

            Zerlege das in Teilprobleme
            - Datei öffnen
            - Schleife
            - Wert(e) nehmen
            - Ergebniswerte berechnen
            - in Datei schreiben
            - Schleifenende
            - Datei schließen

            Dabei werden entsprechende Funktionen wie berechneFakultät(wert) aufgerufen und der Code strukutriert

            Aber die Datei soll ja in einer csv Datei ausgegeben werden.
            CSV = Comma Seperated Values
            Das hat nix mit irgendeiner Tabellenkalulation zu tun. Die kann das zwar lesen, aber das ist TXT
            Christian

            Comment


            • #7
              Ich habe mein Programm jetzt mal umgeschrieben, aber erhalte immer noch nicht die perfekte Ausgabe. Hast du vielleicht ne Idee bzw. erkennst den Fehler?
              Code:
              #include <stdio.h>
              
              void swap(int *x1,int *x2)
              	{
              		int x=*x1;
              		*x1=*x2;
              		*x2=x;
              	}
              	void per(int *arr,int st,int ls)
              	{
              		int i=0;
              		if(st==ls)
              		{
              			int k;
              			for(k=0;k<ls;k++)
              			{
              				//printf("%d ",arr[k]);
              			}
              		//printf("\n");
              	}
              		else
              		{
              			for(i=st;i<ls;i++)
              			{
              				swap(arr+st,arr+i);
              				per(arr,st+1,ls);
              				swap(arr+st,arr+i);
              			}
              		}
              }
              
              int main()
              {
              	
              	//FILE *permutation=fopen("testpermutation.csv","w+");
              			
              			//fprintf(permutation, "Zustand; N; a; b; c;\n");
              			
              	int arr[3]={0,1,2};
              	int st=0;
              	int ls=3;
                  per(arr,st,ls);
              	int c0, c1, c2, c3;
              	int n = 0;
              	
              	
              	for (char c0 = '0'; c0 <= '2'; c0++)
              			for (char c1 = '0'; c1 <= '2'; c1++)
              				for (char c2 = '0'; c2 <= '2'; c2++)
              				  //for (char c3 = '0'; c3 <= '3'; c3++)
              	for (size_t i = 0; i < sizeof (arr) / sizeof (*arr); i++)
              	
              		printf ("%4d: %d %c%c%c\n", ++n ,arr[i], c0, c1, c2);
              	
              	//fprintf(permutation, "%d %d %d %d %d\n");
              }
              Meine Ausgabe:

              1: 0 000
              2: 1 000
              3: 2 000
              4: 0 001
              5: 1 001
              6: 2 001
              7: 0 002
              8: 1 002
              9: 2 002
              10: 0 010
              11: 1 010
              12: 2 010
              13: 0 011
              14: 1 011
              15: 2 011
              16: 0 012
              17: 1 012
              18: 2 012
              19: 0 020
              20: 1 020
              21: 2 020
              22: 0 021
              23: 1 021
              24: 2 021
              25: 0 022
              26: 1 022
              27: 2 022
              28: 0 100
              29: 1 100
              30: 2 100
              31: 0 101
              32: 1 101
              33: 2 101
              34: 0 102
              35: 1 102
              36: 2 102
              37: 0 110
              38: 1 110
              39: 2 110
              40: 0 111
              41: 1 111
              42: 2 111
              43: 0 112
              44: 1 112
              45: 2 112
              46: 0 120
              47: 1 120
              48: 2 120
              49: 0 121
              50: 1 121
              51: 2 121
              52: 0 122
              53: 1 122
              54: 2 122
              55: 0 200
              56: 1 200
              57: 2 200
              58: 0 201
              59: 1 201
              60: 2 201
              61: 0 202
              62: 1 202
              63: 2 202
              64: 0 210
              65: 1 210
              66: 2 210
              67: 0 211
              68: 1 211
              69: 2 211
              70: 0 212
              71: 1 212
              72: 2 212
              73: 0 220
              74: 1 220
              75: 2 220
              76: 0 221
              77: 1 221
              78: 2 221
              79: 0 222
              80: 1 222
              81: 2 222

              Soll - Ausgabe:

              1: 012 000
              2: 102 000
              3: 201 000
              4: 210 000
              5: 021 000
              6: 120 000
              7: 012 001
              8: 102 001
              9: 201 001
              10: 210 001
              11: 021 001
              12: 120 001
              13: 012 002
              14: 102 002
              15: 201 002
              16: 210 002
              17: 021 002
              18: 120 002
              19: 012 010
              20: 102 010
              21: 201 010
              22: 210 010
              23: 021 010
              24: 120 010
              25: 012 011
              26: 102 011
              27: 201 011
              28: 210 011
              29: 021 011
              30: 120 011
              31: 012 012
              32: 102 012
              33: 201 012
              34: 210 012
              35: 021 012
              36: 120 012
              37: 012 020
              38: 102 020
              39: 201 020
              40: 210 020
              41: 021 020
              42: 120 020
              43: 012 021
              44: 102 021
              45: 201 021
              46: 210 021
              47: 021 021
              48: 120 021
              49: 012 022
              50: 102 022
              51: 201 022
              52: 210 022
              53: 021 022
              54: 120 022
              55: 012 100
              56: 102 100
              57: 201 100
              58: 210 100
              59: 021 100
              60: 120 100
              61: 012 101
              62: 102 101
              63: 201 101
              64: 210 101
              65: 021 101
              66: 120 101
              67: 012 102
              68: 102 102
              69: 201 102
              70: 210 102
              71: 021 102
              72: 120 102
              73: 012 110
              74: 102 110
              75: 201 110
              76: 210 110
              77: 021 110
              78: 120 110
              79: 012 111
              80: 102 111
              81: 201 111
              82: 210 111
              83: 021 111
              84: 120 111
              85: 012 112
              86: 102 112
              87: 201 112
              88: 210 112
              89: 021 112
              90: 120 112
              91: 012 120
              92: 102 120
              93: 201 120
              94: 210 120
              95: 021 120
              96: 120 120
              97: 012 121
              98: 102 121
              99: 201 121
              100: 210 121
              101: 021 121
              102: 120 121
              103: 012 122
              104: 102 122
              105: 201 122
              106: 210 122
              107: 021 122
              108: 120 122
              109: 012 200
              110: 102 200
              111: 201 200
              112: 210 200
              113: 021 200
              114: 120 200
              115: 012 201
              116: 102 201
              117: 201 201
              118: 210 201
              119: 021 201
              120: 120 201
              121: 012 202
              122: 102 202
              123: 201 202
              124: 210 202
              125: 021 202
              126: 120 202
              127: 012 210
              128: 102 210
              129: 201 210
              130: 210 210
              131: 021 210
              132: 120 210
              133: 012 211
              134: 102 211
              135: 201 211
              136: 210 211
              137: 021 211
              138: 120 211
              139: 012 212
              140: 102 212
              141: 201 212
              142: 210 212
              143: 021 212
              144: 120 212
              145: 012 220
              146: 102 220
              147: 201 220
              148: 210 220
              149: 021 220
              150: 120 220
              151: 012 221
              152: 102 221
              153: 201 221
              154: 210 221
              155: 021 221
              156: 120 221
              157: 012 222
              158: 102 222
              159: 201 222
              160: 210 222
              161: 021 222
              162: 120 222

              Comment

              Working...
              X