c00per Temat założony przez niniejszego użytkownika |
Problem z ćwiczeniem z kursu / skoroszyt » 2010-10-24 14:18:33 Cześć :) Jako, że ćwiczę podstawy natknąłem się na nurtujący mnie problem. Otóż mam następujący kawałek kodu:
#include <iostream> #include <conio.h> #include <string> #include <ctime> using namespace std; int main() { int i, ile; string imie, nazwisko, tel, uwagi; cout.fill( '-' ); cout.width( 50 ); cout << "" << endl; cout << "Witaj w programie skoroszyt v1.0." << endl << "Wpisz ilosc osob, ktore chcesz wpisac do skoroszytu: "; cin >> ile; cout << endl; for( i = 1; i <= ile; i++ ) { cout << "Osoba nr " << i << "." << endl << "Imie: "; cin >> imie; cout << "Nazwisko: "; cin >> nazwisko; cout << "Nr tel.: "; cin >> tel; cout << "Uwagi: "; cin >> uwagi; cout << endl; } cout << endl; cout.fill( '-' ); cout.width( 50 ); cout << "" << endl; getch(); return( 0 ); }
Mam za zadanie wyświetlić poszczególne rekordy, ale gdy cała pętla zostanie wykonana. I tu się pojawia problem. Bo wyświetla się wtedy tylko ostatni rekord. Bo cały czas następny nadpisuje poprzedni. Myślałem tu o tablicach, tylko nie umiem je przystosować do tego, aby zapisywała tekst. Proszę o pomoc. Pozdrawiam |
|
pekfos |
» 2010-10-24 14:24:53 oczywiście że tablice! wszystkie wpisy zapisujesz w jednym rekordzie!. struct wpis { string imie, nazwisko; };
wpis data[ MAX_WPISOW ];
for( int current = 0; current < ILE_WIPISAC && current < MAX_WPISOW; current++ ) { cin >> data[ current ].imie; } |
|
ison |
» 2010-10-24 14:26:47 przykładowe użycie tablic: #include <iostream> #include <conio.h> #include <string>
using namespace std;
const int MAX_OSOB = 100;
int main() { int i, ile; string imie[ MAX_OSOB ], nazwisko[ MAX_OSOB ], tel[ MAX_OSOB ], uwagi[ MAX_OSOB ]; cout.fill( '-' ); cout.width( 50 ); cout << "" << endl; cout << "Witaj w programie skoroszyt v1.0." << endl << "Wpisz ilosc osob, ktore chcesz wpisac do skoroszytu: "; cin >> ile; cout << endl; for( i = 1; i <= ile; i++ ) { cin.sync(); cout << "Osoba nr " << i << "." << endl << "Imie: "; getline( cin, imie[ i - 1 ] ); cout << "Nazwisko: "; getline( cin, nazwisko[ i - 1 ] ); cout << "Nr tel.: "; getline( cin, tel[ i - 1 ] ); cout << "Uwagi: "; getline( cin, uwagi[ i - 1 ] ); cout << endl; } cout << endl; cout.fill( '-' ); cout.width( 50 ); cout << "" << endl; getch(); }
lepiej gdy będziesz używał getline(cin,x); wczytuje całą linijkę a nie pojedyncze słowo przykładowo do imienia osoby o numerze n odwołujesz się przez |
|
pekfos |
» 2010-10-24 14:29:38 for( i = 0; i < ile; i++ ) { cin.sync(); cout << "Osoba nr " << i + 1 << "." << endl << "Imie: "; getline( cin, imie[ i ] ); cout << "Nazwisko: "; getline( cin, nazwisko[ i ] ); cout << "Nr tel.: "; getline( cin, tel[ i ] ); cout << "Uwagi: "; getline( cin, uwagi[ i ] ); cout << endl; } nie prościej tak? |
|
ison |
» 2010-10-24 14:31:02 @up zależy jak wygodniej autorowi, nie chce mu nic narzucać, często widuję jak niektórzy lecą for'em od 1 i potem odwołują się do komórek i-1. Zależy od upodobań |
|
pekfos |
» 2010-10-24 15:04:36 tak, wszystko sprowadza się do upodobań. I tego co dla kogo jest bardziej czytelne. Ja preferuję krótszy zapis:P |
|
c00per Temat założony przez niniejszego użytkownika |
» 2010-10-24 15:12:24 Na obecnym etapie mojej nauki, że tak powiem =), najbardziej przypadło mi rozwiązanie @isona. @pekfos - masz rację, wyjdzie szybciej. Jednak wcześniej jeszcze nie wiedziałem w jaki sposób zrobić to w tablicach, dlatego nie zacząłem tego w ten sposób. Zresztą podobnie jak Ty w php też zaczynałem w reguły od 0. A do struktur jeszcze dojdę ;]
Pozdrawiam i dzięki za pomoc.
Btw. w jaki sposób wklejać kod, który nie jest na czarnym tle? [ quote] ? [ code ] na pewno nie. |
|
SeaMonster131 |
» 2010-10-24 15:13:20 [ code src="C++" ] .. [ /code ] :) |
|
« 1 » 2 3 4 5 |