Рейтинг:
1
OriginalGriff
Просто: вы записываете очки, которые они набрали, но не то, кто они.
if(points>potgB)
{
points = teamB[NoB];
potgB = teamB[NoB];
}
Говорит вам самые высокие точки, да. Но вы нигде не записываете NoB (или NoA), поэтому позже вы понятия не имеете, какой это был игрок.
Так как я бы это сделал это не для того чтобы хранить
points
или
potG
но
player
- значение Ноба-вместо этого. Потому что вы можете использовать его в любое время для доступа к информации о точке игрока.
Member 13396113
Честно говоря, я не могу понять это полностью.
Теперь я думаю,что мне нужен цикл для хранения игрока no. в слот массива.
разве мне не нужна еще одна переменная только для хранения высшей точки?
if (points > высшая точка)
potg = Ноб
OriginalGriff
Зачем тебе еще одна петля? У вас есть петля для поиска самых высоких точек, да?
И так как точки поступают из массива, к которому вы получаете доступ через номер игрока, если вы храните номер игрока, вы можете получить доступ к его точкам в любое время позже, но глядя в массиве на этот номер игрока.
Вы можете использовать отдельную переменную для хранения "текущих самых высоких точек", как и сейчас, но это всего лишь ярлык в цикле. Самые высокие баллы поступают из массива очков[количество игроков, которые его набрали] в вашу переменную очков в любом случае!
Member 13396113
Мне действительно жаль, если я причиняю боль, потому что все это так запутывает меня.
Было бы хорошо иметь массив для номеров игроков и другой массив для точек, чтобы я мог сделать цикл, где он находит самую высокую точку?
OriginalGriff
Ну ... да. Но зачем он тебе?
У вас есть массив очков по числу игроков (вы называете его teamA и teamB), и номер игрока индексируется в него, чтобы вернуть очки, набранные этим игроком.
Поэтому, если вы храните номер игрока, набравшего наибольшее количество очков, в переменной hiplayera и hiPlayerB (говоря hiPlayerA = NoA;), вы можете получить доступ к фактическому значению очков через teamA:
teamA[hiPlayerA]
Понимаете, что я имею в виду?
Member 13396113
Поэтому я сделал это, и это сработало для меня. Мне просто интересно, не могли бы вы перепроверить, твердая она или нет. Еще раз прошу прощения за то, что я нуб. Лол
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int
main (void)
{
char team, another;
int teamA[12], teamB[12], pointA=0, pointB=0, NoA, NoB, hipointA=0, hipointB=0;
int potgA=0, potgB=0;
do {
printf("Team :");
scanf(" %c", &team);
switch (team)
{
case 'a':
case 'A':
printf("\nPlayer No. :");
scanf("%d", &NoA);
printf("\nPoints :");
scanf("%d", &teamA[NoA]);
pointA = pointA + teamA[NoA];
if(teamA[NoA] > hipointA)
potgA = NoA;
hipointA = teamA[NoA];
break;
case 'b':
case 'B':
printf("\nPlayer No. :");
scanf("%d", &NoB);
printf("\nPoints :");
scanf("%d", &teamB[NoB]);
pointB = pointB + teamB[NoB];
if(teamB[NoB] > hipointB)
{
potgB = NoB;
hipointB = teamB[NoB];
}
break;
}
printf("\nAnother Player? :");
scanf(" %c", &another);
}
while(another == 'y' || another == 'Y');
if(pointA == pointB)
printf("\nDraw");
else if(pointA > pointB)
printf("\nWinnder is Team A");
else
{
printf("\nWinner is Team B");
}
printf("\nPlayer of the Game No.%d from Team A", potgA);
printf("\nPlayer of the Game No.%d from Team B", potgB);
}
OriginalGriff
Ура!
Молодец!
Member 13396113
Спасибо!
Вы пытались запустить его на себе и заставить его работать?
Просто хотел убедиться, что он надежен
OriginalGriff
:смеяться:
Нет, я нахожусь на планшетном банкомате и не имею доступа к компилятору C, тем более к тому, который создавал бы приложения, которые работали бы на этом!
Member 13396113
Я понимаю, но если вы не возражаете, не могли бы вы просто проверить программу и, возможно, дать мне советы, если есть способ упростить ее и все такое.
OriginalGriff
Что ж... там есть некоторые гадости,и некоторые дубликаты.
Гадости: что произойдет, если я введу номер игрока 13? Или 104? Или даже "семь"?
Вы действительно не должны доверять пользователям, чтобы сделать это правильно - вам нужно каждый раз проверять, что они вводят, иначе ваше приложение рухнет и сгорит.
Кстати, почему пользователь вообще должен вводить номер игрока? вам действительно нужны значения для каждого игрока, поэтому не лучше ли (и намного проще для пользователя) предложить пользователю ввести номер игрока 0, затем 1, затем 2, затем 3 ... вместо того, чтобы ожидать, что он вообще его введет? И не проще ли войти в одну команду целиком, чем в другую?
Дублирование: ваши два случая идентичны, за исключением места, где они хранят вещи - возможно, лучше было бы создать отдельную функцию, которую вы вызываете дважды и передаете переменные? Таким образом, если вы вносите изменения, вам нужно сделать их только в одном месте...
Member 13396113
Я думаю, что я должен поставить как пользовательскую инструкцию какого-то рода.
что касается простого запроса пользователя на ввод очков для игроков. Могло случиться и так, что другие игроки не набрали ни одного очка.
Да, я получаю дублирование. Просто я все еще новичок и до сих пор не усовершенствовал вызов отдельных функций. Особенно в этом случае,когда для каждого случая существуют разные переменные.