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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 23:17   #1
Grizer
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 2
По умолчанию Сортировка строк матрицы(Си + Ассемблерная вставка)

Написать программу на языке СИ, которая в двумерном массиве сортирует строки в порядке возрастания их характеристик(в данном случае, характеристикой строки массива является сумма четных, положительных элементов).

Нужно сделать подсчет характеристик, используя ассемблерную вставку
Эту часть программы

Код:
for (i = 0; i < N; i++)
	{
		for (j = 0; j < N; j++)
		{
			if (x[i][j] > 0 && x[i][j] % 2 == 0)
				x[i][N] = x[i][N] + x[i][j];
		}
Вся программа

Код:
#include <stdio.h>
#include <stdlib.h>
#define N 4
 
void main(void)
{
    int x[N][N+1];
    int i, j, k;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            x[i][j] = 1 + rand() % 5;
            x[i][N] = 0;
            printf(" %d ", x[i][j]);
        }
        printf("\n");
    }
 
 
    printf("\n");
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            if (x[i][j] > 0 && x[i][j] % 2 == 0)
                x[i][N] = x[i][N] + x[i][j];
        }
    }
 
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N + 1; j++)
        {
            printf(" %d ", x[i][j]);
        }
        printf("\n");
    }
 
    printf("\n");
    for (k = 0; k < N; k++)
    {
            for (i = 0; i < N-1; i++)
            {
 
                if (x[i+1][N] > x[i][N])
                {
                    for (j = 0; j < N+1; j++)
                    {
                        int a = x[i][j];
                        x[i][j] = x[i + 1][j];
                        x[i + 1][j] = a;
                    }
                }
            }
    }
 
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N+1; j++)
        {
            printf(" %d ", x[i][j]);
        }
        printf("\n");
    }
}
Grizer вне форума Ответить с цитированием
Старый 26.06.2015, 06:59   #2
Grizer
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 2
По умолчанию

Проблема решилась сама собой

Если кому-нибудь понадобится, то вот код

Код:
#include <stdio.h>
#include <stdlib.h>
#define N 4
#define M 20
void main(void)
{
	int x[N][N+1];
	int i, j, k,p=10;
	for (i = 0; i < N; i++)
	{
		for (j = 0; j < N; j++)
		{
			x[i][j] = 1 + rand() % 5;
			x[i][N] = 0;
			printf(" %d ", x[i][j]);
		}
		printf("\n");
	}
	printf("\n");

		_asm
		{
				lea esi, x
					xor eax, eax
					xor edx, edx
					mov ecx, (N+1)*N

				cycle1 :
				mov ebx, M
					sub ebx, ecx
					mov eax, [esi+ebx*4]
					cmp eax, 0
					jle J
				J :
				test eax, 1
					jne l2
					add edx, eax
					cmp eax, 0
					jnz l2
					mov[esi+ebx*4], edx
					xor edx, edx
				l2 :
				loop cycle1
		}

	for (i = 0; i < N; i++)
	{
		for (j = 0; j < N + 1; j++)
		{
			printf(" %d ", x[i][j]);
		}
		printf("\n");
	}

	printf("\n");
	for (k = 0; k < N; k++)
	{
			for (i = 0; i < N-1; i++)
			{

				if (x[i+1][N] > x[i][N])
				{
					for (j = 0; j < N+1; j++)
					{
						int a = x[i][j];
						x[i][j] = x[i + 1][j];
						x[i + 1][j] = a;
					}
				}
			}
	}

	for (i = 0; i < N; i++)
	{
		for (j = 0; j < N+1; j++)
		{
			printf(" %d ", x[i][j]);
		}
		printf("\n");
	}

}
Grizer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблерная вставка на С++ CrashOveride Помощь студентам 1 01.04.2014 08:42
ассемблерная вставка Веди Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 15 12.07.2012 13:34
Ассемблерная вставка на Си faop Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 11.03.2011 11:03
Ассемблерная вставка! treki Помощь студентам 0 16.06.2010 00:15