Witam,
na początek chciałem się przywitać na nowym forum ;))
Miałem zrobić program na zaliczenie przedmiotu, lecz mam mały problem, mianowicie program działa, lecz po wpisaniu jakiejkolwiek nazwy ze spacją, wpis rozdziela na 2 osobne wpisy (np. jak wpiszę imię i nazwisko ze spacją to zapisuje jako imię pierwszy człon a to co jest za spacją przypisuje do kolejnego wpisu).
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
using namespace std;
struct klienci
{
string imie;
string adres;
string adres1;
string nip;
};
short i; // zmienna przechowujaca ilosc klientów
klienci klienci[200]; //200 elementowa tablica struktur
void Dodaj(); //deklaruje funkcje
void Zobacz();
void Zapisz();
void Wczytaj();
void Usun();
void Edytuj();
int main()
{
cout << " ****************************** \n"
" *******Lista klient\242w********* \n"
" *****Adrian Krawczy\344ski******* \n"
" ****************************** \n";
cout << "\n\n\n";
char wybor;
do
{
cout << "Aktualnie posiadasz " << i << " Klient\242w" << endl;
cout << "1. Dodaj klienta " << endl;
cout << "2. Zobacz wszystkich klient\242w " << endl;
cout << "3. Zapisz wprowadzonych klient\242w " << endl;
cout << "4. Wczytaj klient\242w z bazy " << endl;
cout << "5. Usun klienta " << endl;
cout << "6. Edytuj klienta " << endl;
cout << "ESC - Koniec programu " << endl << endl;
wybor = _getch();
switch (wybor)
{
case 49: Dodaj();
break;
case 50: Zobacz();
break;
case 51: Zapisz();
break;
case 52: Wczytaj();
break;
case 53: Usun();
break;
case 54: Edytuj();
break;
}
system("cls");
} while (wybor != 27);
// system("pause");
return 0;
} // koniec main
void Dodaj()
{
cout << "Imi\251 i nazwisko/nazwa firmy: \n"; ////przypisanie wartości x w obiekcie klienci
cin >> klienci[i].imie;
cout << "Ulica: \n";
cin >> klienci[i].adres;
cout << "Kod pocztowy i miasto: \n";
cin >> klienci[i].adres1;
cout << "NIP: \n";
cin >> klienci[i].nip;
cin.ignore();
i++;
cout << ". Wcisnij enter";
getchar();
}
void Zobacz()
{
if (i != 0) //musi byc conajmniej 1 element do wypisania
{
for (short j = 0; j < i; j++) //j jest indeksem umozliwiajacym wypisywanie kolejnych elementow.wypisuje od 0 do i
{ //j<i wyswietlanie prawidlowej wartosci i = j-1
cout << "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" << endl;
cout << "x Klient nr " << j + 1 << ": " << endl;
cout << "x Nazwa: " << klienci[j].imie << endl;
cout << "x Ulica: " << klienci[j].adres << endl;
cout << "x Kod pocztowy i miasto: " << klienci[j].adres1 << endl;
cout << "x NIP: " << klienci[j].nip << endl;
cout << "x";
cout << "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" << endl;
}
}
else
cout << "Nie ma takiego klienta w bazie!!";
cout << "Nacisnij ENTER";
getchar();
}
void Zapisz()
{
ofstream plik("klienci.txt", ios::out | ios::trunc);
plik << i << "\n";
for (short j = 0; j < i; j++)
{
plik << klienci[j].imie << endl;
plik << klienci[j].adres << endl;
plik << klienci[j].adres1 << endl;
plik << klienci[j].nip << endl;
}
cout << "Dane zostaly zapisane! :). Wcisnij ENTER";
getchar();
}
void Wczytaj()
{
ifstream plik("klienci.txt", ios::in);
plik >> i;
short j = 0;
do
{
plik >> klienci[j].imie;
plik >> klienci[j].adres;
plik >> klienci[j].adres1;
plik >> klienci[j].nip;
j++;
} while (!plik.eof());
cout << "Wczytano dane. Nacisnij ENTER!";
getchar();
}
void Usun()
{
short kogo;
if (i != 0)
{
cout << "Podaj numer klienta ktorego chcesz usunac: ";
cin >> kogo;
cin.ignore();
if (kogo > i)
cout << "Operacja nie powiodla sie. Brak klienta o takim numerze";
else
{
for (short k = kogo; k < i; k++)
{
klienci[k - 1].imie = klienci[k].imie; //polega na zastapieniu elementu , elementem nastepnym, na nastepnie i--
klienci[k - 1].adres = klienci[k].adres;
klienci[k - 1].adres1 = klienci[k].adres1;
klienci[k - 1].nip = klienci[k].nip;
}
i--;
cout << "Operacja zakonczyla sie sukcesem! klient o numerze " << kogo << " zostal usuniety!";
Zapisz();
}
}
else
{
cout << "Nie ma klientów w bazie!! Wcisnij ENTER!";
getchar();
}
}
void Edytuj()
{
//short kogo;
int kogo;
if (i != 0)
{
cout << "Podaj numer klienta ktora chcesz zmienic: ";
cin >> kogo;
cin.ignore();
if (kogo > i)
cout << "Operacja nie powiodla sie. Brak klienta o takim numerze";
else
{
//jest -1 bo zakladam ze numeracja klientów jest taka jak w wypisaniu. Natomiast
// tablica zaczyna sie od zera.
cout << "Podaj nazw\251 klienta: \n";
cin >> klienci[kogo - 1].imie; //jest -1 bo zakladam ze numeracja klientów jest taka jak w wypisaniu. Natiomiast
// tablica zaczyna sie od zera.
cout << "Podaj adresy: \n";;
cin >> klienci[kogo - 1].adres;
cout << "Podaj kod pocztowy i miasto: \n";
cin >> klienci[kogo - 1].adres1;
cout << "Podaj nip: \n";
cin >> klienci[kogo - 1].nip;
cout << "Operacja zakonczyla sie sukcesem! klient o numerze " << kogo << " zosta\210 zmieniony!";
Zapisz();
}
}
else
{
cout << "Nie ma klient\242w w bazie!! Wcisnij ENTER!";
getchar();
}
}