HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

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

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

  #2951  
Старый 12.05.2009, 02:24
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Цитата:
Сообщение от n4e/\@  
Первый раз ошибся, исправляюсь:
Код:
#include <iostream>
#include <stdlib.h>    
#include <string.h>
int main()
{
	char a[2] = "A";
	char b[2] = "6";
	strcat(a,b);
	int x = strtol(a, NULL, 16);
	std::cout << x << std::endl;
	return 0;
}
Сам проверил, все работает.
char a[2] = "A";
char b[2] = "6";
strcat(a,b);

за это по рукам, ибо убиваешь стек. нужно сделать переменную третью char c [3] = {0}; и strcat'ить ее два раза сначала с a потом с b.
 
Ответить с цитированием

  #2952  
Старый 12.05.2009, 06:54
Glazz
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме:
560332

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

Цитата:
Сообщение от razb  
-static
Я добавляю это в параметры компоновщика, но не канает.
 
Ответить с цитированием

  #2953  
Старый 12.05.2009, 10:38
Que$t
Новичок
Регистрация: 01.04.2009
Сообщений: 12
Провел на форуме:
398460

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

Цитата:
Сообщение от Glazz  
Я добавляю это в параметры компоновщика, но не канает.
extern "C"
так попробуй
 
Ответить с цитированием

  #2954  
Старый 12.05.2009, 17:30
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Можно как то к TransmitFile прикрутить прогресс бар?
 
Ответить с цитированием

  #2955  
Старый 12.05.2009, 19:19
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

ну как вариант отправлять данные блоками например по 10 кб. лучше вообще многопоточность припахать, юзая параметр OVELAPPED. И работать сразу с несколькими блоками за раз. Это спасет от потери скорости в момент конца пересылки одного блока и отправки второго.
 
Ответить с цитированием

  #2956  
Старый 12.05.2009, 21:45
Mosvit
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме:
744734

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

Помогите решить такую задачку на Си:
Написать подпрограмму сортировки 2-мерного массива целых по столбцам (использовать сумму значений столбца), сохранив эти значения во вспомогательной диагонали массива.

Пробовал сначало сделать подсчёт суммы элементов каждой строки, потом сделать сортировку строк на основании их сумм, но выходила какая-то чушь.
Ещё пробовал задать строки в одномерный массив, тоже не смог сделать.

Вообщем вот что у меня вышло, буду рад помощи =)


Код:
#include <stdio.h> 
#define M 3 
#define N 3 
#define MAX 100 // наше ограничение 
void main(void) 
{ 
int array[M][N]; // Объявление двумерного массива 
int i, j; 
int a;
int mas1[M], mas2[M], mas3[M];
// Ввод массива 
for(i=0;i<M;i++) // цикл по строкам 
{ 
for(j=0;j<N;j++) // цикл по элементам строки 
{ 
// Ввод значения элемента массива 
printf(" A[%d][%d]=", i, j); 
scanf("%d",&array[i][j]); 
} 
}
printf("\n");
getch();
//---------------------------------Вывод массива
for(i=0;i<M;i++) // цикл по строкам 
{ 
for(j=0;j<N;j++) // цикл по элементам строки 
{ 
                 
printf("%4d", array[i][j]);

}
printf("\n");

}
printf("\n");
// ---------- Обработка и вывод
for(i=0;i<M;i++) // цикл по строкам 
{ 
for(j=0;j<N;j++) // цикл по элементам строки 
{ 
                 //----- Присваивание элементов строки в одномерный массив
  mas1[i]=array[0][i];
  mas2[i]=array[1][i];
  mas3[i]=array[2][i];
  printf("%4d", mas1[i]);
}
printf("\n");

}
// ------- Вывод суммы элементов каждой строки массива
printf("Summa elemenov strok massiva:\n");
for(i=0;i<M;i++) 
printf("%4d", array[i][0]);
getch();
}
 
Ответить с цитированием

  #2957  
Старый 12.05.2009, 23:04
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Mosvit
дай пример входной матрицы и результата. ибо описание задачи ппц у тебя хромает.

Mozy
try/catch


ps: поцивильнее отформаченый код, ибо с твоим делать что либо банально бесперспективно

Код:
#include "StdAfx.h"
#include <stdio.h> 
#include <conio.h>
#define M 3 
#define N 3 
#define MAX 100 // наше ограничение 

void enter_matrix( int  array[M][N] );
void print_matrix( int array[M][N] );
void process_matrix( int array[M][N] );

void main(void) 
{ 
	int array[M][N] = {{1,2,3},{4,5,6},{7,8,9}}; // Объявление двумерного массива 

	enter_matrix(array);
	print_matrix(array);
	process_matrix(array);

	printf("Summa elemenov strok massiva:\n");
	for(int i=0;i<M;i++) 
		printf("%4d", array[i][0]);
	_getch();
}

void enter_matrix( int array[M][N] )
{
	for(int i=0;i<M;i++){ 
		for(int j=0;j<N;j++){ 
			printf(" A[%d][%d]=", i, j); 
			scanf("%d",&array[i][j]); 
		} 
	}
	printf("\n");
	_getch();
}

void print_matrix( int array[M][N] )
{
	for(int i=0;i<M;i++){ 
		for(int j=0;j<N;j++){ 
			printf("%4d", array[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}

void process_matrix( int array[M][N] )
{
	int mas1[M], mas2[M], mas3[M];
	for(int i=0;i<M;i++){ 
		for(int j=0;j<N;j++){ 
			mas1[i]=array[0][i];
			mas2[i]=array[1][i];
			mas3[i]=array[2][i];
			printf("%4d", mas1[i]);
		}
		printf("\n");
	}
}
 
Ответить с цитированием

  #2958  
Старый 12.05.2009, 23:49
pento
Участник форума
Регистрация: 03.07.2006
Сообщений: 147
Провел на форуме:
438137

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

Цитата:
Сообщение от Mozy  
float n;
cin >> n;
Как сделать,что бы когда пользователь вводил буквы вылезало "сообщение" о том,что ыв этом поле вводится только цифра ?
Код:
#include <iostream>
using namespace std;

int main() {
    float n;
    
    // Enable exceptions in cin.
    cin.exceptions(ios::badbit | ios::failbit);

    try {
        cin >> n;
        cout << "The value is: " << n << endl;
    } catch(const ios::failure& ex) {
        cout << "WTF?! Exception caught! " << ex.what() << endl;
        // Clear the fail state
        cin.clear();
    }
}
 
Ответить с цитированием

  #2959  
Старый 13.05.2009, 09:32
Mosvit
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме:
744734

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

Цитата:
Сообщение от Ra$cal  
Mosvit
дай пример входной матрицы и результата. ибо описание задачи ппц у тебя хромает.
Ну например
Входная матрица:
4 5 6
1 2 3
7 8 9

Результат:
Сортировка по сумме строк:
7 8 9
4 5 6
1 2 3

Запись значений суммы каждой строки в главную диагональ:
15 5 6
1 6 3
7 8 24


P.S за код спасибо
 
Ответить с цитированием

  #2960  
Старый 13.05.2009, 09:59
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

терь понятно. ща чай допью и сделаю, если никто не потревожит

зы: требование четкое не юзать c++ или это просто так сложилось что лаба на си написана? лень писать самому сортировку, хотел из <algorithm> заюзать, в связке с std::vector. или не канает?
короч если алго думаю понятный. если нада на чистом си - переделаешь. чтобы вводить матрицу с клавы снимешь коммент с //enter_matrix(array);

Код:
#include "StdAfx.h"
#include <stdio.h> 
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#include <iostream>

#define M 3 
#define N 3 
#define MAX 100 // наше ограничение 
struct row_info{
	row_info(int _index, int _summ){
		index = _index;
		summ = _summ;
	};

	int index;
	int summ;
};

typedef std::vector<row_info*> ROW_INFO_VECTOR;

bool greater ( row_info* elem1, row_info* elem2 )
{
	return elem1->summ > elem2->summ;
}

void enter_matrix( int  array[M][N] );
void print_matrix( const int array[M][N] );
void process_matrix( int array[M][N] );


void analyze_matrix(const int array[M][N], ROW_INFO_VECTOR& row_infos);
void print_vector (const ROW_INFO_VECTOR& row_infos);
void sort_matrix (const int src_matrix[M][N], int dst_matrix[M][N], const ROW_INFO_VECTOR& row_infos);
void fix_diagonal (int array[M][N], const ROW_INFO_VECTOR& row_infos);
void clear_row_infos (ROW_INFO_VECTOR& row_infos);

void main(void) 
{ 
	int array[M][N] = {{4,5,6},{1,2,3},{7,8,9}}; // Объявление двумерного массива 

	//enter_matrix(array);
	print_matrix(array);
	process_matrix(array);

	_getch();
}

void enter_matrix( int array[M][N] )
{
	for(int i=0;i<M;i++){ 
		for(int j=0;j<N;j++){ 
			printf(" A[%d][%d]=", i, j); 
			scanf("%d",&array[i][j]); 
		} 
	}
	printf("\n");
	_getch();
}

void print_matrix( const int array[M][N] )
{
	for(int i=0;i<M;i++){ 
		for(int j=0;j<N;j++){ 
			printf("%4d", array[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}

void process_matrix( int array[M][N] )
{
	ROW_INFO_VECTOR row_infos;

	analyze_matrix(array, row_infos);
	print_vector(row_infos);
	std::sort(row_infos.begin(), row_infos.end(), greater);
	print_vector(row_infos);

	int sorted_array[M][N];
	sort_matrix(array, sorted_array, row_infos);
	print_matrix(sorted_array);

	fix_diagonal(array, row_infos);
	print_matrix(array);

	clear_row_infos(row_infos);
}

void analyze_matrix( const int array[M][N], ROW_INFO_VECTOR& row_infos )
{
	for(int i=0;i<M;i++){ 
		row_infos.push_back(new row_info(i, 0));
		for(int j=0;j<N;j++){
			row_infos[i]->summ += array[i][j];
		}
	}
}

void sort_matrix (const int src_matrix[M][N], int dst_matrix[M][N], const ROW_INFO_VECTOR& row_infos)
{

	for(unsigned int row_index = 0; row_index < row_infos.size(); row_index++){
		int cur_row = row_infos[row_index]->index;

		for(int column = 0; column < N; column++){
			dst_matrix[row_index][column] = src_matrix[cur_row][column];
		}
	}
}

void fix_diagonal (int array[M][N], const ROW_INFO_VECTOR& row_infos)
{
	for(unsigned int row_index = 0; row_index < row_infos.size(); row_index++){
		int index = row_infos[row_index]->index;
		int summ = row_infos[row_index]->summ;
		array[index][index] = summ;
	}
}

void print_vector (const ROW_INFO_VECTOR& row_infos)
{
	for(unsigned int i = 0; i < row_infos.size(); i++){
		std::cout << "index - " << row_infos[i]->index << " summ - " << row_infos[i]->summ << std::endl;
	}
	std::cout << std::endl;
}

void clear_row_infos (ROW_INFO_VECTOR& row_infos)
{
	for(unsigned int i = 0; i < row_infos.size(); i++){
		row_info* cur = row_infos[i];
		delete cur;
	}
	row_infos.clear();
}

Последний раз редактировалось Ra$cal; 13.05.2009 в 11:00..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



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


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




ANTICHAT.XYZ