2017-01-21 2 views
-10

Мне нужно написать программу, которая считывает статистику футбольных команд н лиги A и печатает название команды, которые попадают в Лиге В.Как исправить ошибку в моем домашнем решении на C++?

команда попадет в Лиге B, если он имеет меньше, чем к точкам после сыграв в течение нескольких недель, где m находится между 1 и 150. Каждая команда получает три очка за победу, одну очко за ничью и нулевые очки при проигрыше.

Спецификация на вход: В первой строке вам будет присвоено количество команд 0 < n ≤ 500, а точки 0 < k ≤ 300, необходимые для пребывания в лиге A. Тогда в следующих n строках будет название команды и ее результаты. Точка с запятой указывает конец входных рядов.

Номер 2 представляет собой выигрыш, номер один представляет собой ничью, а числовое значение представляет собой потерю.

Выходные данные:

Sample Input I 
4 19 
Team_A 1 1 1 1 1 1 1 1 1 0 1 1 1 0 2 1 0 ; 

Team_B 0 1 0 2 2 1 1 0 1 1 0 2 0 1 0 0 2 ; 

Team_C 0 0 1 0 2 2 2 1 1 1 1 1 0 0 2 1 2 ; 

Team_D 0 1 0 1 2 1 2 1 0 0 0 2 2 2 0 0 0 ; 

Sample Output I 

Team_A 16 

Team_B 18 

Это код, который я придумал, но выход не так, и я не знаю, почему,

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main() 
{ 
    int n,points,sum=0,i,value; 
    char name[15]; 
    char p; 
    scanf("%d %d",&n,&points); 
    for(i=1;i<=n;i++) 
    { 
    scanf("%s",&name); 

    do 
    { 

    scanf("%c ",&p); 
    if(p!=';') 
    { 
     value=p-48; 
     sum=sum+value; 
    } 


    }while(p!=';'); 

    if(sum<=points) 
     printf("%s %d",name,sum); 
    } 
    return 0; 
    } 
+1

Исправьте свой заголовок и отступ. –

+0

Спецификация выхода: Покажите имена команд и их точки, которые попадают в Лигу B. – Alisa

+1

Затем определите, какие вы ожидаете, какие вы получаете, а что вы думаете о том, что может быть. Сделайте так, чтобы этот вопрос мог принести пользу другим в будущем, а не только вам. Это Q & A, а не служба поддержки! –

ответ

0

Вы можете искать проблемы путем наложения программы выходными операторами.
Если вы добавите после scanf("%c ",&p); оператор вывода, чтобы показать значение p, вы обнаружите, что первое значение для p является символом пробела, который портит ваши вычисления.
Точно так же, если вы проследите значение value, вы обнаружите, что вы забыли инициализировать эту переменную до нуля для каждой команды.

Смежные вопросы