Форум программистов, компьютерный форум CyberForum.ru

В чем ошибка? - C++

Восстановить пароль Регистрация
 
HardLogin
 Аватар для HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 640
Записей в блоге: 1
08.03.2013, 16:08     В чем ошибка? #1
Программист Денис c детства мечтал побывать в Антарктиде, но почему-то регулярных рейсов туда нет. Поэтому Денис все лето изучал Антарктиду с помощью соседнего кинотеатра. Теперь он знает, что в Антарктиде водится несколько видов пингвинов:
Императорские пингвины (Emperor Penguins) — любители петь;
Малые пингвины (Little Penguins) — любители потанцевать;
Пингвины Макарони (Macaroni Penguins) — любители сёрфинга.
К сожалению, в мультфильмах не было сказано, какой вид пингвинов самый многочисленный. Денис решил выяснить это: он посмотрел эти мультфильмы еще раз, и каждый раз, когда видел пингвина, записывал в блокнот название его вида. Сейчас Денис дал вам блокнот с просьбой выяснить, какой вид пингвинов самый многочисленный.
Исходные данные
В первой строке записано целое число n — количество записей в блокноте (1 ≤ n ≤ 1000). В каждой из следующих n строк записано по одному виду пингвинов. Среди видов встречаются только «Emperor Penguin», «Little Penguin» и «Macaroni Penguin».
Результат
Выведите самый популярный вид пингвинов. Гарантируется, что такой вид только один.

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
 
struct M
{
       char name[ 20 ];
       int how;
};
 
int main()
{
    int n;
    cin >> n;
    
    M m[] = { { "Emperor Penguin", 0 }, { "Macaroni Penguin", 0 }, { "Little Penguin", 0 } };
    
    char **s = new char*[ n ];
    cin.sync();
    
    int bestM = 0;
    
    for( int i = 0; i < n; i++ )
    {
         s[ i ] = new char[ 20 ];
         cin.getline( s[ i ], 21 );
         
         if( strcmp( "Emperor Penguin", s[ i ] ) == 0 )
         {
             m[ 0 ].how++;
             if( m[ bestM ].how < m[ 0 ].how )
             {
                 bestM = 0;
             }
         }             
         else
         if( strcmp( "Macaroni Penguin", s[ i ] ) == 0 )
         {
             m[ 1 ].how++;
             if( m[ bestM ].how < m[ 1 ].how )
             {
                 bestM = 1;
             }
         }             
         else
         if( strcmp( "Little Penguin", s[ i ] ) == 0 )
         {
             m[ 2 ].how++;
             if( m[ bestM ].how < m[ 2 ].how )
             {
                 bestM = 2;
             }
         }         
    }
    
    cout << m[ bestM ].name;
    return system( "pause" );
}
На первом же тесте выдает что непраильный ответ, незнаю вроде тестировал работает нормально так в чом ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2013, 16:08     В чем ошибка?
Посмотрите здесь:

В чем ошибка? C++
C++ В чем ошибка??
в чем ошибка? C++
C++ в чем ошибка?
в чем ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.03.2013, 16:14     В чем ошибка? #2
Цитата Сообщение от HardLogin Посмотреть сообщение
return system( "pause" );
???
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
08.03.2013, 16:26     В чем ошибка? #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Цитата Сообщение от HardLogin Посмотреть сообщение
return system( "pause" );
???
на самом деле в этом нет ничего плохого. прототип функции из stdlib.h выглядит так:

C++
1
 int           _RTLENTRY _EXPFUNC system(const char * __command);
system возвращает целое число.
а код ТС вроде рабочий. если не считать столь необходимого здесь чтения из файла
HardLogin
 Аватар для HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 640
Записей в блоге: 1
08.03.2013, 16:51  [ТС]     В чем ошибка? #4
та не я когда решение отправляю я возвращяю 0, просто пока разрабатываю чтоб результат помотреть.
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
09.03.2013, 11:13     В чем ошибка? #5
Чета вы перемудрили с решением. В цикле просто надо посчитать количество каждого вида пингвинов, а вычисление значения bestM выполнить после цикла.
И еще. Название пингвина однозначно идентифицируется по первой букве, так что можно обойтись без структур и сравнений строк
HardLogin
 Аватар для HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 640
Записей в блоге: 1
09.03.2013, 12:23  [ТС]     В чем ошибка? #6
Цитата Сообщение от ya_noob Посмотреть сообщение
Чета вы перемудрили с решением. В цикле просто надо посчитать количество каждого вида пингвинов, а вычисление значения bestM выполнить после цикла.
во первых - чо это? зачем лишнее время? я сразу все в одном цыкле зделаю.


Цитата Сообщение от ya_noob Посмотреть сообщение
Название пингвина однозначно идентифицируется по первой букве, так что можно обойтись без структур и сравнений строк
структуры мне так для лучшего понимания кода, оно выглядит как объект.

Добавлено через 32 секунды
а во вторых - я ж тестировал все работает
Yandex
Объявления
09.03.2013, 12:23     В чем ошибка?
Ответ Создать тему
Опции темы

Текущее время: 01:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru