Keresés

Új hozzászólás Aktív témák

  • Tuostein

    csendes tag

    válasz Jester01 #761 üzenetére

    Ehh... hát erre soha nem jöttem volna rá magamtól! :S :) Tökéletes! Nagyon köszönöm! :R

  • Tuostein

    csendes tag

    válasz Jester01 #759 üzenetére

    Tudatlanabb vagyok mint sejtettem! :P Még csak most kezdtem el tanulni a c-t és úgy tanították hogy a tömböknél nem kell eléírni &-t. Ezekszerint van más amit elé kell írni?!

  • Tuostein

    csendes tag

    Sziasztok!
    Van egy beadandóm és valamiért nem akar lefutni, hibát nem dob ki, csak simán kiakad! CodeBlocks-ban írom... tudom van jobb is... a debuggal arra jutottam hogy megakad a keres fgv-ben az if-es sorban. legalábbis oda rakta a sárga nyilat a debug..
    A feladat: "Egy N résztvevőjű kutyaszépségversenyen M különböző szempont szerint pontoznak minden kutyát, s az eredményt a KUTYA(N,M) mátrix tartalmazza. Minden szempont alapján maximum MAX(I) pont adható (nem negatív egész szám). Az összetett versenyből automatikusan kiesik az a kutya, amely valamelyik kategóriában nem éri el a kategóriánként megadott alsó ponthatárt (MIN(I)). Készítsen C++ programot, amely megadja azt a kategóriát, ahol a legkevesebb kieső volt!"
    És a kód:
    #include <iostream>

    using namespace std;

    void beolvas(int&, int&, int*, int*, int**);
    void keres(int&, int&, int*, int*, int**);
    void kiir(int&, int&, int*);

    int main()
    {
    int n,m;
    cout << "Kutyaszepsegverseny" << endl << endl;
    int *min, *max, *k;
    int** kutya;
    beolvas(n,m,max,min,kutya);//ellenőrzött beolvasás
    k = new int[m];
    keres(n,m,k,min,kutya);//legkevesebb kieső keresése
    kiir(n,m,k);//az összes legkevesebb kieső kiírása
    return 0;
    }

    void beolvas(int &n, int &m, int* max, int* min, int** kutya){
    bool rossz=true;
    string temp;
    do {
    cout << "Hany kutya szerepel (1-...): ";
    cin >> n;
    if (cin.fail()) {
    cout << "Nem szamot adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
    rossz=true;
    }else {
    rossz= (n<1);
    if (rossz) {
    cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
    }
    }
    cin.clear(); getline (cin,temp,'\n');
    }while (rossz);//kutyák számának (n) ellenőrzött beolvasása

    do {
    cout << endl <<"Hany szempontot pontoznak (1-...): ";
    cin >> m;
    if (cin.fail()) {
    cout << "Nem szamot adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
    rossz=true;
    }else {
    rossz= (m<1);
    if (rossz) {
    cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
    }
    }
    cin.clear(); getline (cin,temp,'\n');
    cout << endl;
    }while (rossz);//szempontok számának (m) ellenőrzött beolvasása

    max = new int[m];
    for (int i=1; i<=m; i++){
    do{
    cout << i << ". szempont maximum ponthatara (2-...): "; cin >> max[i-1];
    if (cin.fail()) {
    cout << "Nem szamot adott meg!" << endl << "Adjon meg egy kettonel nagyobb egesz szamot!" << endl;
    rossz=true;
    }else {
    rossz= (max[i-1]<2);
    if (rossz) {
    cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy kettonel nagyobb egesz szamot!" << endl;
    }
    }
    cin.clear(); getline (cin,temp,'\n');
    }while (rossz);
    }//szempontok maximum ponthatára

    min = new int[m];
    for (int i=1; i<=m; i++){
    do{
    cout << i << ". szempont minimum ponthatara (0-" << max[i-1]-1 << "): "; cin >> min[i-1];
    if (cin.fail()) {
    cout << "Nem szamot adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[i-1]-1 << ")!" << endl;
    rossz=true;
    }else {
    rossz= ((min[i-1]<0) || (min[i-1]>=max[i-1]));
    if (rossz) {
    cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[i-1]-1 << ")!" << endl;
    }
    }
    cin.clear(); getline (cin,temp,'\n');
    }while (rossz);
    }//szempontok minimum ponthatára

    kutya = new int*[n];
    for (int i=1; i<=n; i++){
    kutya[i-1] = new int[m];
    }

    for (int i=1; i<=n; i++){
    for (int j=1; j<=m; j++){
    do{
    cout << i << ". kutya " << j << ". szempontra kapott pontja (maximum: " << max[j-1] << "): "; cin >> kutya[i-1][j-1];
    if (cin.fail()) {
    cout << "Nem szamot adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[j-1] << ")!" << endl;
    rossz=true;
    }else {
    rossz= ((kutya[i-1][j-1]<0) || (kutya[i-1][j-1]>max[j-1]));
    if (rossz) {
    cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[j-1] << ")!" << endl;
    }
    }
    cin.clear(); getline (cin,temp,'\n');
    }while (rossz);
    }
    }
    }

    void keres(int &n, int &m, int* k, int* min, int** kutya){
    for (int j=1; j<=m; j++){
    k[j-1]=0;
    for (int i=1; i<=n; i++){
    if (kutya[i-1][j-1]<=min[j-1]) {
    k[j-1]=k[j-1]+1;
    }
    }
    }
    }

    void kiir(int &n, int &m, int* k){
    int v=n;
    for (int i=1; i<=m; i++){
    if (k[i-1]<v) {
    v=k[i-1];
    }
    }
    if (v==0) {
    for (int i=1; i<=m; i++){
    if (k[i-1]==v) {
    cout << i <<". szempont szerint nem volt kieső kutya!" << endl;
    }
    }
    }else {
    for (int i=1; i<=m; i++){
    if (k[i-1]==v) {
    cout << i <<". szempont szerint volt a legkevesebb kieső kutya!" << endl;
    }
    }
    }
    }

    Nagyon megköszönném a segítségeteket, mert már semmi ötletem sincs hogy miért nem megy!
    üdv: Péter

Új hozzászólás Aktív témák