Wersja: Jasna / Ciemna

prosty programik z c++ [pomocy] :)

markolm

Od: 2003-11-26

Ranga: Newbie

Dodano dnia: 2007-06-29 21:35:32

#include

#include

#include

#include

#include

#include

#include

using namespace std;

const short MAX_SIZE = 100;

typedef struct {

        char nazwisko[35];

        char* imie;

        int wiek;

        char* adres;

        } OSOBA;

OSOBA arrOsoby[MAX_SIZE];

int iloscElementow = 0;

int chooseOption();

void displayMenu();

void dodajElement();

void usunElement();

void wyswietlWszystko();

void wyswietlPoNazwisku();

int main(int argc, char *argv[]) {

    int iOption=0;

    bool isEnd = false;

    displayMenu();

    iOption = chooseOption();

    while (!isEnd) {

        switch (iOption) {

           case 1: wyswietlWszystko(); iOption = chooseOption(); break;

           case 2: dodajElement(); iOption = chooseOption(); break;

           case 3: usunElement(); iOption = chooseOption(); break;

           case 4: wyswietlPoNazwisku(); iOption = chooseOption(); break;

           case 5: isEnd = true; break;

           default: displayMenu(); iOption = chooseOption(); break;

        }

    }

    return EXIT_SUCCESS;

}

                        // dodawanie wpisu

void dodajElement() {

    if (iloscElementow < MAX_SIZE) {

        cout << "Dodanie elementu:" << endl;

        cout << "Nazwisko (max 35 znakow): "; scanf("%s", &arrOsoby[iloscElementow].nazwisko);

        cout << "Imie: "; scanf("%s", &arrOsoby[iloscElementow].imie);

        cout << "Wiek: "; scanf("%i", &arrOsoby[iloscElementow].wiek);

        cout << "Adres: "; scanf("%s", &arrOsoby[iloscElementow].adres);

        cout << "Element dodany na pozycji " << iloscElementow << endl;

        iloscElementow++;

    } else {

        cout << "Wprowadzono maxymalna ilosc elementow." << endl << endl;

    }

}

                             // usuwanie wpisu

