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

Находим длину самого длинного числа - C++

Восстановить пароль Регистрация
 
Chasss
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 10
29.03.2010, 13:56     Находим длину самого длинного числа #1
Ребята, наверное это легко но я чего то не допонимаю


Написать программу, которая в текстовом файле, состоящем из строк длиной не более 50 символов, находит порядковый номер и длину самого длинного числа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2010, 13:56     Находим длину самого длинного числа
Посмотрите здесь:

Дана строка содержащая текст. Найти длину самого короткого и самого длинного слова. C++
С клавиатуры вводится текст,посчитать длину самого длинного слово C++
Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова. C++
C++ Найти длину самого короткого слова и самого длинного слова в строке
Найти длину самого короткого и самого длинного слова. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1761 / 984 / 60
Регистрация: 29.03.2010
Сообщений: 2,975
29.03.2010, 16:28     Находим длину самого длинного числа #2
если всё правильно понимаю то должно это выглядеть как-то так:
C++
1
2
3
4
5
6
7
8
int myMaxValue = 328746;
int res = myMaxValue;
int col = 0;
do 
{
    col++;
    res = res / 10;
} while (res>0);
в переменной col и будет длинна числа.

Добавлено через 1 час 21 минуту
эм... как в С++ читать файлы - не помню, но алгоритм должен быть примерно таким:
вычитать строки в динамический массив, выбрать строку с наибольшим количеством символов, если таких строк более чем одна, то начать посимвольно, начиная с 0-го символа строки сравнивать числа, если число меньше - отбрасываем строку, так продолжаем пока не останется одна строка, выводим номер строки и sizeof() строки.
Chasss
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 10
29.03.2010, 18:28  [ТС]     Находим длину самого длинного числа #3
не пойму а как она будет считать длину а уж тем более порядковый номер числа...?
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1761 / 984 / 60
Регистрация: 29.03.2010
Сообщений: 2,975
30.03.2010, 10:01     Находим длину самого длинного числа #4
создаём массив numbers[][] = {{"165168465"}, {"321"}}; и т.д. (только вычитываем из файла). делаем условие для файла, что каждая новая строка - это новое число.
эм... длинна числа будет равна длине строки т.е. сравниваем sizeof(numbers[n]) и sizeof(numbers[n+1]) (sizeof(numbers[n]) - это и будет длинна числа, а n - это порядковый номер), дальше как описывал выше. (могу ошибаться, если что- прошу поправить).
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.03.2010, 13:41     Находим длину самого длинного числа #5
Если файл состоит только из чисел:
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
#include <iostream>
#include <string>
#include <fstream>
 
int main()
{
    std::string str;
    size_t maxsize, maxnum, curnum;
    std::ifstream is("input.txt");
    if(is==NULL)
    {
        std::cout << "Error opening file" << std::endl;
        system("pause");
        return 1;
    }
    is >> str;
    curnum=maxnum=1;
    maxsize=str.size();
    if(!is.eof())
        while((is >> str)&&curnum++)
            if(maxsize<str.size())
            {
                maxsize=str.size();
                maxnum=curnum;
            }
    std::cout << "The number #" << maxnum << " has max length " << maxsize << std::endl;
    system("pause");
    return 0;
}
Нумерация начинается с единицы!

Добавлено через 9 минут
Если в файле есть не только числа:
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
#include <iostream>
#include <string>
#include <fstream>
 
bool isDigit(const std::string& s)
{
    std::string mask("0123456789");
    return s.find_first_not_of(mask)==std::string::npos;
}
 
int main()
{
    std::string str;
    size_t maxsize, maxnum, curnum;
    std::ifstream is("input.txt");
    if(is==NULL)
    {
        std::cout << "Error opening file" << std::endl;
        system("pause");
        return 1;
    }
    curnum=maxnum=0;
    maxsize=0;
    while((is >> str))
        if(isDigit(str))
        {
            ++curnum;
            if(str.size()>maxsize)
            {
                maxnum=curnum;
                maxsize=str.size();
            }
        }
    std::cout << "The number #" << maxnum << " has max length " << maxsize << std::endl;
    system("pause");
    return 0;
}
Chasss
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 10
31.03.2010, 13:59  [ТС]     Находим длину самого длинного числа #6
Спасибо, попробую..

Добавлено через 3 часа 6 минут
Nameless One Спасибо Огромное! То что надо!!!!!!!!
Yandex
Объявления
31.03.2010, 13:59     Находим длину самого длинного числа
Ответ Создать тему
Опции темы

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