ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2021  
Старый 13.12.2009, 22:43
BitHack
Познающий
Регистрация: 14.01.2008
Сообщений: 50
Провел на форуме:
1065528

Репутация: 105
Отправить сообщение для BitHack с помощью ICQ
По умолчанию

Цитата:
Сообщение от ss88  
Вот тебе на С. Дополнительная сортировка номеров столбцов не нужна, т.к. они и так в массиве по-порядку
Код:
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

typedef struct {
	int* col_nums;
	int col_count;
} matrix_info_t;

#define N 3

matrix_info_t* scan_matrix(int* M, int n);

int main(int argc, char** argv)
{
	int M[N*N] = {
		5,2,3,
		4,3,2,
		3,4,1
	};
	
	matrix_info_t * m_info = scan_matrix(M, N);
	
	(void)printf("Номера столбцов:\n");
	for(int i = 0; i < m_info->col_count; i++){
		(void)printf("%d ", m_info->col_nums[i]);
	}
	
	(void)printf("\nНомера столбцов в квадрате:\n");
	for(int i = 0; i < m_info->col_count; i++){
		(void)printf("%d ", m_info->col_nums[i]*m_info->col_nums[i]);
	}
	
	(void)printf("\n");
	
	return 0;
}

matrix_info_t* scan_matrix(int* M, int n){
	
	matrix_info_t * ret = malloc(sizeof(matrix_info_t));
	ret->col_count = 0;
	
	for(int j = 0; j < n; j++){
		bool correct_column = true;
		for(int i = 1; i < n; i++){
			if(M[N*(i - 1) + j] < M[N*i + j]){
				correct_column = false;
				break;
			}
		}
		
		if(correct_column){
			ret->col_nums = realloc(ret->col_nums, sizeof(int) * ret->col_count++);
			ret->col_nums[ret->col_count - 1] = j;
		}
	}
	
	return ret;
	
}
я забыл написать, что нужно написать на паскале)))
можешь переписать пожалуйста)
 
Ответить с цитированием

  #2022  
Старый 13.12.2009, 23:20
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

Цитата:
Сообщение от Nelson17  
Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++
Не путай С и С++
Вот:
Код:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

void fill_matrix(int* matrix, int m, int n);
void print_matrix(int* matrix, int m, int n);
void sort_matrix(int* matrix, int m, int n);

int main(int argc, char** argv)
{
	int m, n;
	(void) printf("Введите количество строк: ");
	(void) scanf("%d", &m);
	(void) printf("Введите количество столбцов: ");
	(void) scanf("%d", &n);
	
	int * matrix = malloc(m * n * sizeof(int));
	
	fill_matrix(matrix,m,n);
	
	print_matrix(matrix,m,n);
	
	(void) printf("Сортировка\n");
	
	sort_matrix(matrix,m,n);
	
	print_matrix(matrix,m,n);
	
	return 0;
}

void fill_matrix(int* matrix, int m, int n){
	for(int i = 0; i < m; i++){
		for(int j = 0; j < n; j++){
			int r = rand() % 51;
			matrix[m*i + j] = (r % 2)?-r:r;
		}
	}
}

void print_matrix(int* matrix, int m, int n){
	(void) printf("\nМатрица [%d,%d]\n", m, n);
	
	for(int i = 0; i < m; i++){
		for(int j = 0; j < n; j++){
			(void) printf("%3d ", matrix[m*i + j]);
		}
		(void) printf("\n");
	}
	(void) printf("\n");
}

void sort_matrix(int* matrix, int m, int n){
	for(int i = 0; i < m; i++){
		bool cond = true;
		while(cond) {
			cond = false;
			for(int j = 0; j < n - 1; j++){
				if(i % 2){
					if(matrix[m*i + j] < matrix[m*i + j + 1])
						cond = true;
				} else {
					if(matrix[m*i + j] > matrix[m*i + j + 1])
						cond = true;
				}
				
				if(cond){
					int swp = matrix[m*i + j];
					matrix[m*i + j] = matrix[m*i + j + 1];
					matrix[m*i + j + 1] = swp;
				}
			}
		}
	}
}
Результаты в таком виде:
Цитата:
rocky@rocky-laptop:~$ ./s
Введите количество строк: 4
Введите количество столбцов: 4

Матрица [4,4]
10 -49 -9 34
32 -37 -37 48
-45 -19 -5 -31
20 -19 -29 22

Сортировка

Матрица [4,4]
34 10 -9 -49
-37 -37 32 48
-5 -19 -31 -45
-29 -19 20 22
Если не захочет компилироваться в среде, которую ты используешь, то заюзай gcc:
Цитата:
rocky@rocky-laptop:~$ gcc -Wall -pedantic -std=c99 simple_lab3.c -o s
Цитата:
я забыл написать, что нужно написать на паскале)))
можешь переписать пожалуйста)
Какая неописюемая наглость Не могу, я паскаль последний раз видел на 1-м курсе, а это было лет 7 назад, но я запомнил, что его лучше не видеть
Перепиши сам, это не трудно

Последний раз редактировалось ss88; 13.12.2009 в 23:30..
 
Ответить с цитированием

  #2023  
Старый 13.12.2009, 23:27
cheater_man
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
Провел на форуме:
709575

Репутация: 17
По умолчанию

Как считать данные из файла *.txt в Turbo C?
 
Ответить с цитированием

  #2024  
Старый 13.12.2009, 23:31
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

fscanf
 
Ответить с цитированием

  #2025  
Старый 13.12.2009, 23:54
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Цитата:
Сообщение от Alexey2  
А как бы ты реализовал по - другому...?
Ну например так

Код:
function proverk (a:array of integer):integer;
  const seqLength = 3;
  var
    i:integer;
    counter: integer;
  begin
    counter := 0;
    for i:=0 to length(a) do
      if a[i] mod 2 <> 0 then
      begin
        counter := counter + 1;
        if(counter=seqLength) then
          begin
          proverk := i- seqLength + 1;
          exit;
          end
      end
      else
        counter := 0;

      proverk:=0;
  end;

Последний раз редактировалось Algol; 14.12.2009 в 00:06..
 
Ответить с цитированием

  #2026  
Старый 14.12.2009, 00:24
Suliman36
Новичок
Регистрация: 12.12.2009
Сообщений: 13
Провел на форуме:
51050

Репутация: 0
По умолчанию

Помогите пожалуйто реализовать на C++ следующее:
есть файл 1.txt
содержание:
Код:
1
12
123
...
есть файл 2.txt
содержание:
Код:
a
ab
abc
...
нухно из этих двух файлов получить файл 3.txt с содержанием:
Код:
1;a
1;ab
1;abc
12;a
12;ab
12;abc
123;a
123;ab
123;abc
...

Последний раз редактировалось Suliman36; 14.12.2009 в 00:27..
 
Ответить с цитированием

  #2027  
Старый 14.12.2009, 01:54
Alexey2
Новичок
Регистрация: 30.05.2009
Сообщений: 12
Провел на форуме:
69608

Репутация: 0
По умолчанию

Algol и Thenno бальшущее спасибо
 
Ответить с цитированием

  #2028  
Старый 14.12.2009, 08:38
PALMA
Новичок
Регистрация: 22.02.2009
Сообщений: 12
Провел на форуме:
105413

Репутация: 4
Отправить сообщение для PALMA с помощью ICQ
По умолчанию

помогите пожалуйста решить задачи

 
Ответить с цитированием

Помогите решить:
  #2029  
Старый 14.12.2009, 14:58
marcos
Участник форума
Регистрация: 08.11.2009
Сообщений: 114
Провел на форуме:
201148

Репутация: -4
По умолчанию Помогите решить:

По заданной сетке букв рахмером m*x и списку слов определить позицию в сетке, в которой находится это слово. Слово в сетке может распологаться только по прямой непрерывной линии букв. Регистр букв значения для совпадения не имеет (т.е. строчные и прописные буквы считаются одинаковыми). Слово может распологаться в любом из 8 диагоналей, горизонтальных и вертикальных направлений.

Дается дв числа 1<=m,n<=50. Следующие m строк содержат ровно по n букв каждая. В сетке могут быть и прописные и заглавные буквы. Далее следует число k(при чем 1<=k<=20). Следующие К строк содержат список слов для поиска, одно слово в строке. Эти строки состоят из букв, никаких пробелов, дефисов и других симолов.
 
Ответить с цитированием

  #2030  
Старый 14.12.2009, 15:19
Rammstex
Новичок
Регистрация: 21.11.2006
Сообщений: 5
Провел на форуме:
29759

Репутация: -1
Отправить сообщение для Rammstex с помощью ICQ
По умолчанию

Такой вопрос. 16 января экзамен по инфе(теория, язык C).
Кто мог бы (согласен даже за умеренную плату) находиться с утра в ICQ, дабы помочь?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сюда выкладываем все проги для фрикринга мобильников, которых знаем! nigger Сотовый фрикинг 5 11.04.2009 11:15
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