Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 24.11.2009, 00:11   #2
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)

Ты не написал, в чем проблема и что, собственно, требуется сделать.

Вот обновленная функция location_finden:
void location_finden()
{
    char stadtname[11]="";
    char tempStadt[16]="";
    int location_counter = index;
	int i, ergebnis, not_found = 1;

	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("\n");
			not_found = 0;
        }
	}

	if (not_found) {
		printf("keine Location in %s gefunden!", stadtname);
	}
	getch();
}
С ней нормально работает. Только программа неправильно с файлом работает. Лучше его вообще убрать, если это не является обязательным требованием.
(Offline)
 
Ответить с цитированием
Старый 24.11.2009, 00:16   #3
PoZiTiFF
AnyKey`щик
 
Регистрация: 23.11.2009
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)

Нам поставили обязательное требование, чтобы мы могли этот каталог сохранить в тектовичке, и когда вновь открываем прогу, чтоб вывелось на экран, сколько данных есть в каталоге...

блин, и в правду забыл сказать, что нужно...
ЗАДАЧА:

под пунктом 4 нужно ввести какой-либо город, и если таковой имеется в каталоге, то чтобы вывелись на экране заведения в этом городе и кол-во мест в них
(Offline)
 
Ответить с цитированием
Старый 24.11.2009, 00:25   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)

Я переименовал структуру Location в LocationStruct, потому что компилятор ругался. С учетом этого, вот обновленный код функций сохранения и загрузки:
void verzeichnis_speichern()
{
    FILE *fp;
    fp = fopen("locationverzeichnis3", "wb+");
	int i;
    if(!fp)
    {
        clrscr();
        printf("speichern fehlgeschlagen!");
        getch();
    }
    else
    {
	fwrite(&index, sizeof(int),1,fp);
	for (i = 0; i < index; ++i) {
		fwrite(&Locvz[i],sizeof(struct LocationStruct),1,fp);
	}
    fclose(fp);
    printf("das Verzeichnis wurde erfolgreich gespeichert!");
    getch();
    }
}
void verzeichnis_einlesen()
{
	int i;
    FILE *fr;
    fr = fopen("locationverzeichnis3", "rb+");
    if(!fr)
    {
 

    printf("\nkeine gespeicherten Dateien gefunden!\n");
        getch();
    }
    else
    {
	fread(&index, sizeof(int),1,fr);
	for (i = 0; i < index; ++i) {
		fread(&Locvz[i], sizeof(struct LocationStruct),1,fr);
	}
    fclose(fr);
    printf("Es wurden %d Eintraege gefunden!",index);
    getch();
    }
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SubZer0 (24.11.2009)
Старый 24.11.2009, 00:35   #5
PoZiTiFF
AnyKey`щик
 
Регистрация: 23.11.2009
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)

ААААА, ЛЁЁЁХА, СПАСИИИИИБООООО!!!!!!!!!!!!!!!!!!!!



Айм соооо хэпппи!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейшая бродилка Тренсфер Основной форум 46 02.04.2009 17:33
Хочу купить цифровую камеру - подскажите на какие хар-ки обратить внимание ABTOMAT Болтовня 19 14.12.2008 22:15
Все может быть Koruna Философское 5 21.09.2008 06:37
Может vadim2 Болтовня 3 24.09.2006 00:14
Может кто поможет? pax Алгоритмика 8 12.10.2005 22:00


Часовой пояс GMT +4, время: 17:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com