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
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 26.05.2010, 12:25
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
нужен такой массив. что бы по числу извлечь строку.
123 - abc
5694 - qwe
9999 - asdf
char* str[9999] для 3х строк не вариант. а как сделать?
заюзать map?
map <int,string> str;
и выполнять такой код?
str[123]="abc";
str[5694]="qwe";
str[9999]="asdf";
мне всего то нужно проверять есть ли строка соответствующая числу, и выводить её если есть. а как сделать не придумать)
_http://www.cplusplus.com/reference/stl/map/
 
Ответить с цитированием

  #2  
Старый 26.05.2010, 15:31
zeppe1in
Постоянный
Регистрация: 12.07.2006
Сообщений: 327
Провел на форуме:
1654818

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

Цитата:
Прикольно, а откуда строки то? Намертво вшиты в код?
да, вшиты намертво.
Цитата:
обязательно использование массива?
нет. мне всего то нужно проверять есть ли строка соответствующая числу, и выводить её если есть.
Цитата:
http://www.cplusplus.com/reference/stl/map/
ну я читал это. и что?

пока остановился на мапе и его инициализации в начале.
 
Ответить с цитированием

  #3  
Старый 27.05.2010, 14:24
Gin
Участник форума
Регистрация: 11.09.2008
Сообщений: 107
Провел на форуме:
262809

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

Есть проблема такого характера, хотел бы чтоб с формы можно было задавать кол-во потоков в приложении использую TThread использую такое объявлений
Код:
int nThreds = StrToInt(Edit1->Text); 
Thread *thr[nThreds];
for(int i=0;i<nThreads;i++){
thr[i] = new Thread(false);
}
пишет ошибку [BCC32 Error] Constant expression required

Использую как видите Builder помогитре разобраться плз
 
Ответить с цитированием

  #4  
Старый 27.05.2010, 14:30
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

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

Цитата:
Сообщение от Gin  
Есть проблема такого характера, хотел бы чтоб с формы можно было задавать кол-во потоков в приложении использую TThread использую такое объявлений
Код:
int nThreds = StrToInt(Edit1->Text); 
Thread *thr[nThreds];
for(int i=0;i<nThreads;i++){
thr[i] = new Thread(false);
}
пишет ошибку [BCC32 Error] Constant expression required

Использую как видите Builder помогитре разобраться плз
Код:
int nThreds = StrToInt(Edit1->Text); 
Thread *thr = new Thread[nThreds];
}
 
Ответить с цитированием

  #5  
Старый 28.05.2010, 06:49
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Цитата:
Сообщение от Gin  
Есть проблема такого характера, хотел бы чтоб с формы можно было задавать кол-во потоков в приложении использую TThread использую такое объявлений
Написано же, используй константу.
Код:
const int nMaxThreads = 1000;
int nThreads = StrToInt(Edit1->Text); 
Thread *thr[nMaxThreads];
for(int i=0;i<nThreads;i++){
thr[i] = new Thread(false);
}
 
Ответить с цитированием

  #6  
Старый 28.05.2010, 18:52
qwert135
Познающий
Регистрация: 22.11.2009
Сообщений: 53
Провел на форуме:
33126

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

Всем привет. Проблема в следующем.
Код:
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;


void Diagonal(double **A, int NumberOfEquation) {
	double *temp_massiv;
	int i, j;
	double max, replace;

	temp_massiv = new double[NumberOfEquation];
	for(i = 0;i < NumberOfEquation;i++){
		max = A[i][0];									
		for(j = 0;j < NumberOfEquation;j++){
			if(A[i][i] != 0) continue;					
			else{
				if(A[i][j] >= max) max = A[i][j];		
				temp_massiv[i] = max;					
			}
		}
	}
	for(i = 0;i < NumberOfEquation;i++){				
		for(j = 0;j < NumberOfEquation;j++){			
			if(A[i][j] == temp_massiv[i]){
				replace = A[i][i];
				A[i][i] = A[i][j];
				A[i][j] = replace;
			}
		}
	}
	delete []temp_massiv;
}


int SimpleIteration(double **A, double *B, int NumberOfEquation, double *solution, double fault_input) {
	int i, j, step = 1;
	double *TempSolution;

	TempSolution = new double[NumberOfEquation];
	double fault = fault_input + 1;
	
	for(i = 0;i < NumberOfEquation;i++) {
		for(j = 0;j < NumberOfEquation;j++) {
			if(i != j) {
				A[i][j] = -A[i][j] / A[i][i];
			}
		}
		B[i] = B[i] / A[i][i];
		A[i][i] = 0;
	}
	
	for(i = 0;i < NumberOfEquation;i++) {
		solution[i] = B[i];
	}
	
	
	while(fault > fault_input && step <= 1000) {
		for(j = 0;j < NumberOfEquation;j++) {
			TempSolution[j] = 0;
		}
		for(i = 0;i < NumberOfEquation;i++) {
			for(j = 0;j < NumberOfEquation;j++) {
				TempSolution[i] = TempSolution[i] + A[i][j]*solution[j];
			}
			TempSolution[i] = TempSolution[i] + B[i];
		}
		fault = 0.0;
		for(j = 0;j < NumberOfEquation;j++) {
			fault = fault + (solution[j] - TempSolution[j])*(solution[j] - TempSolution[j]);
		}
		fault = sqrt(fault);
		for(j = 0;j < NumberOfEquation;j++) {
			solution[j] = TempSolution[j];
		}
		step++;
	}
	delete []TempSolution;
	return step;
}

void file_input_output(){
	int i, j, row = 0, column = 0;
	double **A, *B, *solution, **temp_matrix, fault_input;
	char k[128];
	//вычисляем размерность введенной расширенной матрицы системы
	ifstream in("input_data.txt");
	while(true) {
		in.read(k, 1);
		if(k[0] == ' ') column++;
		if(k[0] == '\n'){
			row++;
			column++;
		}
		if(in.eof()){
			row++;
			column++;
			break;
		}
	}
	column = column/row;
	in.close();
	//выделяем память под матрицу коэффициентов при неизвестных
	A = new double*[row];
	for(i = 0;i < row;i++){
		A[i] = new double[row];
	}
	//выделяем память под вектор свободных членов
	B = new double[row];
	//выделяем память под вспомогательную матрицу
	temp_matrix = new double*[row];
	for(i = 0;i < column;i++){
		temp_matrix[i] = new double[row];
	}
	//выделяем память под вектор неизвестных
	solution = new double[row];
	//считываем матрицу во временный массив
	ifstream fin("input_data.txt");
	for(i = 0;i < row;i++){
		for(j = 0;j < column;j++){
			fin >> temp_matrix[i][j];
		}
	}
	fin.close();
	//из временного массива выбираем нужные элементы

	//для матрицы коэффициентов при неизвестных
	for(i = 0;i < row;i++){
		for(j = 0;j < column - 1;j++){
			A[i][j] = temp_matrix[i][j];
		}
	}
	//для вектора свободных членов
	for(i = 0;i < row;i++){
		for(j = column - 1;j > column - 2;j--){
			B[i] = temp_matrix[i][j];
		}
	}
	Diagonal(A, row);
	cout << "Введите точность вычислений: ";							
		cin >> fault_input;
	int steps = SimpleIteration(A, B, row, solution, fault_input);
	if(steps > 1000) {
		cout << "Ошибка!!! Возможные причины:\n";
		cout << "1)Слишком большое количество итераций.\n";
		cout << "2)Какие-либо строки(столбцы) линейно зависимы.\n";
	}
	else {
		ofstream out("solution.txt");									
		out << "Решение СЛАУ:\n";
		for(j = 0;j < row;j++) {
			out << solution[j] << "\n";
		}
		out << "Количество итераций: " << steps;
		cout << "Результат вычислений записан в файл 'solution.txt'.\n";
		out.close();
		system("solution.txt");
	}
	//очищаем выделенную память, здесь все нормально
	for(i = 0;i < row;i++) {
	    delete []A[i];
	}
	delete []A;
	delete []B;
	delete []solution;
	//а вот на этом месте,при очистки памяти выделенной под временный
	//массив, прога при работе выдает ошибку(компилится все норм)
	for(i = 0;i < column;i++){
		delete []temp_matrix[i];
	}
	delete []temp_matrix;
}

int main() {
	cout << "Данная программа предназначена для решения СЛАУ методом простых итераций.\n";
    file_input_output();
	system("pause");
	return 0;
}
Вот сама ошибка, среда VS2010.
Код:
Debug Assertion Failed!
...
Expression:_CrtIsValidHeapPointer(pUserData)
...
Плиз, помогите разобраться что не так, просто раньше норм все работало, а щас че т не хочет.
 
Ответить с цитированием

  #7  
Старый 28.05.2010, 19:20
Linkus
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме:
436500

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

Цитата:
Сообщение от qwert135  
Плиз, помогите разобраться что не так, просто раньше норм все работало, а щас че т не хочет.
приведи пример входного файла
 
Ответить с цитированием

  #8  
Старый 28.05.2010, 19:45
qwert135
Познающий
Регистрация: 22.11.2009
Сообщений: 53
Провел на форуме:
33126

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

Код:
10 1 1 12
2 10 1 13
2 2 10 14
Все элементы записаны через пробел, лишних нет(пробелов).Количество сторок и столбцов в функции file_input_output() вычисляется верно, проверял.И, кстати, когда открывается файл "solution.txt" решение в нем верное записано.
P.S. какими функциями можно проверить состояние памяти, как например MemAvail и MaxAvail в паскале?

Последний раз редактировалось qwert135; 28.05.2010 в 19:54..
 
Ответить с цитированием

  #9  
Старый 27.05.2010, 15:17
Gin
Участник форума
Регистрация: 11.09.2008
Сообщений: 107
Провел на форуме:
262809

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

2rudvil
Не не подходит твоим методом выдает то что нужно инициализировать конструктор.
 
Ответить с цитированием

  #10  
Старый 27.05.2010, 17:33
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме:
1576821

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

Цитата:
list<Thread> dd;
for (int i = 0; i < 10;i++)
{
dd.push_back(Thread(false));
}
в пень массивы, и динамическую память
 
Ответить с цитированием
Ответ



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



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


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




ANTICHAT.XYZ