Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: csv Datei erstellen /Permutation (Sprache C )

  1. #1
    Neuer Benutzer
    Registriert seit
    01.10.2017
    Beiträge
    4

    Standard csv Datei erstellen /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]

    Klicken Sie auf die Grafik für eine größere Ansicht

Name:	Bildschirmfoto 2017-10-01 um 14.52.40.png
Hits:	4
Größe:	80,1 KB
ID:	204
    Klicken Sie auf die Grafik für eine größere Ansicht

Name:	Bildschirmfoto 2017-10-01 um 14.53.06.png
Hits:	1
Größe:	32,1 KB
ID:	205

    Leider erhalte ich nicht die gewünschte Ausgabe. Siehe Dateianhang.

    Könnte mir hier jemand vielleicht weiterhelfen?
    Wäre euch sehr dankbar!

  2. #2
    Neuer Benutzer
    Registriert seit
    01.10.2017
    Beiträge
    4

    Standard

    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 <= 162){
    		
    	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++;
    							
    										}
    				
    						
    								 	}
    						
    								}
    							}
    				
    						 }
    				
    						}
    						}
    						}
    						}
    						}

  3. #3
    Neuer Benutzer
    Registriert seit
    01.10.2017
    Beiträge
    4

    Standard

    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 <= 162){
    		
    	for(a=0; a<=2; a++)
    	{ 
    			for(b=0; b<=2; b++)
    				{ 
    					for(c=0; c<=2; c++)
    						{ 
    						
    			
    			for (x = 0; x <= 2; x++)
    					{
    						
    						for (y = 0; y <= 2; y++)
    							{
    								
    							for (z = 0; z <= 2; z++)
    								{
    							
    																
    				
    					{
    						
    						
    					fprintf(permutation, "%d %25d %d %d %30d %30d %30d\n", 
    					q,a,b,c,x,y,z);
    					
    				    q++;
    							
    										}
    				
    						
    								 	}
    						
    								}
    							}
    				
    						 }
    				
    						}
    						}
    						}
    						}
    						}

  4. #4
    CodePlanet Staff Avatar von StarShaper
    Registriert seit
    10.09.2005
    Beiträge
    54

    Standard

    Hallo!

    Ich habe nicht verstanden, was du in der Spalte 2 - 5 darstellen willst? Die Fakultät von was? In deinem Code ist von Permutationen die Rede. Permutation und Fakultät sind zwei paar Stiefel. Eine Permutation von welcher Menge soll dargestellt werden?

  5. #5
    Neuer Benutzer
    Registriert seit
    01.10.2017
    Beiträge
    4

    Standard

    Hi,

    habe den Code noch einmal umgeschrieben.

    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(void)
    {
    	
    	//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");
    }

    Die Ausgabe soll folgende sein:

    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

    Aber mein Programm gibt dies leider nicht aus.

  6. #6
    Neuer Benutzer
    Registriert seit
    06.10.2017
    Beiträge
    6

    Standard

    Er möchte so verstehe ich es: Das der Stellwert sich in Spalte 2 bis Zeile 6 mit den Zahlen 0,1,2 in der angegebenen Reihenfolge ändert(permutation). Ab Zeile 7 fängt es von vorn an. In Spalte 3 wird nach jeder 6. Zeile in Spalte 3 ein Flag gesetzt was sich auch nach der 6. Zeile ändert
    Geändert von maxel22 (06.10.2017 um 05:12 Uhr)

  7. #7
    CodePlanet Staff Avatar von StarShaper
    Registriert seit
    10.09.2005
    Beiträge
    54

    Standard

    Spalte 1: Fortlaufende Nummer 1,2,3, .... (n+1)
    Spalte 2: Permutation aus 3 Zahlen (0,1,2), also 3! = 6
    Spalte 3: ?

    Spalte 3 bleibt unklar.

  8. #8
    Neuer Benutzer
    Registriert seit
    06.10.2017
    Beiträge
    6

    Standard

    Sieht man doch das 3. Feld ist auch eine Permutation aus 3 Zahlen.

  9. #9
    CodePlanet Staff Avatar von StarShaper
    Registriert seit
    10.09.2005
    Beiträge
    54

    Standard

    Zitat Zitat von maxel22 Beitrag anzeigen
    Sieht man doch das 3. Feld ist auch eine Permutation aus 3 Zahlen.
    Die 3. Spalte ist keineswegs einfach nur eine Permutation aus 3 Zahlen, sonst gäbe es nicht die folgenden Zeilen in seinem Beispiel:

    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
    In den ersten 6 Zeilen besteht die 3 Spalte immer aus drei 0. Danach steht immer eine 001 am Anfang. Das kann keine Permutation sein. Bei einer Permutation verändert sich die Anordnung von Objekten in einer bestimmten Reihenfolge. Demnach müsste die 1 wandern, tut sie aber nicht.

    Die 3. Spalte ändert sich anscheinend immer nach 6 Elementen, also nach n! der 2. Spalte.

    Man kann sich ungefähr denken, was die 3. Spalte sein kann, nämlich der Ausdruck der in Spalte 2 dargestellten Elemente. Diese werden nach jeder 6 Iteration zuerst an 1 Stelle (von rechts nach links), dann an 2 und dann an 3 Stelle durchgetauscht bis alle Stellen die größte Zahl haben, also 222 in dem Beispiel oben.

    Aber der TE sollte einfach mal selbst die Bildungsvorschrift erklären, statt das wir hier versuchen zu erklären, was er haben will.
    Geändert von StarShaper (08.10.2017 um 12:01 Uhr)

  10. #10
    Neuer Benutzer
    Registriert seit
    06.10.2017
    Beiträge
    6

    Standard

    Ja Stimmt ist keine Permutation in der 3. Spalte, naja man sieht aber was er wollte.

    Die Aufgaben zu beschreiben viel mir auch oft schwer, recht hast Du aber er sollte es richtig beschreiben.
    Geändert von maxel22 (08.10.2017 um 22:42 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •