- Forum komputerowe
- → Przeglądanie profilu: Posty: magic385
Statystyki
- Grupa: Użytkownik
- Całość postów: 4
- Odwiedzin: 1 174
- Tytuł: Nowy
- Wiek: Wiek nie został ustalony
- Urodziny: Data urodzin nie została podana
-
Płeć
Nie podano
O mnie
-
GG
12923990
-
Jaki posiadasz system operacyjny?
Windows
0
Neutralna
Znajomi
magic385 nie posiada znajomych
Moje posty
W temacie: [C++] Dev-C++ - błędy linkera
03 05 2010 - 23:32
No teraz nie mam faktycznie tamtego błędu bo nie dochodzi do linkowania bo się jeszcze nawet nie kompiluje.Skoro już zainkludowałam je po dwa razy i nie było akurat z tym błędów to zostawię chyba bez #indef. Nie wiem w ogóle czy tego typu podział na moduły jest sensowny. Może można to jakoś lepiej rozplanować?
W temacie: [C++] Dev-C++ - błędy linkera
03 05 2010 - 23:15
No poprawiłam tamten głupi błąd z h. Miałam go na szczęście tylko w mainie. Ale błąd wciąż występuje. Program się kompiluje ale nadal wyrzuca błąd linkera. Moje pliki wyglądają tak:
main.cpp
modMenu.cpp
modMenu.h
modFunkcje.cpp
modFunkcje.h
A postać pliku który wykorzystuje jest mniej więcej taka
Imie Nazwisko 0 19
Jan Kowalski 1 23
czyli najpierw imię potem nazwisko pleć (0-kobieta, 1-mężczyzna) i na końcu wiek.
main.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
struct Sosoba
{int numer;
string imie;
string nazwisko;
bool plec;
int wiek;
Sosoba *nastepny;};
#include "modMenu.h"
#include "modFunkcje.h"
extern const string plik="bazadanych.txt";
void PokazMenu();
int main(int argc, char *argv[])
{Sosoba *glowka;
Przepisuj(plik,glowka);
PokazMenu();
system("PAUSE");
return EXIT_SUCCESS;
}]
modMenu.cpp
#include <cstdlib>
#include <iostream>
#include <string> //Dodanie podstawowych bibliotek.
#include <windows.h>
#include <conio.h>
#include <fstream>
#include <sstream>
#include "modFunkcje.h"
#include "modMenu.h"
using namespace std;
void PokazMenu();
void Kolorki();
void PokazMenu()
{system("cls"); //Funckcja wyświetlająca menu i umozliwiająca wybór opcji.
cout<<"MENU"<<endl;
cout<<"Aby wykonac wybrane operacje wybierz numer:"<<endl;
cout<<"1-Wyswietl pelna baze danych"<<endl;
cout<<"2-Dodaj nowy rekord do bazy"<<endl;
cout<<"3-Usun rekord o wybranym numerze Id"<<endl;
cout<<"4-Modyfikuj rekord o wybranym numerze Id"<<endl;
cout<<"5-Sprawdz ilosc rekordow w bazie"<<endl;
cout<<"6-WYJSCIE z programu"<<endl;
char numer;
numer = getch();
switch (numer)
{case '1':PokazWszystko();break;
case '2':Dodaj();break;
case '3':UsunElement();break;
case '4':Modyfikuj();break;
case '5':Rozmiar_bazy();break;
case '6':exit(0);break;
default: PokazMenu();break;}; };
int Kolorki(int i) //Funkcja zmieniajaca kolor wyswietlanego tekstu
{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),i);};
]
modMenu.h
void PokazMenu();
int Kolorki(int i);
]
modFunkcje.cpp
#include <cstdlib>
#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>
#include <fstream>
#include <sstream>
using namespace std;
const string plik="bazadanych.txt";
struct Sosoba
{int numer;
string imie;
string nazwisko;
bool plec;
int wiek;
Sosoba *nastepny;};
#include "modFunkcje.h"
#include "modMenu.h"
int s2i(string n) {
stringstream sstr(n);
int m;
sstr >> m;
return m;};
void Przepisuj(string nazwa,Sosoba *&glowa)
{
string numer1,imie1,nazwisko1,plec1,wiek1;
ifstream plk_we;
plk_we.open(nazwa.c_str());
if ( !plk_we. is_open() ) {
cerr << "Blad otwarcia pliku \n";}
else {
cout<<"Udalo sie otworzyc"<<endl;};
Sosoba *aktualny;
glowa=NULL;
while(!plk_we.eof())
{
aktualny= new Sosoba;
plk_we>>imie1;aktualny->imie=imie1;
plk_we>>nazwisko1;aktualny->nazwisko=nazwisko1;
plk_we>>plec1; if (plec1[0]=='0'){ aktualny->plec=0;}else {aktualny->plec=1;};
plk_we>>wiek1;aktualny->wiek=s2i(wiek1);
aktualny->nastepny=glowa;
glowa=aktualny;
};
plk_we.close();};
void PokazWszystko( Sosoba *glowa)
{
cout <<"BAZA DANYCH"<<endl;
cout<<endl;
cout << "+----+--------------------------+----------+--------------+"<<endl;
cout << "| Nr | Nazwisko, Imie\t | Plec\t | Wiek\t |"<<endl;
cout << "+----+--------------------------+----------+--------------+"<<endl;
Sosoba *aktualny;
aktualny=new Sosoba;
aktualny=glowa;int numerek=1;
while (aktualny!=NULL)
{aktualny->numer=numerek;numerek++;
cout<<"|"<<aktualny->numer<<" "<<" |";
cout<<" "<<aktualny->imie<<" ";
cout<<aktualny->nazwisko<<"\t\t"<<"|";
cout<<"\t"<<aktualny->plec<<" |";
cout<<" "<<aktualny->wiek<<"\t\t"<<" |"<<endl;
cout << "+----+--------------------------+----------+--------------+"<<endl;
aktualny= aktualny->nastepny;};};
int Rozmiar_bazy(string nazwa)
{
int ile = 0;
ifstream plk_we;
plk_we.open(nazwa.c_str());
string linia;
while (!plk_we.eof())
{ getline(plk_we,linia);
ile++; };
plk_we.close();
return ile; };
void UsunElement(Sosoba *glowa)
{Sosoba *aktualny,*poprzedni;
aktualny=new Sosoba;
aktualny=glowa;
poprzedni=NULL;
int znak;
cout<<"Podaj numer rekordu:"<<endl;
cin>>znak;
while(aktualny!=NULL)
{if(aktualny->numer==znak)
{
if(aktualny==glowa)
{glowa=glowa->nastepny;}
else
poprzedni->nastepny=aktualny->nastepny;
Sosoba *temp;
temp = new Sosoba;
temp=aktualny;
aktualny=aktualny->nastepny;
delete temp; }
else{
poprzedni=aktualny;
aktualny=aktualny->nastepny;};
};
};
void Dodaj(string nazwa)
{Kolorki(11);
//cout<<"DODAWANIE NOWEGO REKORDU"<<endl://wsadz opis gdzie indziej, bo z tej fuunkcji korzystasz w modyfikuju
int n= Rozmiar_bazy(plik);
Kolorki(7);
cout<<"Podaj imie:"<<endl;
string imie;
cin>>imie;
cout<<"Podaj nazwisko:"<<endl;
string nazwisko;
cin>>nazwisko;
cout<<"Podaj płeć( 0-kobieta, 1-mezczyzna)"<<endl;
string plec;
cin>>plec;
cout<<"Podaj wiek:"<<endl;
int wiek;
cin>>wiek;
ofstream plk;
plk.open(nazwa.c_str(), ios::app);
plk<<endl;
plk<<imie<<" ";
plk<<nazwisko<<" ";
plk<<plec<<" ";
plk<<wiek<<" ";
plk.close();}
void Modyfikuj(string nazwa, Sosoba *glowa)
{UsunElement (glowa);
cout<<"podaj zmodyfikowane dane:"<<endl;
Dodaj(nazwa);
}
modFunkcje.h
void Przepisuj(string nazwa, Sosoba *&glowa);
void PokazWszystko( Sosoba *glowa);
int Rozmiar_bazy(string nazwa);
void UsunElement(Sosoba *glowa);
void Dodaj(string nazwa);
void Modyfikuj(string nazwa,Sosoba *&glowa)
A postać pliku który wykorzystuje jest mniej więcej taka
Imie Nazwisko 0 19
Jan Kowalski 1 23
czyli najpierw imię potem nazwisko pleć (0-kobieta, 1-mężczyzna) i na końcu wiek.
W temacie: [C++] Dev-C++ - błędy linkera
03 05 2010 - 20:50
Tak mam projekt stworzony na bank.
a funkcja PokazMenu wyglada tak:
i jest umieszczona w innym module. Natomiast pozostałe funkcje ktore wywoluje switch sa w kolejnym module.
To jest w mainie.#include <iostream>
#include <cstdlib>
#include "modMenu"
#include "modFunkcje"
using namespace std;
int main(int argc, char *argv[])
{PokazMenu();
system("PAUSE");
return EXIT_SUCCESS;
}
]
a funkcja PokazMenu wyglada tak:
void PokazMenu()
{system("cls");
cout<<"MENU"<<endl;
cout<<"Aby wykonac wybrane operacje wybierz numer:"<<endl;
cout<<"1-Wyswietl pelna baze danych"<<endl;
cout<<"2-Dodaj nowy rekord do bazy"<<endl;
cout<<"3-Usun rekord o wybranym numerze Id"<<endl;
cout<<"4-Modyfikuj rekord o wybranym numerze Id"<<endl;
cout<<"5-Sprawdz ilosc rekordow w bazie"<<endl;
cout<<"6-WYJSCIE z programu"<<endl;
char numer;
numer = getch();
switch (numer)
{case '1':PokazWszystko();break;
case '2':Dodaj();break;
case '3':UsunElement();break;
case '4':Modyfikuj();break;
case '5':Rozmiar_bazy();break;
case '6':exit(0);break;
default: PokazMenu();break;}; };
i jest umieszczona w innym module. Natomiast pozostałe funkcje ktore wywoluje switch sa w kolejnym module.
- Forum Komputerowe Tweaks.pl
- → Przeglądanie profilu: Posty: magic385
- Polityka prywatności
- Szukaj
- Regulamin Forum ·