void usunElement() {

    int index = 0;

    if (iloscElementow>0) {

       cout << "Podaj pozycje elementu do usuniecia (0.." << iloscElementow-1 << "): "; scanf("%i", &index);

       if (index>=0 && index

          for (int i=index; i

              arrOsoby[i] = arrOsoby[i+1];

          cout << "Element na pozycji " << index << " zostal usuniety." << endl;

          iloscElementow--;

       } else {

          cout << "Blad: Nie istnieje element na pozycji " << index << endl;

       }

    } else {

       cout << "Nie ma elementow do usuniecia." << endl << endl;

    }

}

                       // wyswietlanie calego wpisu

void wyswietlWszystko() {

    if (iloscElementow>0) {

       for (int i=0; i

          cout << "Ilosc wprowadzonych elementow: " << iloscElementow << endl;

          printf("Element %i

", i);

          printf("Nazwisko: %s

", &arrOsoby[i].nazwisko);

          printf("Imie: %s

", &arrOsoby[i].imie);

          printf("Wiek: %i

", arrOsoby[i].wiek);

          printf("Adres: %s

", &arrOsoby[i].adres);

       }                          

    } else {

       cout << "Brak wprowadzonych elementow do wyswietlenia." << endl << endl;       

    }

}

                                   // wyswietlanie po nazwisku

void wyswietlPoNazwisku() {

    char name[35];

    cout << "Podaj nazwisko (max 35 znakow): "; scanf("%s", &name);

    

    if (iloscElementow>0) {

       for (int i=0; i

          if (strcmp(arrOsoby[i].nazwisko, name)==0) {

             printf("Element %i

", i);

             printf("Nazwisko: %s

", &arrOsoby[i].nazwisko);

             printf("Imie: %s

", &arrOsoby[i].imie);

             printf("Wiek: %i

", arrOsoby[i].wiek);

             printf("Adres: %s

", &arrOsoby[i].adres);

          }

       }                          

    } else {

       cout << "Brak wprowadzonych elementow do wyswietlenia." << endl << endl;       

    }

}     

int chooseOption() {

    int i;

    cout << "Prosze wybrac opcje <1-5>: ";

    scanf("%i", &i);

    cout << endl;

    return i;

}

                    // glowne menu

void displayMenu() {

    cout << ">>DANE OSOBOWE<<" << endl;

    cout << "1. Wyswietlanie wpisanych danych" << endl;

    cout << "2. Dodaj dany element" << endl;

    cout << "3. Usun dany element" << endl;

    cout << "4. Wyswietl po nazwisku" << endl;

    cout << "5. Zakoncz" << endl << endl;

}

Czy ktos moglby mi wrzucic to tego kodu taka opcje, by dane zapisywaly sie i wczytywaly? Chodzi o to, ze jak dodam osoby do kontaktow, to po restarcie programiku nadal bede mial je zapisane i bede ogl je wczytac.

Do You really think you can beat us?

RauL

Od: 2003-09-15

Ranga: Quad Damager

Dodano dnia: 2007-06-29 21:37:41

podbij do [M]ańka albo MisieXa, oni są programisty. =)

^M^

Od: 2002-08-26

Ranga: Quad Damager

Dodano dnia: 2007-06-29 22:11:29

Popraw:
typedef struct

{

char nazwisko[35];
char imie[35];

int wiek;
char adres[35];

} OSOBA;
Potem:

void save()

{

if (iloscElementow>0)

{

FILE *file = NULL;

file = fopen("dane.bin","wb");
for (int i=0; i (WIĘKSZE/ROWNE) iloscElementow; i++)

fwrite(&arrOsoby[i], sizeof(OSOBA), 1, file);
fclose(file);

}

}

void load()

{

FILE *file = NULL;

if ((file = fopen("dane.bin","rb")) != NULL)

{

while(!feof(file))

{

fread(&arrOsoby[iloscElementow] , sizeof(OSOBA), 1, file);

iloscElementow++;

}

fclose(file);

}

}
No i w mainie:
int main(int argc, char *argv[]) {

int iOption=0;

bool isEnd = false;
load();

displayMenu();

*.....

***save();
** return EXIT_SUCCESS;

}
Powinno działać, ale nie sprawdzałem ;p
ed: aha i po co tyle include’ów?

markolm

Od: 2003-11-26

Ranga: Newbie

Dodano dnia: 2007-06-30 00:22:10

nie dziala :Q

Do You really think you can beat us?

^M^

Od: 2002-08-26

Ranga: Quad Damager

Dodano dnia: 2007-06-30 00:25:07

*Większe/równe ;p

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2007-06-30 11:48:50

Cytat z posta - autor: ^M^

*Większe/równe ;p

A może tak mniejsze równe? Może później spróbuję to zrobić tylko zainstaluję kompilator bo miałem format. A zresztą sam pokombinuj z tego co Ci ^M^ napisał, a jak to nie zadziała to napisz potem spróbuję to obalić :) Wstaw tam mniejsze/równe zamiast większe/równe i może coś z tego będzie.

markolm

Od: 2003-11-26

Ranga: Newbie

Dodano dnia: 2007-06-30 14:44:28

wyskakuja mi takie bledy:
"25 C:Documents and SettingsadminPulpitP-PP_P.cpp iloscElementow’ undeclared (first use this function)&#34; &#34;29 C:Documents and SettingsadminPulpitP-PP_P.cpp MNIEJSZE’ undeclared (first use this function) "
"29 C:Documents and SettingsadminPulpitP-PP_P.cpp `arrOsoby’ undeclared (first use this function) "

Do You really think you can beat us?

^M^

Od: 2002-08-26

Ranga: Quad Damager

Dodano dnia: 2007-06-30 15:54:06

markolm, Ty w ogóle czytałeś to przed wklejeniem? ;d

<=

ed: o, teraz mi nie ucięło ;]

markolm

Od: 2003-11-26

Ranga: Newbie

Dodano dnia: 2007-06-30 23:11:02

nie mozecie mi gotowego kodu wkleic? nie mampojecia o tym kompletnie.

Do You really think you can beat us?

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2007-07-01 08:05:02

Chodzi o to, żebyś tam gdzie ^M^ napisał WIĘKSZE/RÓWNE (powinno być zresztą MNIEJSZE/RÓWNE), wstawił znaczki matematyczne dziubek w lewo i równa się. <=

fredi

Od: 2002-10-01

Ranga: Rocket Rider

Dodano dnia: 2007-07-02 23:18:06

ale chlopaki przecierz z tego co mu kompilator wyrzuca bledy to jakby gdzies brakowalo deklaracji funckji? nie chce misie tego wrzucac w gcc.

....to po restarcie programiku nadal bede mial je zapisane i bede ogl je wczytac.

to musisz gdzies sobie zapisac. Obczaj sobie funkcje do obslugi plikow.

www.cplusplus.com fopen, fputs, itp hf!

Life is short, play more CTF!

markolm

Od: 2003-11-26

Ranga: Newbie

Dodano dnia: 2007-07-04 08:43:35

chlopacy.. chlopacyyy moglby ktoryc mi to skleic w jedna dzilajaca calosc, bo musze to koniecznie oddac na dniach na uczelnie. Nie mam pojecia o programowaniu, nie nawidze go. Pomozcie troszke.

Do You really think you can beat us?

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2007-07-04 17:20:32

Masz po starej znajomości. Zrobiłem co trzeba i trochę pozmieniałem w kodzie samego programu, żeby to wszystko estetyczniej wyglądało i lepiej działało, nad resztą sam popracuj i potestuj.

CLICK

fredi

Od: 2002-10-01

Ranga: Rocket Rider

Dodano dnia: 2007-07-05 23:02:11

po starych znajomosciach to ja też powinnem to napisac : )
to gdzie Was teraz chlopacy wywiało? gdzie markol studiujesz, ze koniec

roku i programowania Ci w glowe nie wtlukli?:> A Ty Maniek co

porabiasz teraz?

Life is short, play more CTF!

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2007-07-06 07:45:42

Ja gnije sobie w pewnej dziurze na zaocznych studiach :) Nic ciekawego, a Ty? :D

eng

Od: 2002-05-09

Ranga: Newbie

Dodano dnia: 2007-07-06 09:10:25

Hm juz o tej godzinie ? :}

Okręt mój płynie dalej, gdzieś tam...

» yt

fredi

Od: 2002-10-01

Ranga: Rocket Rider

Dodano dnia: 2007-07-06 12:10:12

ja dolaczylem do agh’owskiej ludności quakowców :))

eng on idzie spac dopiero :)

Life is short, play more CTF!

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2007-07-06 21:55:07

Hehe nie no na 8:15 idę do pracy, więc rano zaglądam na forum :)

Rieux

Gravatar

Od: 2005-06-26

Ranga: Lightning Smasher

Dodano dnia: 2007-08-29 22:20:44

Kozystajac z tematu, co oznacza taki error

error: array subscript is not an integer

eng

Od: 2002-05-09

Ranga: Newbie

Dodano dnia: 2007-08-30 08:48:02

Kod typu, inicjator nie jest liczba calkowita. Błąd.

array(kod_typu[, inicjator])
Zwraca nową tablicę, w której typ elementów jest ograniczony przez kod_typu i którym można nadać wartości początkowe przy pomocy opcjonalnego parametru inicjator. Parametr ten powinien mieć postać listy lub napisu. Lista lub napis jest wówczas przekazywana jednej z następujących metod nowoutworzonej tablicy: fromlist(), fromstring() lub fromunicode(), które dodają do tablicy wartości początkowe.

Okręt mój płynie dalej, gdzieś tam...

» yt