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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ не используя доп. памяти , найти кол. совподающих значений элементов массива А и В http://www.cyberforum.ru/cpp-beginners/thread19820.html
Задача такова: Даны два упорядоченных массива А и В (необязательно одинаковой длины). В каждом из массивов могут быть совподающие элементы. Не используя дополнительной памяти, найти количество совподающих значений элементов А и В (т.е. колличество t, для которых t= A=B ) буду очень рад если поможите Добавлено через 4 минуты 47 секунд Вот пока что я написал...проблема заключается в том...
C++ Конструктор копирования стека Добрый день! Имеется стандартный стек с функ-ми push(), pop(), а так же функ-й, определяющей размерность стека. Нужно написать конструктор копирования для этого стека. Что имеется ввиду под этим заданием? Что все значения, которые будут засовываться в первоначальный стек, будут копироваться в новый стек? На одном из форумов нашла очень похожую проблему, но она там решается через... http://www.cyberforum.ru/cpp-beginners/thread19811.html
C++ Какое максимальное количество натуральных чисел можно выбрать чтобы среди них не было отличающихся в два раза
Помогите пожалуйста у меня защита курсовой завтра по С++ а задача не сделана совсем!!!:( А в С++ я совсем не шарю!!!:'( помогите пожалуйста!!! Заранее Спасибо!!! Какое максимальное колличество натуральных чисел от 1 до 10 можно выбрать чтобы среди них не было отличающихся в два раза!!!
C++ nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
Доброго времени суток! Начал изучать visual c++ по firststep ru и сразу столкнулся с проблемой вот код с первого занятия: #include "afxwin.h" // MFC Основные и стандартные компоненты class CMainWnd : public CFrameWnd { public: CMainWnd(); // Конструктор по умолчанию };
C++ Найти сумму всех элементов одномерного массива, которые кратны К http://www.cyberforum.ru/cpp-beginners/thread19799.html
вобщем нужно решить пару задач к завтрашнему дню а я в массивах вообще нифига не понял=( вот первая задача:нужно найти сумму всех элементов одномерного массива которые кратны К!...я сам попробовал но получилась какаято чушь зарание спасибо Добавлено через 26 минут 24 секунды да и плиз можно с комментариями к коду,хочется знать что к чему
C++ Журнал событий? надо создать что-то типа журнала событий. проблема в том чтобы вести хронологию. замучался с манами по localtime ctime и тд помогите пожалуйста с куском кода, выводящим строку формата текущие день.месяц.год.часы.минуты. подробнее

Показать сообщение отдельно
Monmorensi
 Аватар для Monmorensi
0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 21
26.12.2008, 20:48     Помогите переделать malloc в realloc!
Нужно что бы распределение памяти было 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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru