forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование) (http://forum.boolean.name/showthread.php?t=10652)

PoZiTiFF 23.11.2009 23:52

простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
 
Всем привет!)

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

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

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

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

МЕНЮ (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");
}


Заранее всем благодарен!:)

alcoSHoLiK 24.11.2009 00:11

Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
 
Ты не написал, в чем проблема и что, собственно, требуется сделать.

Вот обновленная функция 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();
}

С ней нормально работает. Только программа неправильно с файлом работает. Лучше его вообще убрать, если это не является обязательным требованием.

PoZiTiFF 24.11.2009 00:16

Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
 
Нам поставили обязательное требование, чтобы мы могли этот каталог сохранить в тектовичке, и когда вновь открываем прогу, чтоб вывелось на экран, сколько данных есть в каталоге...

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

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

alcoSHoLiK 24.11.2009 00:25

Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
 
Я переименовал структуру 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();
    }
}


PoZiTiFF 24.11.2009 00:35

Ответ: простейшая задачка может стоить столько нервов ламеру, то биш мне...(С-Программирование)
 
ААААА, ЛЁЁЁХА, СПАСИИИИИБООООО!!!!!!!!!!!!!!!!!!!!
:super: :super: :super: :super: :super: :super: :super: :super:


Айм соооо хэпппи!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot