Próbuje n
To jest zrobione dla dwóch studentów , numer indeksu składa się z 6 cyfr i nie wiem jak to porównać i wypisać linie
Próbuje n
To jest zrobione dla dwóch studentów , numer indeksu składa się z 6 cyfr i nie wiem jak to porównać i wypisać linie
Co to wg Ciebie ma robić?
int k[6];
...
name.find(k[6]);
Deklarujesz tablicę liczb całkowitych, a następnie do metody std::string::find przesyłasz wartość spoza tej tablicy (6-elementowa indeksowana jest wartościami 0…5). Bezsens, który sprawia wrażenie, że nie znasz zupełnie C++. O ile można to nie ma sensu się bawić w samodzielne rozdzielanie wartości, skoro może to zrobić biblioteka. Wczytywałbym raczej w formie
plik >> string >> string >> int;
W ten sposób możesz uzyskać poszczególne wartości w osobnych zmiennych.
PS Jeśli w przyszłości będziesz zamieszczał swój kod na forum, zadbaj o jego formatowanie inne niż losowe, to naprawdę utrudnia pisanie i znajdowanie błędów.
ok, dzięki, sory ale jestem początkujący,
czyli zrobić bez pętli for i żeby było w jednej lini mogę coś takiego?
plik>>string>>string>>int;
....................
cout<
Jeśli chcesz te dane sortować to i tak siłą rzeczy musisz jest w pętli wszystkie pobrać, a następnie w drugiej pętli wypisać.
i jeszcze jedno pytanie dlaczego przy deklarowaniu tablicy stringów wyskakuje mi błąd programu
string name[1],s[1];
int k[1];
while (!plik.eof()){
for(int i=0;i<2;++i){
plik>>name[i]>>s[i]>>k[i];
cout<
}}
Bo takim zapisem tworzysz dwie jednoelementowe tablice ;], a chcesz pobrać dwa elementy
Czy przypadkiem to s[] nie służy ci do przechowywania odstępu ?
proszę o sprawdzenie
#include
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
ifstream plik ("imiona.txt");
string name[2],s[2];
int k[2];
while (!plik.eof()){
for(int i=0;i<2;++i){
plik>>name[i]>>s[i]>>k[i];
}
for(int i=0;i<2;){
if(k[i]>k[++i]){
cout<
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
chyba coś jest nie tak z wypisywaniem
No na pewno coś jest nie tak. Nie mam pojęcia co chciałeś osiągnąć, ale na pewno nie działa to dobrze.
Ogólnie kod mógłby wyglądać tak (zwróć uwagę na formatowanie kodu - czytelność), jeśli w pliku są tylko 2 wiersze
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
ifstream plik ("imiona.txt");
string name[2], s[2];
int k[2];
while (!plik.eof())
{
for(int i = 0; i < 2; ++i)
{
plik >> name[i] >> s[i] >> k[i];
}
}
int a = 0, b = 1;
if(k[0] > k[1])
{
a = 1;
b = 0;
}
cout << name[a] << s[a] << k[a] << endl;
cout << name[b] << s[b] << k[b] << endl;
return 0;
}
W przypadku ogólnym
→ wczytujesz dane
→ sortujesz
→ wypisujesz
Sensowne jest storzenie struktury Student z polami imię, nazwisko, numer indeksu i napisani operatora porównującego po indeksie - wtedy można by użyć standardowych funkcji sortowania.
Może przy wypisywaniu warto dodać spacje/tabulacje lub setw() rozdzielające imie, nazwisko i indeks.
ja chciałem uniwersalnie to zrobić, tak żeby nie podawać indeksu , tylko żeby automatycznie porównało i wyświetliło w odpowiednim porządku.
– Dodane 01.05.2011 (N) 14:47 –
a jak zrobić żeby nie wpisywać k[0] itp. tylko w pętli for porównywało?? Bo jak bym miał z 10 numerów, to nie będę ręcznie porównywac
Użyj sort() z lub napisz sam jakieś sortowanie.
jakie parametry pobiera ta funkcja??