Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
13 / 13 / 3
Регистрация: 31.03.2013
Сообщений: 287
1

Поиск наибольшего числа в файле

19.07.2013, 21:26. Показов 1596. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Файл хранится на сайте (допустим site.ru/file.txt)
В файле текст примерно такого содержания
{"2":{"":717,"ssssasdf"},"1":{"asdfaasdf:685,:4797}
Нужно если файл существует и не пустой, найти самое большое число и вывести его
Результатом по данному примеру должно быть 4797

Помогите пожалуйста, уже пробовал всякие примеры но не получается.
Если такое никто не знает, то хотя бы если файл существует и не пустой и если в файле только одно ЦЕЛОЕ число и ничего больше вывести это число. Спасибо вам заранее.

Добавлено через 1 час 9 минут
Пытаюсь решить так что если в текстовом файле 1 число и боольше ничего нет мы его выводим

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$url = 'http://l2argument.ru/file.txt';
@$fp = fopen($url, 'r');
if (!$fp) {
    echo "Файла нет";
    exit;
}
else {
$var=file_get_contents($url);
if (is_int($var))
{
echo $var;
}
else
{
echo "не число";}
}
?>
Но у меня просто выдает "Не число" и все, хотя как вы сами можете убедиться там стоит 0. Помогите решить данную проблему, и если знаете как вставить в этот код проверку файла на пустоту. Спасибо заранее
Просто первый вариант сложнее, и его видимо мне никто не поможет((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2013, 21:26
Ответы с готовыми решениями:

Определение наибольшего числа в файле
Здравствуйте! Надо написать программу, которая будет считывать из txt файла информацию, определять...

Определение наибольшего длинного числа в файле
В текстовом файле CHISLA.TXT хранятся натуральные числа. Каждые из этих чисел может иметь до 100...

Поиск наибольшего числа
Дорогие форумчане! Подскажите, пожалуйста, каким образом можно найти наибольшее из 4 число и...

Поиск наибольшего числа
Здравствуйте! У меня имеется несколько чисел: 0,42 0,41 0,45 0,48 0,63 0,43 0,47 0,69 0,46 нужно...

4
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.07.2013, 21:47 2
PHP
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
<?php
 
function search($str)
{
    $i = -1;
    $tmp = $max = 0;
    while( isset($str[++$i]) )
    {
        if( is_numeric($str[$i]) )
        {
            while( is_numeric($str[$i]) )
            {
                $tmp *= 10;
                $tmp += $str[$i++];
            }
        }
        $max = $max > $tmp ? $max : $tmp;
        $tmp = 0;
    }
    
    return $max;
}
 
if( file_exists('./file.txt') && trim($str = file_get_contents('./file.txt')) != '' )
    echo search($str);
else
    echo 'File not found or empty.';
0
13 / 13 / 3
Регистрация: 31.03.2013
Сообщений: 287
19.07.2013, 22:21  [ТС] 3
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
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
<?php
 
function search($str)
{
    $i = -1;
    $tmp = $max = 0;
    while( isset($str[++$i]) )
    {
        if( is_numeric($str[$i]) )
        {
            while( is_numeric($str[$i]) )
            {
                $tmp *= 10;
                $tmp += $str[$i++];
            }
        }
        $max = $max > $tmp ? $max : $tmp;
        $tmp = 0;
    }
    
    return $max;
}
 
if( file_exists('./file.txt') && trim($str = file_get_contents('./file.txt')) != '' )
    echo search($str);
else
    echo 'File not found or empty.';
http://tiguar.su/online.txt вот файл. Пишет File not found or empty.
Кстати мой пример работал, просто пхп не переводил строку в инт, и поэтому пришлось самому прописать (int). Теперь интересует 1 задача и что файл не пустой проверить

Добавлено через 7 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$url = 'http://shock-world.com/online.txt';
@$fp = fopen($url, 'r');
if (!$fp) {
    echo "Файла нет";
    exit;
}
else {
$var=file_get_contents($url);
if (is_int((int) $var))
{
echo $var;
}
else
{
echo "не число";}
}
?>
Изменил код, теперь он считает что там число. Но если там еще есть символы или буквы он продолжает считать числом!!!
вот пример с сайтом, где там много всяких букв и цифр

Добавлено через 19 минут
KOPOJI, Ваш код раболтает отлично. Спасибо вам большое!!!

Добавлено через 1 минуту
Только немного его изменил (если файл пустой он просто выдает 0 поэтому проблем с этим нету)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
@$fp = fopen('сайт/fi.txt', 'r');
if (!$fp) {
    echo "Файла нет";
    exit;
}
else
{
$str = file_get_contents('сайт/fi.txt');
 
 
    echo search($str);
}
?>
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.07.2013, 01:49 4
Цитата Сообщение от ychelovek Посмотреть сообщение
Ваш код раболтает отлично
ну я бы не сказал, что отлично. В данном коде не учитываются отрицательные числа (т.к. берется значение, начиная с цифры, а не знака +/-). А даже если бы и учитывались - то, если все числа были бы отрицательными, то функция вернула бы ноль.. К тому же, учитываются лишь целочисленные значения, и только в десятичном виде
Чтобы понять, про что я говорю, можете попробовать сами
PHP
1
echo search('-100 10 80'), '<br>', search('~1.35 1.33 1.30');
Добавлено через 42 секунды

Не по теме:

Цитата Сообщение от ychelovek Посмотреть сообщение
Спасибо
рад был помочь :)

0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
20.07.2013, 08:20 5
для поиска заодно и вещественных, и отрицательных чисел можно сделать так:
PHP
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
<?php
 
$data = <<<DATA
/*sdasdasdsa 5464565
46b 8659//54/*860 */
{ // 454534534534
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш., 101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },3242e+50
   "phoneNumbers": [ -435345
       "812 123-1234",
       "916 123-4567"
   ]
}
DATA;
preg_match_all('!/(?|/[^\n]++\n|\*.*?\*/)|"[^\\\\"]*+(?:\\\\.|[^\\\\"]++)*+"|(-?[\d]++(?:\.[\d]++)?(?:[eE][+-][\d]++)?)!SDs', $data, $numbers);
if (empty($numbers[1])) die('Чисел не найдено');
$max = -INF;
foreach ($numbers[1] as $val) {
    if ($val === '') continue;
    $num = 0 + $val;
    if ($max < $num) $max = $num;
}
var_dump($max);
при этом пропускаются json-овские строки и самые распространненные виды комментариев. (если не нужно, чтоб пропускало -- просто оставьте последнюю часть регулярки)
это должно работать побыстрее предыдущего варианта, но если строка очень длинная, может отвалиться по памяти

Добавлено через 3 минуты

Не по теме:

пс. двойные минусы конечно тут тоже не учитываются, но если это все-таки json, то их и быть не может. это же данные в сериализованном виде, а не код (в последнем случае нужно было бы еще вычислятор выражений прикрутить)

0
20.07.2013, 08:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2013, 08:20
Помогаю со студенческими работами здесь

В текстовом файле найти среднее арифметическое наибольшего и наименьшего числа
Код вот такой но что тут не так? var f:file of integer; sr,mx,mn,i:real; a:integer;...

Поиск наибольшего и наименьшего числа
Всем привет! Нужно найти максимально и минимальное числа из ниже приведенных переменных dim e1,...

Поиск наибольшего числа в StringGrid
Здравствуйте. Затрудняюсь с задачкой: есть StringGrid, Label и Button. В StringGrid один...

Поиск наибольшего числа в трехмерном массиве
Поиск наибольшего числа в трехмерном массиве Пусть массив Т имеет размерность 3х5х7. Найти...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru