# C Suche in den vorhanden Daten



## Lacritz (5. Jan 2014)

Heyho,
 ich hab derzeitig mit meinem C Programm einige Probleme!
 Was soll das Programm können?
 Einen Buchstaben einlesen und schauen ob in dem Falle die spezialkost == dem Buchstaben ist - wenn ja soll er noch schauen ob der centpreisStud mit dem vorhanden Budget zu haben wäre. Wenn ja soll er hier einfach das Datum und Namen des Gerichtes in der Konsole ausgeben!

Da ich absoluter C Neuling bin und nur versuche einem Freund mit meinem vorhandenen Java Wissen ein wenig zu Helfen ,hoffe ich das ihr nicht zu Hart zu mir seid falls größere Syntax Fehler auftreten.

Ich Bitte dringend um Hilfe!

MfG Lacritz

Der Code:

#include <stdio.h>

typedef int ISO8601_JJJJMMTT[3];

typedef struct
{
    char bezeichnung[100];
    char spezialkost;
    int zusatzstoffe[3];
    int centpreisStud;
    int centpreisBed;
    char zusatz[20];
    } Mensa_Essen;

  typedef struct
  {
     int t;
     ISO8601_JJJJMMTT datum;
     Mensa_Essen essen1_4[4];
  }Mensa_Tag;

int main (void) {

  int i,geld,l,m=0;
  char buchstabe;

  Mensa_Tag essen[4] = 

  {

  {1,{2014,1,8},
  {  
  {"Essen 1: Hähnchendöner mit Balkangemüse ",' ', 
  {15,19,0},100,280},    
  {"Essen 2: Tortellini mit Ricotta-Spinat-Füllung ",'F', 
  {3,11,12},120,270},
  {"Essen 3: Grüner Erbseneintopf",'V', 
  {2,3,11},110,240},
  { "Essen 4: Spinatreis mit Chili Paprika-Dip Parmesan",' ', 
  {1,0,0},240,380},
  }},

  {2,{2014,1,9},
  {
  {"Essen 1: Wirsingroulade mit Hackfleischfüllung ", 'S' , 
  {2,6,12},100,280},
  {"Essen 2: Italienisches Gemüserisotto", 'F' , 
  {1,3,11},120,270},
  {"Essen 3: Gemüseeintopf Weizenbrötchen", 'V' , 
  {3,12,0},110,240}, 
  {"Essen 4:Rinderhüftsteak Sauce béarnaise", 'R' , 
  {11,12,0},535,675},
  }},

  {3,{2014,1,10},
  {
  {"Essen 1: Drei Jumbo Fischstäbchen in Knusperpanade ", ' ' , 
  {0,9,12},120,310},
  {"Essen 2: Gnocchi mit Pestosauce", 'F' ,   
  {12,3,11},120,270}, 
  {"Essen 3: Linseneintopf Weizenbrötchen", 'V' , 
  {3,2,11},110,240},
  {"Essen 4: Linseneintopf Weizenbrötchen", 'V' , 
  {3,2,11},110,240}, 
  }},

  {4,{2014,1,13},
  {
  {"Essen 1: Cordon bleu mit Käse-Schinken-Füllung ", 'S' , 
  {2,3,11},100,280},
  {"Essen 2aprikaschote mit Sojafüllung Tomatensauce", 'F' , 
  {12,3,11},120,270},
  {"Essen 3: Gelber Erbseneintopf Weizenbrötchen", 'V' , 
  {3,11,2},110,240},
  {"Essen 4:Hähnchenbruststreifen Kokos-Curry-Sauce ", ' ' , 
  {11,12,0},335,475},
    }}};  




  printf ("Bitte geben Sie ");
  scanf ("%c", &buchstabe);
  fflush(stdin);
  scanf ("%i", &geld);
  fflush(stdin);

  for (i=0; i<4; i++)
  {
  for (l=1; l<3; l++) 
  {
    if(essen[i-1].essen1_4[l].spezialkost[l] == buchstabe)
    {
      if(essen[i-1].essen1_4[l].centpreisStud < geld)
      {
        printf("%02i.%02i.%i\n",
               essen[i-1].datum[i-1]);
        printf ("%s\n",essen[i-1].bezeichnung[i-1]);
  }



  m=0;

  }}};  

  return 0;
  }


----------



## knilch (11. Jan 2014)

Hi,
Hier mal ein Beispiel:

```
/*
 ============================================================================
 Name        : Beispiel.c
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : Beispiel in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int ISO8601_JJJJMMTT[3];

typedef struct {
	char bezeichnung[100];
	char spezialkost;
	int zusatzstoffe[3];
	int centpreisStud;
	int centpreisBed;
	char zusatz[20];
} Mensa_Essen;

typedef struct {
	int t;
	ISO8601_JJJJMMTT datum;
	Mensa_Essen auswahl[4];
} Mensa_Tag;

// Deklaration der Funktionen
void initMensaEssenStruct(int, int, ISO8601_JJJJMMTT, char*, char, int[], int, int, char*);
void setup(void);


Mensa_Essen essen;
Mensa_Tag tag[4];

int main (void) {
	int i;
	int l;
	int geld;
	char buchstabe;

	setup();

	printf ("Bitte geben Sie einen Buchstaben ein: ");
	scanf ("%c", &buchstabe);
	fflush(stdin);
	printf("Bitte geben Sie einen Betrag ein: ");
	scanf ("%i", &geld);
	fflush(stdin);

	for (i = 0; i < 4; i++) {
		for (l = 0; l < 4; l++) {
			if(tag[i].auswahl[l].spezialkost == buchstabe) {
				if(tag[i].auswahl[l].centpreisStud < geld) {
					printf("%d.%d.%d\n", tag[i].datum[2], tag[i].datum[1], tag[i].datum[0]);
					printf ("%s\n", tag[i].auswahl[l].bezeichnung);
				}
			}
		}
	}
	return 0;
}

/**
 * Funktion um die essen zu initialisieren
 */
void setup() {
	ISO8601_JJJJMMTT date1 = {2014, 1, 11};
	int zusatz1[3] = {15,19,0};
	initMensaEssenStruct(0, 0, date1, "Essen 1: Hähnchendöner mit Balkangemüse", ' ', zusatz1, 100, 280, "nichts");
	int zusatz2[3] = {3,11,12};
	initMensaEssenStruct(0, 1, date1, "Essen 2: Tortellini mit Ricotta-Spinat-Füllung", 'V', zusatz2, 120, 270, "nichts");
	int zusatz3[3] = {2,3,11};
	initMensaEssenStruct(0, 2, date1, "Essen 3: Grüner Erbseneintopf", 'F', zusatz3, 110, 240, "nichts");
	int zusatz4[3] = {1,0,0};
	initMensaEssenStruct(0, 3, date1, "Essen 4: Spinatreis mit Chili Paprika-Dip Parmesan", 'S', zusatz4, 240, 380, "nichts");


	ISO8601_JJJJMMTT date2 = {2014, 1, 12};
	int zusatz5[3] = {2,6,12};
	initMensaEssenStruct(1, 0, date2, "Essen 1: Wirsingroulade mit Hackfleischfüllung", 'S', zusatz5, 100, 280, "nichts");
	int zusatz6[3] = {1,3,11};
	initMensaEssenStruct(1, 1, date2, "Essen 2: Italienisches Gemüserisotto", 'F', zusatz6, 120, 270, "nichts");
	int zusatz7[3] = {3,12,0};
	initMensaEssenStruct(1, 2, date2, "Essen 3: Gemüseeintopf Weizenbrötchen", 'V', zusatz7, 110, 240, "nichts");
	int zusatz8[3] = {11,12,0};
	initMensaEssenStruct(1, 3, date2, "Essen 4:Rinderhüftsteak Sauce béarnaise", 'R', zusatz8, 535, 675, "nichts");


	ISO8601_JJJJMMTT date3 = {2014, 1, 13};
	int zusatz9[3] = {0,9,12};
	initMensaEssenStruct(2, 0, date3, "Essen 1: Drei Jumbo Fischstäbchen in Knusperpanade", ' ', zusatz9, 100, 280, "nichts");
	int zusatz10[3] = {12,3,11};
	initMensaEssenStruct(2, 1, date3, "Essen 2: Gnocchi mit Pestosauce", 'F', zusatz10, 120, 270, "nichts");
	int zusatz11[3] = {15,19,0};
	initMensaEssenStruct(2, 2, date3, "Essen 3: Linseneintopf Weizenbrötchen", 'V', zusatz11, 110, 240, "nichts");
	int zusatz12[3] = {3,2,11};
	initMensaEssenStruct(2, 3, date3, "Essen 4: Linseneintopf Weizenbrötchen", 'V', zusatz12, 535, 675, "nichts");


	ISO8601_JJJJMMTT date4 = {2014, 1, 14};
	int zusatz13[3] = {0,9,12};
	initMensaEssenStruct(3, 0, date4, "Essen 1: Cordon bleu mit Käse-Schinken-Füllung", 'S', zusatz13, 100, 280, "nichts");
	int zusatz14[3] = {12,3,11};
	initMensaEssenStruct(3, 1, date4, "Essen 2:Paprikaschote mit Sojafüllung Tomatensauce", 'F', zusatz14, 120, 270, "nichts");
	int zusatz15[3] = {15,19,0};
	initMensaEssenStruct(3, 2, date4, "Essen 3: Linseneintopf Weizenbrötchen", 'V', zusatz15, 110, 240, "nichts");
	int zusatz16[3] = {3,2,11};
	initMensaEssenStruct(3, 3, date4, "Essen 4:Hähnchenbruststreifen Kokos-Curry-Sauce", ' ', zusatz16, 535, 675, "nichts");
}

/**
 * Funktion zum hinzufügen von essen für einen Tag
 */
void initMensaEssenStruct(int n, int m, ISO8601_JJJJMMTT date, char* bezeichnung, char spezialkost, int zusatzstoffe[] , int centpreisStud, int centpreisBed, char *zusatz) {
	Mensa_Essen e1;
	strcpy(e1.bezeichnung, bezeichnung);
	e1.spezialkost = spezialkost;
	memcpy(&e1.zusatzstoffe, &zusatzstoffe, 3*sizeof(int));
	e1.centpreisStud = centpreisStud;
	e1.centpreisBed = centpreisBed;
	strcpy(e1.zusatz, zusatz);
	tag[n].t = n;
	tag[n].auswahl[m]= e1;
	memcpy(&tag[n].datum, date, sizeof(ISO8601_JJJJMMTT));
}
```


----------

