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]

  • 01110111
    replied
    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

    Leave a comment:


  • Christian Marquardt
    replied
    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

    Leave a comment:


  • 01110111
    replied
    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.

    Leave a comment:


  • Christian Marquardt
    replied
    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

    Leave a comment:


  • 01110111
    replied
    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.

    Leave a comment:


  • Christian Marquardt
    replied
    Tolle Idee.
    Und was ist die Frage?

    Leave a comment:

Working...
X