ORG

quake.net.pl » Polskie Centrum Quake od 1998 roku



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^](%E2%80%99?page=users&run=details&id=2196%E2%80%99)
>
> *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)"
"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