Kezdőoldal » Számítástechnika » Programozás » Gyorsan kellene a segítség?

Gyorsan kellene a segítség?

Figyelt kérdés

Ezzel mi a baj ? összefésüléses rendezés


#include<iostream>

#include<cstdlib>

#include<ctime>

using namespace std;


const int N=20;

int numb[N];


void mergeS(int,int); /


mergeS(0,N-1);


//kiírás

for(int i=0;i<N;i++)cout<<numb[i]<<" ";

cout<<endl;



//algoritmus meghatározása

void mergeS(int b,int t){

int m=(b+t)/2;


if(b<t){ //további rekurzív hívás feltétele



mergeS(b,m);

mergeS(m+1,t);


}


int tmp[20];

int k=0;

int i=b;

int j=m+1;


for(i<=m&&j<=t;;){

if(numb[i]<=numb[j]){

tmp[k]=numb[i];

i++;

k++;

}else if(numb[j]<=numb[i]){

tmp[k]=numb[j];

j++;

k++;

}

}

/*for(i=0;i<20;i++){


}

*/

}



2015. febr. 24. 17:59
 1/10 anonim ***** válasza:
A baj ott kezdődik, hogy még main függvény sincs, csak parancsok beírva semmibe, a közepébe ékelve egy függvény definíciója stb. Már a formáját tekintve se felel meg C/C++ programnak.
2015. febr. 24. 18:02
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
Miafene ez
2015. febr. 24. 18:03
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
ez egy programrészlet
2015. febr. 24. 18:03
 4/10 anonim ***** válasza:
Olyannyira részlet, hogy nem is érthető, össze-vissza van. (Lásd fentebb.)
2015. febr. 24. 18:04
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
Atya ég! Ez bizony (kiérdemelten) egyes lesz.
2015. febr. 24. 18:06
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
nem programozok c/c++-ban, de itt elég csúnya, ha benyomnád a pastebin.com -ra, akkor talán nem dobnának hátast
2015. febr. 24. 18:16
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
Van benne egy függvény, de kellene egy main is, ráadásul a függvény zárójelezése is rossz.
2015. febr. 24. 18:17
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
A ctime lib pl. mi a frászért van behúzva?
2015. febr. 24. 18:24
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

Ehhez felesleges for ciklus, másrészt rossz helyen vannak a kettőspontok így végtelen ciklus lesz a vége:


for(i<=m&&j<=t;;)

2015. febr. 24. 20:19
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:

Sikerült megoldani : Így fest helyesen az algoritmus, ha valakinek a későbbiekben kellene


#include<iostream>

#include<cstdlib>

#include<ctime>

using namespace std;


const int N=20;

int numb[N];


void mergeS(int,int);


int main(){

.

.

.


mergeS(0,N-1);

for(int i=0;i<N;i++)cout<<numb[i]<<" ";

cout<<endl;


system("pause");

return 0;

}


void mergeS(int b,int t){

int m=(b+t)/2;


if(b<t){


mergeS(b,m);

mergeS(m+1,t);


}


int tmp[20];

int k=0;

int i=b;

int j=m+1;


for(;i<=m||j<=t;){

if(i>m){


tmp[k]=numb[j];

k++;j++;


}else if(j>t){


tmp[k]=numb[i];

k++;i++;

}else

if(numb[i]<=numb[j]){


tmp[k]=numb[i]; // k megakpja i értékét

k++;

i++;

}else if(numb[i]>=numb[j]){

tmp[k]=numb[j];

k++;

j++;

}

}

for(i=0;i<k;i++){

numb[b+i]=tmp[i];

}


}

2015. febr. 24. 20:56

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!