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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 16:29   #1
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
Восклицание работа с функциями при создании динамического массива в С++

Код:
#include<stdio.h>                 
#include<conio.h>                      
#include<stdlib.h>
#include <iostream>
using namespace std;

double read_m (double*mas);
double write_m (double*mas);
double raschet_m (double*mas);
double write_r (double*mas);



int main()
{   double* mas;
	int const N=10;int const M=6; // Размерность масива
    mas = new double [N*M]; // Резервирование памяти для динамического массива
	
	 new double; read_m (mas);
     new double; write_m (mas);
     new double; raschet_m (mas);
     new double; write_r (mas);

     return(0);
}


    int read_m (int*mas)      // Заполнение массива
	{int i,j; 
	int const N=10;int const M=6;
	for (i=0;i<N;i++)	
	   	   for (j=0;j<M;j++)
				*(mas+i*M+j)=rand()%200-100;
	return(0);
	}

	
    int write_m (int*mas)  // Вывод заполненого массива на экран
	{int i,j;
	int const N=10;int const M=6;
	for (i=0;i<N;i++)	
	   	   {
			for (j=0;j<M;j++)
				{
				cout<<*(mas+i*M+j)<<"\t";
				}
			cout<<"\n";
			}
	return(0);
	}

	int raschet_m (int*mas)
	// находим отрицательные элементы массива и если элемент меньше нуля то умножается на -1 (получается положительный)
	{int i,j;
	int const N=10;int const M=6;
	for (i=0;i<N;i++)	
	   	   	for (j=0;j<M;j++)
				if (*(mas+i*M+j)<0)
					*(mas+i*M+j)=*(mas+i*M+j)*(-1);
				
			cout<<"\n";
			return(*(mas+i*M+j));
	}
	
	 int write_r (int*mas)  // Вывод массива
        {int i,j;
	 int const N=10;int const M=6;
		for (i=0;i<N;i++)	
	   	   {
			   for (j=0;j<M;j++)
				{
				cout<<*(mas+i*M+j)<<"\t";
				}
			cout<<"\n";
			}
        
		delete [] mas; // Освобождение памяти

		getch();
 return(0);
		}
переправил старую программу следуя указаниям компилятора при компилировании ошибок не находится при запуске сразу же возникают
понимаю что программа написана не совсем правильно но все же помогите пожалуйста привести ее в рабочий вид
серг вне форума Ответить с цитированием
Старый 14.12.2009, 16:32   #2
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

ошибки нашел сам вот рабочий код
Код:
#include<stdio.h>                 
#include<conio.h>                      
#include<stdlib.h>
#include <iostream>
using namespace std;

double read_m (double*mas);
double write_m (double*mas);
double raschet_m (double*mas);
double write_r (double*mas);



int main()
{   double* mas;
	int const N=10;int const M=6; // Размерность масива
    mas = new double [N*M]; // Резервирование памяти для динамического массива
	
	 new double; read_m (mas);
     new double; write_m (mas);
     new double; raschet_m (mas);
     new double; write_r (mas);

     return(0);
}


    double read_m (double*mas)      // Заполнение массива
	{int i,j; 
	int const N=10;int const M=6;
	for (i=0;i<N;i++)	
	   	   for (j=0;j<M;j++)
				*(mas+i*M+j)=rand()%200-100;
	return(0);
	}

	
    double write_m (double*mas)  // Вывод заполненого массива на экран
	{int i,j;
	int const N=10;int const M=6;
	for (i=0;i<N;i++)	
	   	   {
			for (j=0;j<M;j++)
				{
				cout<<*(mas+i*M+j)<<"\t";
				}
			cout<<"\n";
			}
	return(0);
	}

	double raschet_m (double*mas)
	// находим отрицательные элементы массива и если элемент меньше нуля то умножается на -1 (получается положительный)
	{int i,j;
	int const N=10;int const M=6;
	for (i=0;i<N;i++)	
	   	   	for (j=0;j<M;j++)
				if (*(mas+i*M+j)<0)
					*(mas+i*M+j)=*(mas+i*M+j)*(-1);
				
			cout<<"\n";
			return(*(mas+i*M+j));
	}
	
	 double write_r (double*mas)  // Вывод массива
        {int i,j;
	 int const N=10;int const M=6;
		for (i=0;i<N;i++)	
	   	   {
			   for (j=0;j<M;j++)
				{
				cout<<*(mas+i*M+j)<<"\t";
				}
			cout<<"\n";
			}
        
		delete [] mas; // Освобождение памяти

		getch();
 return(0);
		}
серг вне форума Ответить с цитированием
Старый 14.12.2009, 16:33   #3
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
Вопрос

подскажите только можно ли его переделать чтоб массив стал двумерный а не одномерный ???
серг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему может возникать ошибка access violation...: write of address при создании динамического массива sleevman Помощь студентам 16 03.11.2009 20:49
очистка динамического массива BattleMage Общие вопросы C/C++ 1 19.09.2009 09:03
Освобождение динамического массива? VintProg Общие вопросы Delphi 15 28.08.2009 10:41
Сохранение динамического массива Horus92 Помощь студентам 3 07.05.2009 12:36
Удаление динамического массива Сергей089 Общие вопросы C/C++ 3 08.03.2009 13:13