Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Решил освежить С. Написал такой почти бесполезный велосипед для проверки двух строк, содержащих числа (только) числа.
Два файла, первый функция PHP:
PHP:
скопировать код в буфер обмена
<?PHP
/*Данная программа сравнивает две строки, содержащие числа (только).
Возвращает A > B, B < A или A = B, code 1, 2 и 3.
This program compares two strings, which contains numbers (only).
It returns: A > B, B < A or A = B, code 1, 2 and 3.
Если в начале одной из переменных есть нули, то
переменные а и b должны быть в одинарных или двойных кавычках -
Для А=044 и B=44 без кавычек приведет к неверному выводу. Для А='044' и B='44' -
результат должен быть корректным.
*/
function numbers_diff( $a , $b ) {
}
numbers_diff( ( int) $a , ( int) $b ) ;
?>
В функции на всякий случай приведение к int переменных.
Функция также корректно обрабатывает знак минус, т.е. можно задать так:
a='-10';
b='2';
Часть на С
CODE (
c ):
скопировать код в буфер обмена
/*
Данная программа сравнивает две строки, содержащие числа (только).
Возвращает A > B, B < A или A = B, code 1, 2 и 3.
Внимание! при сравнениии A = 123, B=0023 - результат будет неверным.
This program compares two strings, which contains numbers (only).
It returns: A > B, B < A or A = B, code 1, 2 and 3.
Attention! A = 123, B=0023 gives incorrect result.
*/
#include <stdio.h>
/*Функция печати результата*/
int ret( int r) {
return r;
}
int main( int argc, char * argv[ ] ) {
int r = 0 ;
/*Переменная с кодом результата
Проверим ввод аргументов*/
if ( argc != 3) {
printf ( "Restart it with two arguments!\n " ) ; return ret( 0) ;
}
int i = 0 ;
int j = 0 ;
/*Проверим знаки*/
if ( argv[ 1 ] [ 0 ] == '-' && argv[ 2 ] [ 0 ] != '-' ) return ret( 2) ;
if ( argv[ 2 ] [ 0 ] == '-' && argv[ 1 ] [ 0 ] != '-' ) return ret( 1) ;
//Считаем число символов в аргументах
while ( argv[ 1 ] [ i] != '\0 ' ) i++;
while ( argv[ 2 ] [ j] != '\0 ' ) j++;
/*Печатаем, то, кoторое больше, если числа отриц.*/
if ( argv[ 2 ] [ 0 ] == '-' && argv[ 1 ] [ 0 ] == '-' ) {
if ( j > i) return ret( 1) ;
if ( j < i) return ret( 2) ;
}
/*Печатаем, то, кoторое больше, если числа полож.*/
else {
if ( j > i) return ret( 2) ;
if ( j < i) return ret( 1) ;
}
/*Ищем первый больший знак от начала аргументов*/
i = 0 ;
/*Если числа положительные (без знака -минус)*/
if ( argv[ 2 ] [ 0 ] != '-' && argv[ 1 ] [ 0 ] != '-' ) {
while ( i != j) {
/*Если A < B и неотрицательные
Если A > B и неотрицательные*/
if ( argv[ 1] [ i] < argv[ 2] [ i] ) return ret( 2) ;
if ( argv[ 1] [ i] > argv[ 2] [ i] ) return ret( 1) ;
i++;
}
}
/*Инвертируем*/
else {
i = 0 ;
while ( i != j) {
if ( argv[ 1] [ i] < argv[ 2] [ i] ) return ret( 1) ;
if ( argv[ 1] [ i] > argv[ 2] [ i] ) return ret( 2) ;
i++;
}
}
/*Аргументы равны*/
ret( 3) ;
return r;
}
(Отредактировано автором: 30 Мая, 2018 - 20:43:18)
-----Март 2021. Бросил программирование