|
23.11.2009, 23:52
|
#1
|
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
|
Дэвелопер
Регистрация: 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
|
AnyKey`щик
Регистрация: 23.11.2009
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
Нам поставили обязательное требование, чтобы мы могли этот каталог сохранить в тектовичке, и когда вновь открываем прогу, чтоб вывелось на экран, сколько данных есть в каталоге...
блин, и в правду забыл сказать, что нужно...
ЗАДАЧА:
под пунктом 4 нужно ввести какой-либо город, и если таковой имеется в каталоге, то чтобы вывелись на экране заведения в этом городе и кол-во мест в них
|
(Offline)
|
|
24.11.2009, 00:25
|
#4
|
Дэвелопер
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.11.2009, 00:35
|
#5
|
AnyKey`щик
Регистрация: 23.11.2009
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:20.
|