Ответы пользователя по тегу C
  • Как правильно разделить Си проект на файлы?

    @FD4A
    Хорошая архитектура только косвенно зависит от языка программирования. Я бы рекомендовал почитать Чистую архитектуру Роберта Мартина, читается легко и всё по делу.
    Ответ написан
    Комментировать
  • Как можно сравнить строки в C?

    @FD4A
    Для более безопасной работы со строками в си лучше использовать семейство функций strn, например strncmp().
    Ответ написан
    Комментировать
  • Как сделать пробел после буквы(в моем случае после запятой), когда она находится в массиве?

    @FD4A
    Пробел это символ. Почему вы все символы пишите отдельными литералами, а пробел с запятой вместе? И про символ конца строки не забывайте '\0'. Можете напечатать sizeof arr и arr2, прочитайте про строковые и символьные литералы в Си.
    char arr[] = "HELLO, WORLD!";//13+1 символ конца строки
    char arr2[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'};
    printf("%s\n%s\n",arr,arr2);

    Можете из arr2 убрать '\0' и посмотреть результат печати.
    Ответ написан
  • Как по заданой матрице построить другую по формуле?

    @FD4A
    for(int i=0; i<n; i++)
      {
        a[i][i]=i;
        b[i][i]=0;
      }

    Первое: тут явно не все элементы массивов будут инициализированны. Посмотрите как вы выводите двумерный массив на печать в конце:
    for(int i=0; i<n; i++)
      {
        for(int j=0; j<n; j++)
        {
          cout<<b[i][j]<<" ";
        }
        cout<<endl;
      }

    Аналогично нужно проводить заполнение при помощи двух циклов. Ещё наверное стоит заполнить матрицу а случайными целыми (функция rand()) и выводить обе матрицы а и b.
    Заполнение:
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
             a[i][j]=rand();
             b[i][j]=-1;
        }
    }

    Далее во втором цикле начинаем обход столбцов со второго.
    for(int j=1; j<n; j++)
    Почему не с первого с индексом 0? Ведь нужно получить ответ для каждого элемента в матрице b.

    Как только получите правильное заполнение надо взять листочек бумаги и подумать как получать минимум по области тета. В первом столбце матрицы b в i-ой строке явно стоит элемент который меньше всех остальных пройденных до него. Из этого следует, что можно использовать промежуточную матрицу С у которой элемент i,j это минимум в данной части столбца j от его начала до строки i. И тогда если нужно получить b(i,j) нужно просто взять минимальный из элементов на "диагональной" границе области тета в матрице С.
    Ответ написан
    Комментировать
  • С чего начать писать задание?

    @FD4A
    Чтобы решить задачу бейте на подзадачи, в Вашем вопросе собственно уже всё есть:
    1) Ввод массива
    2) Слияние двух массивов
    3) Алгоритм быстрой сортировки
    Каждая из задач легко находится в поисковике. Хорошо бы ещё иметь тесты, которые докажут правильность решения задач.
    Ответ написан
    Комментировать