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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2013, 05:37   #1
*Fantom*
Пользователь
 
Регистрация: 28.05.2013
Сообщений: 32
По умолчанию ошибка в коде программы с++

Помогите исправить ошибку. Заранее спс.
Я приблизительно знаю где ошибка и в программе оставил комментарий.
Код:
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include <time.h>
#include<iostream>
using namespace std;
void rand(int *Ar,int size, int max, int min){
	int i,j,k=0;
	//Ar=new int[size];
srand(time(NULL));
for(i=0;i<size;i++){
	Ar[i]=min+rand()%(max-min+1);
for(j=0;j<i;j++)
if(Ar[i]==Ar[j])i--;
}
for(i=0;i<size;i++)
	cout<<Ar[i]<<" ";
	cout<<endl;
	//сортировка массива
for (i=size-1; i>0 ; i--){
for (j=0; j<i; j++){ 
if (Ar[j]>Ar[j+1]) {
k=Ar[j]; 
Ar [j]=Ar [j+1];
Ar [j+1]=k;}
}}    cout<<"otsortirovanuy massiv :\n ";
    for(i=0;i<size;i++)
	cout<<Ar[i]<<" ";
	cout<<endl;}
int* obed(int* Ar, int* Br, int sizeA, int sizeB){
	int* Dr;
	int sizeDr,i,j;
	sizeDr=sizeA+sizeB;
	Dr= new int(sizeDr);
	for(i=0;i<sizeA;i++){
		Dr[i]=Ar[i];}
	for(j=0;j<sizeB;j++){
		Dr[i+j]=Br[j];}
for(i=0;i<sizeDr;i++)
	cout<<Dr[i]<<" ";
	return Dr;}
void main() {
	    int *A,*A1, *B,*B1, *C,*D;  
		int sizeA=0,sizeB=0,sizeC=0,sizeD=0; 
		int maxA=0,minA=0,maxB=0,minB=0;  
		int x1=0,x2=0,m=0,i=0;  
		cout<<"vvedite kolichestvo, max i min\n";
		cin>>sizeA>>maxA>>minA;
		cout<<"\nvvedite kolichestvo, max i min\n";
		cin>>sizeB>>maxB>>minB;
		A=new int[sizeA];
		B=new int[sizeB];
		A1=A;B1=B;
		cout<<"\npervoe mnojestvo :";
		rand(A1,sizeA,maxA,minA);
		cout<<"\nvtoroe mnojestvo :";
		rand(B1,sizeB,maxB,minB);
                //Ошибка где-то ниже
                D=obed(A,B,sizeA,sizeB);
                for(i=0;i<sizeD;i++)
	        cout<<D[i]<<" ";
	        return D;	
                delete[ ]A;
		delete[ ]B;
		
		delete[ ]D;
		getch();
		
	}
*Fantom* вне форума Ответить с цитированием
Старый 31.10.2013, 06:38   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

а чего делает то программа?

Имхо.проблема в том что вы создаете массив в подпрограмме,а потом пытаетесь вернуть его в мэин.
если ваша функция будет такой
Код:
void obed(int* Ar, int* Br, int sizeA, int sizeB,int* Dr,int sizeDr){

	int i,j;
	for(i=0;i<sizeA;i++){
		Dr[i]=Ar[i];}
	for(j=0;j<sizeB;j++){
		Dr[i+j]=Br[j];}
/*for(i=0;i<sizeDr;i++)
	cout<<Dr[i]<<" ";*/
		}
и вот так взывать
Код:
 sizeD=sizeB+sizeA;
                	D=new int[sizeD];
                obed(A,B,sizeA,sizeB,D,sizeD);
               for(i=0;i<sizeD;i++)
	        cout<<D[i]<<" ";
то все работает
UPD
и еще, вам нужна проверка на вводимые данные. если скажем массив из 5 эл-ов. где максимальный 10 а минимальный 8. ваша программа зациклится тут
Код:
for(j=0;j<i;j++)
if(Ar[i]==Ar[j])i--;
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 31.10.2013 в 07:23.
SaLoKiN вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в коде программы fkty Общие вопросы C/C++ 8 01.06.2013 23:25
Ошибка в коде программы. Proger16 Помощь студентам 3 14.04.2013 10:59
ошибка в коде программы Ioane Visual C++ 5 12.02.2012 12:00
Ошибка в коде программы VB Мина Помощь студентам 1 02.12.2011 06:54
Ошибка в коде программы eXtrem Помощь студентам 5 09.04.2011 19:34