Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2017, 19:02   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

По поводу вашей 2 темы про перевод с паскаля на си.

Получилось примерно следующее (это не совсем перевод):
Код:
#include <stdio.h>
#include <stdlib.h>

void Vector(int **a, int n, int *v, int m)
{
    int i, j, max;

    for (i = 0; i < m; i++)
    {
        if (i < n)
        {
            max = a[n - 1 - i][0];
            for (j = n - i; j < n; ++j)
                if (a[j][j + i - n + 1] > max)
                    max = a[j][j + i - n + 1];
        }
        else
        {
            max = a[0][i - n + 1];
            for (j = 1; j < 2 * n - i - 1; ++j)
                if (a[j][j + i - n + 1] > max)
                    max = a[j][j + i - n + 1];
        }

        v[i] = max;
    }
}

int main()
{
    int n, massiv_min, massiv_max;

    printf("\nInput number of rows and columns: "); scanf("%d", &n);
    printf("\nInput the lower border of range: ");  scanf("%d", &massiv_min);
    printf("\nInput the upper border of range: ");  scanf("%d", &massiv_max);

    int i, j, **massiv, m = 2 * n - 1, *v;
    massiv = (int**)malloc(n * sizeof(int*));
    v = (int*)malloc(m * sizeof(int));
    for (i = 0; i < n; ++i)
        massiv[i] = (int*)malloc(n * sizeof(int));

    printf("\nSource massive:\n");

    for (i = 0; i < n; ++i) // getting of random number in range
    {
        for (j = 0; j < n; ++j)
        {
            massiv[i][j] = rand()%(massiv_max - massiv_min + 1) + massiv_min;
            printf("%7d", massiv[i][j]);
        }
        printf("\n");
    }

    Vector(massiv, n, v, m);

    printf("Vector:\n");
    for (i = 0; i < m; ++i)
        printf("%d ", v[i]);
    printf("\n");
    free(v);
    for (i = 0; i < n; ++i)
        free(massiv[i]);
    free(massiv);
    return 0;
}
По поводу:
Код:
  int x, y, i, max;
  max=x-y+1;
Так делать нельзя, так как x и y тоже не инициализированы, то есть max становится инициализирован непонятно чем.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 16.05.2017 в 19:04.
BDA на форуме Ответить с цитированием
Старый 17.05.2017, 19:23   #12
leonid_spartak
Пользователь
 
Регистрация: 18.02.2017
Сообщений: 43
По умолчанию Массивы - Си

Помогите найти ошибки в коде:
Вот Задание: Создать процедуру, формирующую вектор vector2n-1 из максимальных элементов диагоналей целочисленного квадратного массива matrixnn , параллельных его главной диагонали.
Массив строит нормально, а вот вектор обозначает нулями, как быть?
Код:
#include <stdio.h>

int vect[40];
int massiv[50][50];

void Vector(int massiv[50][50], int n, int vect[40])
{
int i, j, k, max;

   for (j = 1; i < n * 2 - 1; j++)
   {
     if (j <= n)
         {
        max=massiv[n-j+1][1];
           for(i=n-j+1; i<n; i++)
                if(massiv[i][i-n+j]>max)
                      max=massiv[i,i-n+j];
                      vect[j]=max;
          }
     else
         {
         max=massiv[1][j-n+1];
            for(i=1; i<n*2-j;i++)
                if (massiv[i][i+j-n]>max)
                  max=massiv[i][i+j-n];
                  vect[j]=max;
         }
     }

}
int main()
{
int i, j, n, massiv_min, massiv_max;

    printf("\nInput number of rows and columns: "); scanf("%d", &n);
	printf("\nInput the lower border of range: ");  scanf("%d", &massiv_min);
	printf("\nInput the upper border of range: ");  scanf("%d", &massiv_max);

    int massiv[n][n];

	printf("\nSource massive:\n");

	for (i=0; i<n; i++) // getting of random number in range
     {
        for (j=0; j<n; j++)
			{
			    massiv[i][j]=rand()%(massiv_max-massiv_min + 1) + massiv_min;
				printf("%7d", massiv[i][j]);
            }
    printf("\n");
	}

 Vector(massiv,n,vect);

  printf("Vector:\n");
    for (i = 1; i < n * 2 - 1; i++)
  printf("%d",vect);
  printf("\n");
}
leonid_spartak вне форума Ответить с цитированием
Старый 17.05.2017, 19:50   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

leonid_spartak, не нужно создавать несколько тем при обсуждении одной и той же задачи. Во-первых, for (j = 1; i < n * 2 - 1; j++). Во-вторых, с индексами элементов проблемы, так как в Си нумерация с 0, а в коде на паскале была с 1.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.05.2017, 20:44   #14
leonid_spartak
Пользователь
 
Регистрация: 18.02.2017
Сообщений: 43
По умолчанию

Спасибо вам большое, программа рабочая, все отлично работает! Теперь я понял в чем были мои ошибки!
leonid_spartak вне форума Ответить с цитированием
Старый 19.05.2017, 21:51   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста. Надеюсь, вы все тщательно проверили.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу массивы (C++) - Даны два массива, скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, что Саша1990 Помощь студентам 1 02.02.2015 16:03
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12