Показать сообщение отдельно
Старый 23.11.2009, 23:52   #1
PoZiTiFF
AnyKey`щик
 
Регистрация: 23.11.2009
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)

Всем привет!)

Долго метался по знакомым и интернету и в конце концов решил обратиться к старым друзьям)) (может кто ещё помнит СJ-я Кактуса )

Проблема моя в том, что завтра зачёт в институте, который я НЕ сдать никак не могу...В сущности задание пустяковое, но так как я НИКОГДА в жизни не программировал, для меня это как монгольский...Сижу часами, пытаюсь менять буквы и значения в коде, в надежде на изменение программы в нужное русло, но безуспешно

Надеюсь, вы мне поможете

теперь к семантике самой программы:

МЕНЮ (5 пунктов):
1:
ввод города/ заведения в этом городе/ кол-ва мест в заведении

2:
вывод на экран каталога введённых данных

3: сохранить каталог

4:
(искомая функция)
ввод города / вывод заведения и мест в данном городе (если таковой город имеется в каталоге)

5:
завершение работы

вот, собственно и сам код (величины и данные на немецком, но я постарался все перевести):


#include <stdio.h>
#include <strings.h>
#include <conio.h>
#include <stdlib.h>
#define clrscr() system("cls");
void menue();
void datei_eingeben();       // ввод данных
void datei_ausgeben();      //вывод данных
void verzeichnis_speichern(); //сохранить каталог
void verzeichnis_einlesen();   // отобразить кол-во данных в каталоге
void location_finden();     //найти локейшен(заведение)



int index=0;
struct Location
{
	char Stadt[11]; //город
	char Location [16]; // заведение
	int Plaetze;  //кол-во мест

}
Locvz[100];    //название структуры (каталога)

int main()
{

	verzeichnis_einlesen();  
	menue();

	return 0;
}
void menue()
 {
	int auswahl;
	do
	{
	clrscr();
	printf("\t\t****************************\n");
	printf("\t\t*** Location-Verzeichnis ***\n");
	printf("\t\t****************************\n\n");
	printf("Location eingeben      1\n\n");
	printf("Location ausgeben      2\n\n");
	printf("Verzeichnis speichern  3\n\n");
	printf("Location finden        4\n\n");
	printf("Sitzung beenden        5\n\n\n");
	printf("Ihre Auswahl:");
	fflush(stdin);
    scanf("%d", &auswahl);   // auswahl - выбор 
    switch(auswahl)
		{
    case 1 :
    	datei_eingeben();
    	index++;
		break;
    case 2 :
    	datei_ausgeben();
        break;
    case 3 :
		verzeichnis_speichern();
        break;
    case 4 :
       	location_finden();
           break;
    case 5 : printf ("Sitzung beendet");
        break;
    default : printf("eingabe ungueltig");
		getch();
		break;
		}
	}
while(auswahl != 5);
}

void datei_eingeben()
{
	printf("Bitte geben Sie die Stadt ein:\n"); // введите город
	fflush(stdin);
	scanf("%s", Locvz[index].Stadt);
	fflush(stdin);
	printf("Bitte geben Sie die Location ein:\n");  // введите заведение
	scanf("%s", Locvz[index].Location);
	printf("Bitte geben Sie die Anzahl der Plaetze ein\n:");  // введите кол-во мест
	fflush(stdin);
	scanf("%d", &Locvz[index].Plaetze);


}
void datei_ausgeben()
{
	int k;
	if(index==0)
	{
		printf("es wurden keine Dateien eingegeben!");  // "нет введённых данных"
	}
	else
	{
		printf("\nEs wurden folgende Dateien eingegeben:\n\n"); // "были заданы следующие данные"
		printf("Stadt          \tLocation       \tPlaetze\n");
		printf("==========================================\n");
		for (k=0; k<index; k++)
		{
			printf("%-10s\t%-15s\t%d", Locvz[k].Stadt,Locvz[k].Location,Locvz[k].Plaetze);
			printf ("\n\n");
		}
	}
	getch();
}
void verzeichnis_speichern()
{
	FILE *fp;
	fp = fopen("locationverzeichnis3", "wb+");
	if(!fp)
	{
		clrscr();
		printf("speichern fehlgeschlagen!"); // "не удалось сохранить"
		getch();
	}
	else
	{
	fwrite(&index, sizeof(int),4,fp);
	fwrite(&Locvz,sizeof(Locvz),4,fp);
	fclose(fp);
	printf("das Verzeichnis wurde erfolgreich gespeichert!");  // каталог сохранен!
	getch();
	}
}
void verzeichnis_einlesen()
{
	FILE *fr;
	fr = fopen("locationverzeichnis3", "rb+");
	if(!fr)
	{
		printf("\nkeine gespeicherten Dateien gefunden!\n");
		getch();
	}
	else
	{
	fread(&index, sizeof(int),1,fr);
	fread(&Locvz,sizeof(Locvz),1,fr);
	fclose(fr);
	printf("Es wurden %d Eintraege gefunden!",index);
	getch();
	}
}
void location_finden()   // отсюда начинается моя проблема!!! 
{
    char stadtname[11]="";
    char tempStadt[16]="";
    int location_counter = index;
     int i, ergebnis;
     printf("\nBitte geben Sie die gewuenschte Stadt ein: \n");  // "задайте желаемый город"
     fflush(stdin);
     scanf("%s", stadtname);

     for (i = 0; i < 100; ++i) {
          ergebnis = strcmp(stadtname, Locvz[i].Stadt);
          sprintf(tempStadt, Locvz[i].Stadt);
          if (ergebnis == 0)
          {
               printf("%-10s\t%-15s\t%d", Locvz[i].Stadt,Locvz[i].Location,Locvz[i].Plaetze);
               printf("\nbbu");
        }
          else
          {
               printf("keine Location in %s gefunden!", stadtname); // заведение не найдено!
               getch();
          }
     }

}
void eingabe_ungueltig()
{
	printf("eingabe_ungueltig\n");
}

Заранее всем благодарен!
(Offline)
 
Ответить с цитированием