Функция возвращает, но не делает то, что я просил - PullRequest
0 голосов
/ 10 мая 2019

У меня есть домашняя работа, и эта часть кода возвращается с 1, но не добавляет m к b. Есть идеи, что я пропустил?

int uj_esemeny(meccs m, bajnoksag b){
    int cs1l=0;
    int cs2l=0;
    int temp=0;
    int i;
    for(i=0;i<b.csapatsz;i++){
        if(b.csapatok[i].azon==m.cs1.azon||b.csapatok[i].azon==m.cs2.azon){
            temp++;
        }
    }
    if((b.csapatsz+temp)>6){ return 0;}
    for(i=0;i<b.jatszott;i++){
        if(b.meccsek[i].cs1.azon==m.cs1.azon && b.meccsek[i].cs2.azon==m.cs2.azon)
        {
            return 0;
        }
    }
    for(i=0;i<b.csapatsz;i++)
    {
        if(b.csapatok[i].azon==m.cs1.azon){cs1l++;}
        if(b.csapatok[i].azon==m.cs2.azon){cs2l++;}
    }
    if(cs1l>0&&cs2l>0){return 0;}
    b.csapatok[b.csapatsz++]=m.cs1;
    b.csapatok[b.csapatsz++]=m.cs2;

    b.meccsek[b.jatszott++]=m;
    return 1;
}
typedef struct
{
    char azon[10];
    int hasznos;
}csapat;

typedef struct
{
  csapat cs1;
  csapat cs2;
  int cs1gol;
  int cs2gol;
}meccs;

typedef struct
{
  meccs meccsek[30];
  csapat csapatok[6];
  int csapatsz;
  int jatszott;
}bajnoksag;

в основном uj_esemeny(m01,b1)

небольшой перевод: Речь идет о чемпионате по футболу, в котором хранятся матчи, в которых играют команды, а мы храним команды и результаты, а также каждый отдельный матч.

"csapat" - это команда "Мекки" это матч "bajnokság" - чемпионат "cs1" - это команда1 "cs2" - это команда2 "cs1gol" - оценка команды1 "cs2gol" - оценка команды2

1 Ответ

3 голосов
/ 10 мая 2019

Учитывая объявление int uj_esemeny(meccs m, bajnoksag b), b передается в функцию по значению, что означает, что в функцию передается только копия bajnoksag вызывающей стороны.

Внутри функции все операторы, такие как b.meccsek[b.jatszott++]=m;, изменяют только копию. Они не изменяют bajnoksag в процедуре вызова.

Чтобы это исправить, передайте указатель на bajnoksag:

  • Измените объявление функции на int uj_esemeny(meccs m, bajnoksag *b).
  • Внутри функции измените b. на b->, чтобы ссылаться на указанную структуру вместо копии.
  • Если вызывается функция, используйте & для передачи адреса bajnoksag вместо копии.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...