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

Наименьшая система счисления (********) - C++

Восстановить пароль Регистрация
 
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.01.2012, 19:43     Наименьшая система счисления (********) #1
Задача
На своей машине какие только тесты не вводил, все проходит. А на ********, даже первый не идет.
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
#include <fstream>
#include <string>
int main(){
 
std::fstream o("INPUT.TXT"),u("OUTPUT.TXT", std::ios::out);
 
std::string a, s = "0123456789ABCDEFGHIKLMNOPQRSTVWXYZ";
int c = 0, m;
char d;
 
while(!o.eof()){
   o.get(d);
   a+=d;
}
a.resize(a.length() - 2);
for(int i = 0; i < a.length(); i++){
   m = s.find(a[i]);
   if(m == -1){
      c = -2;
      break;
   }
   else
   {
      if(m > c)
      c = m;
   }
}
 
if(c == 0)
   u<<2;
else
   u<<c+1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 19:43     Наименьшая система счисления (********)
Посмотрите здесь:

C++ Римская система счисления.
C++ Система счисления
C++ Двоичная система счисления!
Система счисления C++
C++ двоичная система счисления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
09.01.2012, 20:18     Наименьшая система счисления (********) #2
1)
C++
1
2
3
4
5
while(!o.eof()){
   o.get(d);
   a+=d;
}
a.resize(a.length() - 2);
Почему бы просто не считать так (?) :
C++
1
o >> a;

2)
И вот это не выкинет ли какое-то исключение при a.length() == 1 (?) :
C++
1
a.resize(a.length() - 2);

3)
C++
1
2
if(c == 0)
   u<<2;
А почему 2? Число "0000000" можно отнести к системе счисления с основанием 1.
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
09.01.2012, 20:20     Наименьшая система счисления (********) #3
Наверное нужно не:
C++
1
"INPUT.TXT"
а:
C++
1
"input.txt"
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.01.2012, 20:27  [ТС]     Наименьшая система счисления (********) #4
Цитата Сообщение от x1Mike7x Посмотреть сообщение
Почему бы просто не считать так (?) :
Потому, что могут быть пробелы.

Цитата Сообщение от x1Mike7x Посмотреть сообщение
А почему 2? Число "0000000" можно отнести к системе счисления с основанием 1.
По заданию должно быть 2

AncinetHero, нет.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
09.01.2012, 20:28     Наименьшая система счисления (********) #5
ITZver, у них Microsoft Visual C++ 7.1, Вы через него у себя компилировали? Может быть в main() обязательно нужен return 0;
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
09.01.2012, 20:29     Наименьшая система счисления (********) #6
Да, не дочитал условие на счёт "000".
Вот моё решение:
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
#include <fstream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main()
{
    ifstream fin( "input.txt" );
    ofstream fout( "output.txt" );
    
    string S;
    int R = 2;
    
    getline( fin, S );
    
    for ( int i = 0; i < S.size() && R > 0; ++i )
    {
        if ( S[i] >= '1' && S[i] <= '9' )
            R = max( R, S[i] - '0' + 1 );
        else if ( S[i] >= 'A' && S[i] <= 'Z' )
            R = max( R, S[i] - 'A' + 11 );
        else if ( S[i] != '0' )
            R = -1;
    }
    
    fout << R << endl;
    
    fin.close();
    fout.close();
    return 0;
}
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
09.01.2012, 20:32  [ТС]     Наименьшая система счисления (********) #7
Цитата Сообщение от Xind Посмотреть сообщение
Может быть в main() обязательно нужен return 0
Не обязательно
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
09.01.2012, 20:34     Наименьшая система счисления (********) #8
Я не знаю и не понимаю смысла этого кода, но тогда вот и мое решение

Update. Лучше такое не писать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2012, 22:24     Наименьшая система счисления (********)
Еще ссылки по теме:

C++ 16-ая система счисления
Система счисления C++
C++ Четверичная система счисления

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.01.2012, 22:24     Наименьшая система счисления (********) #9
для такой задачи достаточно двух интовых переменных, использовать строки расточительно
несмотря на то что в коде ниже остутствует проверка 1-го прочитаного символа их система приняла
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
#include <stdio.h>
#include <ctype.h>
 
int main() 
{
    int max = -1, c = EOF;
    FILE *in = fopen("input.txt", "r"),
         *out = fopen("output.txt", "w");
    
    if ((max = fgetc(in)) != EOF)
    {
        if (isdigit(max))
            max -= '0' - 1;
        else if (isupper(max))
            max -= 'A' - 11;
        
        while ((c = fgetc(in)) != EOF)
        {
            if (isdigit(c))
                c -= '0' - 1;
            else if (isupper(c))
                c -= 'A' - 11;
            else if (c == '\n')
                continue;
            else
            {
                max = -1;
                break;
            }
                
            if (c > max)
                max = c;
        }
    }
    
    fprintf(out, "%d", (max > - 1 && max < 2 ? 2 : max > 36 ? -1 : max));
    fclose(in);
    fclose(out);
    return 0;
}
Yandex
Объявления
09.01.2012, 22:24     Наименьшая система счисления (********)
Ответ Создать тему
Опции темы

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