перевод с С++ на С

Тема в разделе "C/C++/C#", создана пользователем Zewer, 13 янв 2011.

Статус темы:
Закрыта.
  1. Zewer

    Zewer Гость

    просьба перевести с С++ на С
    Код (C++):
    #include <iostream>
    #include <cstdlib>

    int main()
    {
    int n, m, i, j;
    std::cout << "Input row count:\n> ";
    std::cin >> n;
    std::cout << "Input column count:\n> ";
    std::cin >> m;

    int** matr = new int*[n];
    for (i = 0; i < n; ++i)
    matr[i] = new int[m];

    for (i = 0; i < n; ++i)
    for (j = 0; j < m; ++j)
    matr[i][j] = rand() % 100;
    for (i = 0; i < n; ++i)
    for (j = m >> 1; j < m; ++j)
    matr[i][m - j - 1] = matr[i][j];

    std::cout << "Result matrix:"<<std::endl;
    for (i = 0; i < n; ++i, std::cout << std::endl)
    for (j = 0; j < m; ++j)
    std::cout << matr[i][j] << " ";
    return EXIT_SUCCESS;
    }
    и повозможности исправить ошибки, задачка по которой писалась прога:
    Заполнить матрицу случайными числами. Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси
    наперед спасибо
     
  2. ierofant

    ierofant Гость

    Что тут переводить-то? :rolleyes:
    C++ std::cout; C printf
    C++ std::cin; C scanf
    C++ new; C malloc

    Всего-то делов, поменять три конструкции.
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    ierofant
    Ты забыл про объявление переменных вначале функции.
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int **  matr;
    int n, m, i, j;

    printf( "Input row count: " );
    scanf( "%d", &n );
    printf( "Input column count: " );
    scanf( "%d", &m );

    matr = (int **)malloc( n * sizeof( int * ) );
    for ( i = 0; i < n; ++i ) {
    matr[i] = (int *)malloc( m * sizeof( int ) );
    }

    for ( i = 0; i < n; ++i ) {
    for ( j = 0; j < m; ++j ) {
    matr[i][j] = rand() % 100;
    }
    }

    for ( i = 0; i < n; ++i ) {
    for ( j = m >> 1; j < m; ++j ) {
    matr[i][m - j - 1] = matr[i][j];
    }
    }

    printf( "Result matrix:\n" );
    for ( i = 0; i < n; ++i ) {
    for ( j = 0; j < m; ++j ) {
    printf( " %3d", matr[i][j] );
    }
    printf( "\n" );
    }

    return 0;
    }
    Ошибки не исправлял.
     
  4. ierofant

    ierofant Гость

    Не-а...)) Это для старого кода. В C99 их можно объявлять где угодно. Даже внутри оператора for.
    Код (C++):
    for (int i = 0; i < n; ++i )
    - поддерживается стандартом C99.
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    В этом ты прав!)) Но с другой стороны, автор не говорил о стандарте. Выходит мой вариант более универсален))
     
  6. Zewer

    Zewer Гость

    lazybiz
    да ти прав, о стандартах не било ни слова)
    перевод помог, ошибки поправил, все пашет, спасибо большое
     
  7. ierofant

    ierofant Гость

    Эх, прискорбно всё это, скоро в мир выйдет стандарт C1x, а мы ещё с С90 на С99 не перешли. :rolleyes:
     
  8. Zewer

    Zewer Гость

    пошол флуд....)))))))))
    почему я не могу добавить репу lazybiz
     
  9. Zewer

    Zewer Гость

    ага, спасибо понял
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    ierofant
    Хе)) Как ты думаешь, почему, к примеру, такое современное творение как ядро Linux пишется не на С++ ? (акцент на плюсах)
    Считаешь что все его разработчики устарели?))
     
  11. ierofant

    ierofant Гость

    Это не совсем тоже самое. Я не сравнивал между собой С и С++. О С++ я вообще не говорил в этом посте. Я сравнивал лишь стандарты языка C друг с другом.
    А пишут его на C они по двум причинам:
    1) Историческая (переносить ядро с C на С++ было бы слишком хлопотно, да и смысла особого нет). Google Chrome OS, например, пишется на C++, так как они начали с него и им не надо переносить большое количество кода на другой язык.
    2) С всё таки быстрее в большинстве случаев.
    И я бы не сказал, что ядро linux современное творение у него очень давняя история, но оно не стоит на месте и постоянно развивается.
     
  12. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Тут дискуссии можно бесконечные устраивать. Закрыто.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей