Vektoren

Vektoren heißen in ganz vielen anderen Programmiersprachen auch "Arrays". Einzahl: Array, Vektor. In C sagt man dazu Vektor bzw. Vektoren.

Um den Vektor zu erklären, kannst Du Dir eine Tüte Gummibärchen vorstellen, und daneben eine Schachtel mit rohen Eiern. In der Tüte sind nur Gummibärchen und in der Schachtel nur Eier! Sie sind nicht durcheinander gewürfelt. So sind auch Vektoren: Ein Vektor besteht im einfachen Fall aus Variablen. In einem Vektor können also Variablen beispielsweise vom Typ int  (Integer - ganze Zahlen) zusammenstehen. So:

/* igel.c */
#include <stdio.h> //printf,scanf
#include <conio.h> //getch()
#include <stdlib.h> //srand, rand
#include <time.h> //srand
#include <string.h> //strcmp

char * wort[22];//Vektor mit 22 Worten, oder ein Vektor von 22 Zeichenketten
char eingabe[11];

const int WAHL = 5;

int main()
{
    srand(time(NULL)); //Zufall initialisieren
    wort[0] = "Igel";
    wort[1] = "Hase";
    wort[2]="Schnecke";
    wort[3]="Regenwurm";
    wort[4]="Dachs";
    wort[5]="Ente";
    wort[6]="Katze";
    wort[7]="Luchs";
    wort[8]="Eidechse";
    wort[9]="Hund";
    wort[10]="Pferd";
    wort[11]="Kuh";
    wort[12]="Tiger";
    wort[13]="Elefant";
    wort[14]="Schaf";
    wort[15]="Ziege";
    wort[16]="Wolf";
    wort[17]="Hirsch";
    wort[18]="Reh";
    wort[19]="Fuchs";
    wort[20]="Gans";
    wort[21]="Esel";
   
    //Ueberschrift:
    printf("Kannst Du Dir %d Tiere merken? Reihenfolge ist wichtig!\n", WAHL);
    printf("Beachte bitte auch die Rechtschreibung!\n");
    printf("-------------------------------------------------------------------\n");
   
    //Mischen:
    int i;
    for (i=0; i<22; i++)
    {
        int zufall = rand() % 22;
        char * temp = wort[i];
        wort[i] = wort[zufall]; //Tausch
        wort[zufall] = temp;
    }//for i
   
    //Anzeige:
    printf("-> ");
    int j;
    for (j=0; j<WAHL; j++)
         printf("  %s", wort[j]);
    //for j
    printf("\nBitte eine Taste tippen!");
    getch();
    printf("\n\n\n\n\n\n\n\n\n\n\n");
    printf("\n\n\n\n\n\n\n\n\n\n\n");
    printf("\n\n\n\n\n\n\n\n\n\n\n");
   
    int merker=0;
    printf("Alle %d aufschreiben (nach jedem Tier ENTER tippen!)", WAHL);
    //Eingabe:
    int m;
    for (m=0; m<WAHL; m++)
    {
        printf("-> ");
        scanf("%s", eingabe);
        if (strcmp(eingabe, wort[m])==0)
        {
            printf("  Gut.\n");
            merker ++;
        }//if
        else printf("   Nein, %s\n", wort[m]);
    }//for m
    printf("Einen Tastendruck bitte!\n");
    getch();
   
    printf("\n------------------------------------------------------------------------\n");
    switch (merker)
    {
        case 0: printf("Nicht traurig sein, war schlecht !0!!!!!"); break;
        case 1: printf("Nur ein Tier war richtig. ..."); break;
        case 2: printf("Immerhin zwei Richtige ..."); break;
        case 3: printf("Drei Tiere stimmten, das ist fast gut."); break;
        case 4: printf("Vier Richtige: Fast sehr gut !!!!!!!!!"); break;
        case 5: printf("!!!!! Hier ist die Sieger-Urkunde !!!!");
    }
    printf("\n------------------------------------------------------------------------");
    printf("\n\nBitte einen Tastendruck zum Beenden tippen!");
    getch();
    return 0;   
}//main Ende


Mastermind

Ich spiele hier das Mastermind mit vier verschiedenen Farben von sechs möglichen Farben.

//mindc.c Stand: 24. 1. 2016
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const int RATEREIHE=4;
const int MAX=6;
int geheim[]={1,2,3,4,5,6};

int main()
{
   int geraten[RATEREIHE];
   printf("Mastermind   4 von 6:         Die 9 bricht das Spiel ab.\n");
   printf("Blau=1, gelb=2, gruen=3, rot=4, braun=5, orange=6.\n");
   printf("Bitte je 4 Ziffern in einer Zeile eingeben. Beispiel:\n");
   printf("Ihr 1. Tipp, bitte: 1 Leertaste 2 Leertaste 5 Leertaste 6.\n");  
   system("pause");
   srand(time(NULL));
   //Mischen:
   int k;
   for (k=0; k<MAX; k++)
   {
        int zufall = rand()%MAX;
     int temp = geheim[k];
        geheim[k] = geheim[zufall];
        geheim[zufall] = temp;
   }

   //Tipps:
   int z;
   for (z=1; /* Luecke */ ; z++)
   {
        int schwarz=0;
        printf("Ihr %d. Tipp, bitte: ", z);
           int y;
           for (y=0; y<RATEREIHE; y++)
        {  scanf("%d", &geraten[y]);
        if (geraten[0]==9)
        {
        int v;
        for (v=0; v<RATEREIHE; v++) printf("%d", geheim[v]);
        printf("\n");
        system("pause");
        exit(0);
        }
   
        if (geraten[y]==geheim[y])
       schwarz++;
    
   }//for y
   printf("                               %d Schwarze", schwarz);
   if (schwarz==1) printf("r");
   if (schwarz==4)
     {
         printf("\nSie haben's geschafft ...\n");
         system("pause");
        exit(0);
     }
   int weiss=0;
   int x;
   for (x=0; x<3; x++)
    { if (geraten[x]==geheim[x+1]) weiss++;
     if (geraten[x+1]==geheim[x] ) weiss++;
 }//for x
 
   int w;
   for (w=0; w<2; w++)
    {
    if (geraten[w]==geheim[w+2]) weiss++;
    if (geraten[w+2]==geheim[w]) weiss++;
    }//for w
   if (geraten[0]==geheim[3]) weiss++;
   if (geraten[3]==geheim[0]) weiss++;
   printf(", %d Weisse", weiss);
   if (weiss==1) printf("r");
   printf("\n");
   }//for z 
//Kein return
}//main



Spiel ohne Namen

/* asozic.c
   vom 27. 02. 2016 */
#include <stdio.h>
#include <conio.h>//getche, getch
#include <time.h>//Zufall
#include <stdlib.h>//Zufall
#include <stdbool.h>//bool

const int MAX = 18;
const int OFFSET = 7;
const int AUSWAHL = 5;
bool gut = true;

struct einheit
{
    char* wort;
    char posneg;
};//struct einheit

int main()
{
   bool merker[MAX];
   struct einheit e[MAX];
   printf("Das Oberbegriff-Spiel ...........................");
   printf("\nBei diesem Spiel hast Du einen Bonus von %d", OFFSET);
   printf("\nUebungszeilen. Das heisst: Du darfst am Anfang");
   printf("\n%dx einfach nur raten, auch gerne falsch raten.", OFFSET);
   printf("\nGib plus (+) oder minus (-) ein hinter jedem Wort, das jetzt kommt!");
   printf("\nTaste bitte ...");
   getch();
   srand(time(NULL));//Zufall initialisieren
   int h; for(h=0; h<MAX; h++)
         e[h].posneg = (h%2)?'-':'+';// if (h % 2 != 0) e... = '-'; else e... = '+';
   int zufall = rand()%AUSWAHL;
   switch (zufall)
   {//0 ist Afrika:
       case 0: e[0].wort="Kairo";
    e[1].wort = "Alabama";
    e[2].wort = "Sahara";
    e[3].wort = "Gobi";
    e[4].wort = "Ghana";
    e[5].wort = "Nepal";
    e[6].wort = "Mali";
    e[7].wort = "Thailand";
    e[8].wort = "Nil";
    e[9].wort = "Kansas";
    e[10].wort = "Liberia";
    e[11].wort = "Kambodscha";
    e[12].wort = "Sambia";
    e[13].wort = "Maine";
    e[14].wort = "Gambia";
    e[15].wort = "Arkansas";
    e[16].wort = "Kenia";
    e[17].wort = "Jemen";break;
       // 1 ist USA:
    case 1: e[0].wort = "Alabama";
    e[1].wort = "Sahara";
    e[2].wort = "Maine";
    e[3].wort = "Gobi";
    e[4].wort = "Kansas";
    e[5].wort = "Nepal";
    e[6].wort = "Texas";
    e[7].wort = "Thailand";
    e[8].wort = "Oklahoma";
    e[9].wort = "Mali";
    e[10].wort = "Iowa";
    e[11].wort = "Kambodscha";
    e[12].wort = "Idaho";
    e[13].wort = "Sambia";
    e[14].wort = "Arkansas";
    e[15].wort = "Gambia";
    e[16].wort = "Utah";
    e[17].wort = "Jemen";break;
    // 2 ist Asien:
       case 2: e[0].wort = "Bangladesh";
    e[1].wort = "Alabama";
    e[2].wort = "Gobi";
    e[3].wort = "Sahara";
    e[4].wort = "Nepal";
    e[5].wort = "Nil";
    e[6].wort = "Thailand";
    e[7].wort = "Mali";
    e[8].wort = "Syrien";
    e[9].wort = "Kansas";
    e[10].wort = "Kambodscha";
    e[11].wort = "Tschad";
    e[12].wort = "Philippinen";
    e[13].wort = "Maine";
    e[14].wort = "Pakistan";
    e[15].wort = "Arkansas";
    e[16].wort = "Jemen";
    e[17].wort = "Kenia";break;
    // 3 ist Mittel- und Suedamerika:
       case 3: e[0].wort = "Peru";
    e[1].wort = "Kairo";
    e[2].wort = "Ecuador";
    e[3].wort = "Gobi";
    e[4].wort = "Lima";
    e[5].wort = "Nepal";
    e[6].wort = "Chile";
    e[7].wort = "Thailand";
    e[8].wort = "Falkland";
    e[9].wort = "Kansas";
    e[10].wort = "Panama";
    e[11].wort = "Kambodscha";
    e[12].wort = "Mexiko";
    e[13].wort = "Maine";
    e[14].wort = "Brasilien";
    e[15].wort = "Arkansas";
    e[16].wort = "Argentinien";
    e[17].wort = "Jemen";break;
    //4 ist Europa:
       case 4:    e[0].wort = "Paris";
    e[1].wort = "Pakistan";
    e[2].wort = "Bulgarien";
    e[3].wort = "Gobi";
    e[4].wort = "Frankreich";
    e[5].wort = "Nepal";
    e[6].wort = "England";
    e[7].wort = "Thailand";
    e[8].wort = "Irland";
    e[9].wort = "Kansas";
    e[10].wort = "Griechenland";
    e[11].wort = "Kambodscha";
    e[12].wort = "Rumaenien";
    e[13].wort = "Maine";
    e[14].wort = "Rhein";
    e[15].wort = "Nil";
    e[16].wort = "Donau";
    e[17].wort = "Jemen";
   }   //switch case
   int j;
   //Mischen:
   for(j=0; j<MAX; j++)
         {
             int zuf=rand()%MAX;
             struct einheit temp = e[j];
             e[j] = e[zuf];
             e[zuf] = temp;
      }//for Mischen
  //Abfrage:
  int i; for(i=0; i<MAX; i++)
     {
         char ein;
         do
             {
                 printf("\nWie entscheidest du dich? +- > %s ", e[i].wort);
                ein = getche();
             } while (ein != '+' && ein != '-'); //do-while
        if (ein == e[i].posneg) { printf(" Richtig."); merker[i] = true;  }
        else { printf(" Falsch."); merker[i] = false; }
     } // for i
   int k; for(k=OFFSET; k<MAX; k++)
        if (merker[k]==false) { gut=false; break; }
     
   if (gut==true) printf("\n\n----> Ja, du hast's erraten!!!");
   else printf("\n\n> Nein, einmal mindestens hast du dich verhauen.");
   printf("\nEs war in ");
   switch (zufall)
   {
       case 0: printf("Afrika.");break;
       case 1: printf("den USA.");break;
       case 2: printf("Asien.");break;
       case 3: printf("Mittel- und Suedamerika.");break;
       case 4: printf("Europa.");
   }
   printf("\nTaste bitte ...");
   getch();
   return 0;   
}//main()