- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: C-Programm ("Figuren speichern")

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    03.12.2004
    Beiträge
    11
    Anzeige

    LiFePo4 Akku selber bauen - Video
    *freu*

    habe es jetzt schon so zimlich fertig, bis auf die "import"-funktion, die wir aber noch nicht machen mussten!!!

    danke NumberFive füe deine hilfe

    MfG
    baldi123

    PS: der fertige Code:
    Code:
    //   Programm...: figuren.c
    //  Ersteller...: Baldinger Patrick
    //      Datum...: 14.02.05
    //
    // Zweck...: Verwaltung der Figuren-DB
    //
    //
    
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    #include <stdlib.h>
    
    struct TFigur
    {
        char  name[30];		// Name der Figur
        int   xpos;			// X-Position auf dem Feld (0...1000)
        int   ypos;			// Y-Position auf dem Feld (0...1000)
        int   energie;		// Lebensenergie 0...100
        int   typ;			// A=Mensch Z=Zwerg E=Elb O=Ork M=Magier H=Hobbit
    };
    
    //Globale Variable und Konstante
    const int ARRLEN = 10;  		// Länge des Figuren-Array
    int ACTLEN = 0;					// nächste freie Stelle im Array
    int saveit = 0;					// Merker: Wenn Änderugen, dann speichern vor Ende
    struct TFigur figuren[ARRLEN]; 	// Figuren-Array
    char datei[] = "figur1";		// Name der Datei in der die Datensätze gespeichert werden
    
    // Funktionsprototypen
    void Insert(void);
    int  InsertRecord(struct TFigur);
    void Delete(void);
    void Save(void);
    void Import(void);
    void Load(void);
    void Display(void);
    
    // Hauptprogramm
    void main(void)
    {
    
        char  iAuswahl;
        Load();			// Beim Programmstart eventuell vorhandene Datensätze aus Datei laden
    
        do
        {
            system("CLS");							// Bildschirm löschen
            printf("    Funktion auswaehlen\n");
            printf("    ===================\n\n");
            printf("    1...Figur anlegen\n");
            printf("    2...Figur loeschen\n");
            printf("    3...Figuren anzeigen\n");
            printf("    4...Speichern\n");
            printf("    5...Import\n\n");
            printf("    0...beenden\n\n");
    
            printf("Auswahl -> ");
            fflush(stdin);							// Tastaturpuffer leeren
            scanf("%i",&iAuswahl);
    
            switch(iAuswahl)
            {
                case 1:
                    Insert();
                    break;
                case 2:
                    Delete();
                    break;
                case 3:
                    Display();
                    break;
                case 4:
                    Save();
                    break;
                case 5:
                    Import();
                    break;
                case 0:
                    if (saveit)
                    {
                        iAuswahl = 99;
                        printf("\n\aBitte Daten zuerst speichern!\n");
                        system("pause");
                    }
                    break;
                default:
                    printf("\n\aUngueltige Auswahl!\n");
                    system("pause");
            }
    
        } while (iAuswahl != 0);
    
        printf("\n\nPROGRAMM-ENDE!\n\n");
    
        return;
    }
    
    void Insert(void)
    {
        // Liest die Daten einer Figur in die Struktur f1 ein. Zum eigentlichen Einfügen der Daten in das
        // Array wird die Funktion InsertRecord aufgerufen. Der Rückgabewert von InsertRecord wird
        // In der Funktion Insert() nicht behandelt.
    
    	struct TFigur f1;
    	int y;
    
    	saveit = 1;   // Datenbank wird verändert
    
    	printf("   Name: ");
    	scanf("%s",&f1.name);
    
    	printf("    Typ: ");
    	scanf("%s",&f1.typ);
    
    	printf("  X-Pos: ");
    	scanf("%i",&f1.xpos);
    
    	printf("  Y-Pos: ");
    	scanf("%i",&f1.ypos);
    
    	printf("Energie: ");
    	scanf("%i",&f1.energie);
    
    	y = InsertRecord(f1);
    
    	printf("\nDatensatz eingefuegt - %i Saetze sind vorhanden\n",ACTLEN);
        system("pause");
    	return;
    }
    
    int InsertRecord(struct TFigur f)
    {
        // Fügt einen neuen Datensatz am Ende des Arrays "figuren" ein
        // Rückgabewert InsertOK:	1...Falls der Satz eingefügt werden kann
    	//		                    0...Wenn Puffer voll, nicht eingefügt
    	//						   -1...Wenn Figur schon vorkommt, nicht eingefügt
        // Eingabeparameter f:		Strukturvariable f, wird in Array "figuren" eingefügt
    	// Die Funktion InsertRecord() darf keinerlei Ausgaben machen, da sie auch bei der
    	// Importfunktion aufgerufen wird.
    
    	int InsertOK = 1;   // Standardvoraussetzung
    	int ctr;   // Kontrollhilfszeichen
    	int p;
    
    	if(ACTLEN<10)
    	{
    
             for(p = 0; p < ACTLEN; p++)
            {
                 if(strcmp(figuren[p].name,f.name) == 0)
                 {
                      return -1;
                 }
             }
    
    		 figuren[ACTLEN] = f;
    
    		 ACTLEN++;
    	}
    	else
    	{
            InsertOK = 0;
    	}
    
    	return InsertOK;
    
    }
    
    void Save(void)
    {
        // Diese Funktion schreibt den Inhalt des Arrays "figuren" in die Datei
        // Es wird angezeigt, wieviele Sätze in die Datei gespeichert wurden
        // Der Merker "saveit" wird auf 0 gesetzt
    
    	FILE *out;
    	int i;
    
    	out = fopen(datei,"wb");
    	if (out == NULL)
    	{
    		printf("\nDie Datei kann nicht geoeffnet werden! - Keine Saetze geschrieben!");
    	}
    	else
    	{
    		for (i = 0; i < ACTLEN; i++)
    		{
    			fwrite(&figuren[i],sizeof(figuren[i]),1,out);
    		}
    		fclose(out);
    		printf("\nEs wurden %i Datensaetze eingeschrieben\n",i);
    		saveit = 0;
    	}
    
    	system("pause");
    	return;
    }
    
    void Load(void)
    {
        // Diese Funktion wird beim Programmstart aufgerufen und liest bereits vorhandene
        // Datensätze in das Array "figuren" ein.
        // Am Ende wird die Anzahl der gelesenen Sätze angezeigt
    
    	FILE *in;
    	struct TFigur f;   // Variable auf TFigur zum Einlesen
    	int counter = 0;
    
    	in = fopen(datei,"rb");
    	if (in == NULL)
    	{
    		printf("\nDie Datei kann nicht geoeffnet werden! - Keine Saetze geladen!");
    	}
    	else
    	{
    		fread(&f,sizeof(f),1,in);
    		while(!feof(in))
    		{
    			counter++;
    			figuren[ACTLEN++] = f;
    			fread(&f,sizeof(f),1,in);
    		}
    		fclose(in);
    		printf("Es wurden %i Datensaetze eingelesen\n",counter);
    	}
    
    	system("pause");
        return;
    }
    
    void Display(void)
    {
        // Diese Funktion zeigt die Datensätze im Array "figuren" an
        // Am Ende wird die Anzahl der angezeigten Sätze angezeigt
    
    	int i;
    	printf("\nName der Figur       Typ XPos YPos Energie\n");
    	for (i = 0; i < ACTLEN; i++)
    	{
    		printf("%-21s",figuren[i].name);
    		printf(" %c ",figuren[i].typ);
    		printf("%5i",figuren[i].xpos);
    		printf("%5i",figuren[i].ypos);
    		printf("%5i\n",figuren[i].energie);
    	}
    	printf("\nEs wurden %i Datensaetze angezeigt!\n",i);
    	system("pause");
        return;
    }
    
    void Delete(void)
    {
        // Es wird der Name der Figur eingelesen. Diese wird dann im Array gesucht.
        // Falls sie gefunden wird, wird sie aus dem Array entfernt. Alle Arrayelemente
        // rechts des gelöschten Elements werden um eine Position nach links verschoben
        // Im Falle des Löschens muss die Variable ACTLEN um eins vermindert werden und
        // ebenso muss die Variable "saveit" gesetzt werden
    
        return;
    }
    
    void Import(void)
    {
        // Liest den Namen einer Textdatei (CSV-Datei) ein, in der die einzelnen Werte durch ';' getrennt stehen
        // Die Reihenfolge der Werte entspricht der Reihenfolge der Daten in der Struktur
        // Die eingelesene Zeichenkette soll an die Funktion Analyse() übergeben werden. Analyse() liefert
        // als Rückgabewert die einzelnen Werte in einer Variable vom Typ TFigur
        // Zum Einfügen in das Array soll wiederum die Funktion InsertRecord() verwendet werden. Ist das Array
        // "figuren" voll (wird durch den Rückgabewert von InsertRecord() angezeigt), dann muss der Importvorgang
        // abgebrochen werden
    
        return;
    }
    
    struct TFigur Analyze(char t[])
    {
    	// Zerlegt den Eingabestring t in die Komponenten
    	// ->Name
    	// ->Typ
    	// ->XPosition
    	// ->YPosition
    	// ->Energie
    	// und gibt diese in der Strukturvariable RetVal zurück
    
    	struct TFigur RetVal;
    
    	return RetVal;
    }

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    brauchst du jetzt noch was oder nicht ?
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    03.12.2004
    Beiträge
    11
    nein danke, brauche nichts mehr

    MfG
    baldi123

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests