Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Monmorensi
0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 21
#1

Помогите переделать malloc в realloc! - C++

26.12.2008, 20:48. Просмотров 718. Ответов 1
Метки нет (Все метки)

Нужно что бы распределение памяти было realoc-ом, помогите пожалуйста

Красным выделен malloc


Код
//---------------------ZADANIE -------------------------
//	Dany natural'noe chislo N, deystvitel'nye chisla
//	a[1], ... , a[n]. Poluchit' max (a[1],...,a[n]) 
//	Vi4islit' (a[1]^2+...+a[n]^2)
//	----------------------------------------------------


#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <ctype.h>
#include <math.h>

void vvod(int N, float *a);
int uslovie(int N, float *a, int nmax, int F);
float zashita (int min,int max);

int main()
{
const int maxNat=1000;	//ограничение на ввод количества элементов массива
  float *a;
  int N,F=0,nmax=0;

    char ch;
		printf("\n---------------------ZADANIE -------------------------\n");
		printf("\nDany natural'noe chislo N, deystvitel'nye chisla");
		printf("\n a[1], ... , a[n]. Poluchit' max (a[1],...,a[n]) ");
		printf("\n          Vi4islit' (a[1]^2+...+a[n]^2)");
		printf("\n");
		printf("------------------------------------------------------");
 
	do
	{
	   printf("\n");
	   do
	   {
	       printf ("\nVvedite razmer massiva N(1 ... %d)=",maxNat);		
		  N=zashita(1,maxNat);
		  if(N>maxNat)
		  {
		  	printf("\nVi vveli nepravil'noe chislo.");
			printf("\nNazhmite na lubuy klavishu.");
			_getch();
		  }
	    }
	   while (N>maxNat);


  [COLOR="Red"][B][U] a=(float*)malloc(N*sizeof(float));[/U][/B][/COLOR]
	   

	   vvod( N, a);
	   uslovie( N, a,nmax,F);

   
	   printf("\n");
	   printf ("\nDo you want to continue?(Y/N)\n");
	   ch = toupper(_getch());
     }
	while (ch != 'N');

  printf("\n");
  printf("\n");
  printf("                       <<<Rabota programmy zavershena>>>");
  

  _getch();
}

/////////////////////////// ВВОД МАССИВА //////////////////////////

void vvod(int N, float *a)
{
  const float maxInt=(3.4e38);
  int i;

  printf("\nVvedite elementy massiva a[%d] (-%g ...%g)", N,maxInt,maxInt);		
  for (i=0;i<N;i++)
  {
     do
     {
	   printf("\n");
	   printf("a[%d] = ",i);	
	   a[i]=zashita(-maxInt,maxInt);
	   if(a[i]<-maxInt||a[i]>maxInt)
	   {
	      printf("\nVi vveli nepravil'noe chislo.");
		 printf("\nNazhmite na lubuy klavishu.");
		 _getch();
	   }
	}
	while (a[i]<-maxInt||a[i]>maxInt);	
  }
	
  printf("\n");
  printf("\nN = %d",N);
  printf("\n");
  printf("\nIshodniy massiv a[%d]:",N);     //вывод заданного массива a[N]
  printf("\n");
	
  for(int i=0;i<N;i++)
  {
     printf("a[%d] = %5.2f",i,a[i]);
     printf("\n");
  }
  printf ("\n");
}



/////////////////////// УСЛОВИЕ ЗАДАНИЯ /////////////////////////////

int uslovie(int N, float *a,int nmax, int F)
{
	int G=0;
	for (int F=0, i = 0; i <N; i++)							//нахождение максимального элемента
	{
		if ((a[i]) > (a[nmax])) nmax= i;								
							
		
		
	}
	for (int i=0; i<N;i++)
	{
	F+=(a[i] * a[i]);
	
	}
	printf("\n\nznachenie max elementa = ");
	printf("%5.2f",a[nmax]); 
	printf("\n\nvi4islenie zna4enija funkcii");
	printf("\n F = " );
	printf("%d", F);
	


return 0;
}

////////////////////////// ФУНКЦИЯ ЗАЩИТЫ ///////////////////////////

float zashita(int min,int max)
{
	const int N=3;
	char ch;
	char str[100], str1[100];

	int i=0, cntPtr=0, cntE=0, cntNeg=0;

	do
	{
		ch=(char)getch();
		
		if((ch=='-')&&(cntNeg==0)&& min!=1)		// '-'
		{
			str[i++]=ch;
			putch(ch);
			cntNeg++;
		}

		

		if((ch=='e'||ch=='E')&&(cntE==0)&& min!=1)		// 'e'
		{
			str[i++]=ch;
			putch(ch);
			cntE++;
		}
		
		if((ch=='.')&&(i>0)&&(!cntPtr)&& min!=1)		// '.'
		{
			str[i++]=ch;
			putch(ch);
			cntPtr++;
		}
		
		if((ch>='0')&&(ch<='9'))			// 
		{
			str[i++]=ch;
			putch(ch);
		}
		
		if((ch=='\b')&&(i>0))				// работа BackSpace
		{
			i--;
			printf("\b \b");
		}		
						if((i==(N+1))&&(i>0)&&(min==1)||(i==(N+2))&&(i>0)&&(min!=1))
		{
			i--;
			printf("\b \b");
		}
	}
	while(ch!='\r');
	

		str[i]='\0';			//преобразование числа с е в float
		bool f=0;
		for(int k=0;k<i;k++)
			if(str[k]=='e')
			{
				f=1;
				break;
			}
		if(f)
		{
			float bas=1,
			      degree=0;
			int k=0;

			while(str[k]!='e')
			{
				str1[k]=str[k];
				k++;
			}
			str1[k]='\0';
			bas=atof(str1);	

		

if(!bas)bas=1;			
k++;
			int k1=0;
			while(str[k]!='\0')
			{
				str1[k1]=str[k];
				k++;
				k1++;
			}
			str1[k1]='\0';
			degree=atof(str1);
			return(bas*pow(10,degree));
		}
		
		for(int j=i;j>0;j--)
			printf("\b\b");
		printf("%d",atof(str));
		return atof(str);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2008, 20:48     Помогите переделать malloc в realloc!
Посмотрите здесь:

Malloc realloc и C++ - C++
Подскажите, в C++ 11 выделение памяти по прежнему &quot;нормально&quot; выделять с помощью malloc и изменять размер realloc ? Или это уже прошлое?...

malloc/realloc - C++
есть следующий код: mmlist=(_mathmod*)malloc(sizeof(_mathmod)); *mmlist=_mathmod(mm); int i=0; ...

malloc, realloc - C++
У меня задан одномерный динамический массив таким образом: int *m1=new int; //n-количество элементов, вводится пользователем Далее этот...

функции на основе realloc, malloc - C++
Подскажите как сократить написание &quot;realloc&quot;, а то надоели эти писанины))) вот сделал уже следующее: size_t GetSize(void* Array) ...

Работа с памятью через malloc,realloc и free - C++
Вот начал работать с памятью в c++ и появилось несколько вопросов. 1 - r = (int *)malloc((1)*sizeof(int)); как я понимаю, эта запись...

Что быстрее/эффективнее malloc/realloc или new/delete? - C++
Всем привет. Год программировал на СИ под микроконтроллеры... Начал изучать с++... Всё ново, интересно... Доковырялся до STL... В процессе...

Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc? - C++
Интересует данный вопрос. Можно ли и имеет ли вобще смысл например выделять память под объект класса с помощью функций calloc, malloc или...

помогите переделать программу!) - C++
Ребята, вы уже не раз меня выручали) Опять столкнулся с проблемкой. Нужно написать программу, реализующую разветвляющийся алгоритм задачи...

Помогите переделать из С++ в СИ, пожалуйста - C++
Нужно переделать этот код в Си, помогите, пожалуйста... #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;vector&gt; ...

помогите переделать задачу. - C++
дана задача:. Написать программу, которая для прямоугольной целочисленной матрицы опреде¬ляет номер самого левого столбца, содержащего...

помогите переделать программу (по проще) - C++
программа которое определяет максимальное число из введенной последовательности и положительных чисел (длина и последовательность не...

народ помогите с Borland C++ на С++ переделать - C++
#include &lt;graphics.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; //Рисуем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.12.2008, 22:57     Помогите переделать malloc в realloc! #2
Код
    a = (float *) malloc(N*sizeof(float));

    a = (float *) realloc(NULL, N*sizeof(float));
Yandex
Объявления
26.12.2008, 22:57     Помогите переделать malloc в realloc!
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru