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

Перевести код с C - C++

Восстановить пароль Регистрация
 
nnina
 Аватар для nnina
2 / 2 / 0
Регистрация: 12.11.2011
Сообщений: 69
17.12.2011, 09:12     Перевести код с C #1
Не получается перевести из С в C++:

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
#include <stdio.h>
#include <stdlib.h>
using namespace std;
 
int mycompare(int first, int second)
{
        if(first > second)      return 1;
        else if(first == second)        return 0;
        else if(first < second) return -1;
}
int main()
{
        int a, b, res;
        printf("Input number A:\t");
        scanf("%d", &a);
        printf("Input number B:\t");
        scanf("%d", &b);
        res = mycompare(a, b);
        if(res == 1)    printf("%d > %d\n", a, b);
        else if(res == 0)       printf("%d = %d\n", a, b);
        else if(res == -1)      printf("%d < %d\n", a, b);
        system("pause");
        return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 09:12     Перевести код с C
Посмотрите здесь:

C++ Перевести код с С
Перевести код с С C++
C++ Перевести код с Pascal
C++ Перевести код на С++
C++ Перевести код на c++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
17.12.2011, 09:27     Перевести код с C #2
В С оно уже не компилируется из-за using, а вот в c++ - должно.
Но, насколько я понимаю, нужно примерно следующее
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int mycompare(int first, int second)
{
        if (first > second)      return 1;
        else if (first == second) return 0;
        else if (first < second) return -1;
}
int main()
{
        int a, b, res;
        std::cout << "Input number A:\t";
        std::cin >> a;
        std::cout << "Input number B:\t";
        std::cin >> b;
        res = mycompare(a, b);
        if(res == 1) 
             std::cout << a << " > " << b << std::endl;
        else if(res == 0)
             std::cout << a << " = " << b << std::endl;
        else if(res == -1) 
             std::cout << a << " < " << b << std::endl;
        system("pause");
        return 0;
}
Ах да, не советую использовать using без крайней на то необходимости - может привести к undefined behaviour
nnina
 Аватар для nnina
2 / 2 / 0
Регистрация: 12.11.2011
Сообщений: 69
17.12.2011, 09:46  [ТС]     Перевести код с C #3
Спасибо, скомпилировалась
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.12.2011, 10:22     Перевести код с C #4
Функция mycompare определенно уменьшила количество кода и сделала его проще
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.12.2011, 11:00     Перевести код с C #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Уже бы так сделали
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int mycompare(int first, int second)
{
        return first - second;
}
int main()
{
        int a, b, res;
        std::cout << "Input number A:\t";
        std::cin >> a;
        std::cout << "Input number B:\t";
        std::cin >> b;
        res = mycompare(a, b);
        if(res > 0) 
             std::cout << a << " > " << b << std::endl;
        else if(res == 0)
             std::cout << a << " = " << b << std::endl;
        else 
             std::cout << a << " < " << b << std::endl;
        system("pause");
        return 0;
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.12.2011, 11:02     Перевести код с C #6
Цитата Сообщение от go Посмотреть сообщение
Уже бы так сделали
Ненадежно. Что будет, если передать два числа близких к INT_MIN?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.12.2011, 11:09     Перевести код с C #7
fasked, тогда так
C
1
long mycompare(int first, int second)
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.12.2011, 11:10     Перевести код с C #8
Цитата Сообщение от go Посмотреть сообщение
тогда так
Тогда чисто технически long не обязан быть больше int
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.12.2011, 11:20     Перевести код с C #9
fasked, Поясните пожалуйста.
signed int (допустим 2 байт) мин = -32768
-32768 - -32767 == 1

Цитата Сообщение от fasked Посмотреть сообщение
Что будет, если передать два числа близких к INT_MIN?
наверное, вы хотели сказать, что
-32768 - + 32767 < -2147483648 (long)
тогда так
C
1
2
3
4
int mycompare(int first, int second)
{
        return (long)first - second;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 11:29     Перевести код с C
Еще ссылки по теме:

Перевести код с Pascal C++
C++ Перевести код с C# на C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.12.2011, 11:29     Перевести код с C #10
Цитата Сообщение от go Посмотреть сообщение
наверное, вы хотели сказать, что
Да Малость ошибся. Имел в виду такой случай.
C
1
2
3
4
5
6
7
8
9
10
11
#include <limits.h>
#include <stdio.h>
 
int cmp(int a, int b) {
   return a - b;
}
 
int main() {
   printf("%d\n", cmp(INT_MIN, INT_MAX));
   return 0;
}
Первое число меньше второго. Но в результате получается единица.
Цитата Сообщение от go Посмотреть сообщение
тогда так
По этому поводу я уже сказал, что чисто технически long может быть равен int по ширине.

А мораль в том, что для чисел функция бесполезна в данном случае. Ее применение может быть оправдано только как колбэка, например, для qsort. И самым надежным способом будет явное сравнение чисел с помощью if/else. А то могут быть недоразумения, при чем весьма неочевидные.
Yandex
Объявления
17.12.2011, 11:29     Перевести код с C
Ответ Создать тему
Опции темы

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