Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program losujący n dat i zapisujący je w tablicy struktur

Ostatnio zmodyfikowano 2014-01-10 21:17
Autor Wiadomość
stabilo
Temat założony przez niniejszego użytkownika
Program losujący n dat i zapisujący je w tablicy struktur
» 2014-01-10 21:03:07
W szkole zadali nam takie zadanko :

    Napisz program, który wylosuje n dat i zapisze je w tablicy struktur Data, a następnie posortuje te daty od najwcześniejszej lub od ostatniej.

Mam takie coś:

C/C++
#include <iostream>
#include <ctime>
#include <windows.h>

using namespace std;

struct Data {
    int d, m, r;
};

struct Data D[ 100 ], H;

struct Miesiac {
    int dni;
    char * tekst;
};

struct Miesiac Tab[ 12 ] = {
    { 31, "styczen" },
    { 28, "luty" },
    { 31, "marzec" },
    { 30, "kwiecień" },
    { 31, "maj" },
    { 30, "czerwiec" },
    { 31, "lipiec" },
    { 31, "sierpien" },
    { 30, "wrzesien" },
    { 31, "pazdziernik" },
    { 30, "listopad" },
    { 31, "grudzien" }
};


int main()
{
    int n, w = 0, x = 0, z = 1, q = 0;
    cout << "Podaj ilosc dat do wylosowania: ";
    cin >> n;
    srand( time( 0 ) );
    cout << "\n";
   
    //losowanie
   
    for( w; w < n; w++ ) {
       
       
        //a=zakres_dolny+rand()%(zakres_gorny-zakres_dolny+1)
       
        D[ w ].r =( - 5000 ) + rand() %( 5000 -( - 5000 ) + 1 );
        D[ w ].m = 1 + rand() %( 12 - 1 + 1 );
        D[ w ].d = 1 + rand() %( Tab[ D[ w ].m - 1 ].dni - 1 + 1 );
        cout << "Wygenerowana data to: ";
        cout << D[ w ].d, D[ w ].m, D[ w ].r;
        cout << endl;
    }
   
   
   
    //sortowanie
   
   
    for( x; x < n; x++ ) {
        for( z; z < n; z++ ) {
            if( D[ x ] > D[ z ] ) {
                H = D[ z ];
                D[ z ] = D[ x ];
                D[ x ] = H;
            }
        }
    }
   
    //wyswietlanie
   
    for( q; q < n; q++ ) {
        cout << "Wygenerowana data to: ";
        cout << D[ q ].d, D[ q ].m, D[ q ].r;
        cout << endl;
    }
   
   
    system( "pause" );
    return 0;
}


Błąd jest podczas sortowania

  
C/C++
//sortowanie


for( x; x < n; x++ ) {
    for( z; z < n; z++ ) {
        if( D[ x ] > D[ z ] ) {
            H = D[ z ];
            D[ z ] = D[ x ];
            D[ x ] = H;
        }
    }
}



Błąd:

    |64|error: no match for 'operator>' (operand types are 'Data' and 'Data')|



Z góry dziękuję za pomoc.

P-101799
SeaMonster131
» 2014-01-10 21:09:25
Musisz przeciążyć* operator
>
Poza tym masz kilka błędów takich jak np:
C/C++
cout << D[ w ].d, D[ w ].m, D[ w ].r;
Musisz zrobić tak:
C/C++
cout << a << ", " << b << ", " << c;

Oraz w
C/C++
struct Data D[ 100 ], H;
usuń słówko struct.


* Nie "przeładować", wybacz ;)
P-101802
stabilo
Temat założony przez niniejszego użytkownika
» 2014-01-10 21:17:40
Jak mam przeciążyć ( :D ) ten operator bo nie rozumiem.

To skoro tam jest źle to tutaj też źle zrobiłem ( na C się wzorowałem ).
C/C++
//wyswietlanie

for( q; q < n; q++ ) {
    cout << "Wygenerowana data to: ";
    cout << D[ q ].d, D[ q ].m, D[ q ].r;
    cout << endl;

Jak powinno być ?
P-101805
« 1 »
  Strona 1 z 1