Tanárom küldött rendezéseket C++ -ban de nem fut le. Miért nem?
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
void BuborekRendezes(int* szamok, int N){
for (int j=0;j<N;j++){
for (int i=0;i<N-1;i++){
if (szamok[i]>szamok[i+1]){
int s = szamok[i];
szamok[i] = szamok[i+1];
szamok[i+1] = s;
}
}
}
}
void EgyszeruCseresRendezes(int* szamok, int N){
for (int j=0;j<N;j++){
for (int i=j;i<N;i++){
if (szamok[j]>szamok[i]){
int s = szamok[j];
szamok[j] = szamok[i];
szamok[i] = s;
}
}
}
}
void BeillesztesesRendezes(int* szamok, int N){
for (int ezmarrendezvevan = 1; ezmarrendezvevan<N; ezmarrendezvevan++)
{
int szamhelye = ezmarrendezvevan;
while (szamok[szamhelye] < szamok[szamhelye-1]){
int tmp = szamok[szamhelye-1];
szamok[szamhelye-1] = szamok[szamhelye];
szamok[szamhelye] = tmp;
szamhelye--;
if (szamhelye==0) break;
}
}
}
void MinimumKivalasztasosRendezes(int* szamok, int N){
for (int j=0;j<N-1;j++){
int minimumhely = j;
for (int i=j+1;i<N;i++){
if (szamok[i]<szamok[minimumhely])
minimumhely = i;
}
int s = szamok[j];
szamok[j] = szamok[minimumhely];
szamok[minimumhely] = s;
}
}
int main(){
//system("format c:");
srand(time(0));
int N = 1000; //tömb elemeinek száma
int k = 10000; //teszesetek száma
int randomMax = 10000; //számok generálása 1 és randomMax között
int szamok[N];
//-------------------------------------------------------------------------------
int ekkorindultunk = time(0);
for (int i=0;i<k;i++){
for (int j=0;j<N;j++){
szamok[j] = rand()%randomMax+1;
}
BuborekRendezes(szamok, N);
}
int ekkorfejeztukbe = time(0);
cout << "Buborekrendezes futasanak ideje: " << (ekkorfejeztukbe-ekkorindultunk) << endl;
//-------------------------------------------------------------------------------
ekkorindultunk = time(0);
for (int i=0;i<k;i++){
for (int j=0;j<N;j++){
szamok[j] = rand()%randomMax+1;
}
EgyszeruCseresRendezes(szamok, N);
}
ekkorfejeztukbe = time(0);
cout << "Egyszeru cseres rendezes futasanak ideje: " << (ekkorfejeztukbe-ekkorindultunk) << endl;
//-------------------------------------------------------------------------------
ekkorindultunk = time(0);
for (int i=0;i<k;i++){
for (int j=0;j<N;j++){
szamok[j] = rand()%randomMax+1;
}
BeillesztesesRendezes(szamok, N);
}
ekkorfejeztukbe = time(0);
cout << "Beilleszteses rendezes futasanak ideje: " << (ekkorfejeztukbe-ekkorindultunk) << endl;
//-------------------------------------------------------------------------------
ekkorindultunk = time(0);
for (int i=0;i<k;i++){
for (int j=0;j<N;j++){
szamok[j] = rand()%randomMax+1;
}
MinimumKivalasztasosRendezes(szamok, N);
}
ekkorfejeztukbe = time(0);
cout << "Minimumkivalasztasos rendezes futasanak ideje: " << (ekkorfejeztukbe-ekkorindultunk) << endl;
//-------------------------------------------------------------------------------
return 0;
}





Lassan fordult le, vagy sokáig nem írt ki semmit?
Az utóbbi teljesen normális, pont az a program lényege, hogy megmutassa a rendezések időigényének különbségét. Ennek nincs sok értelme, ha tizedmásodpercek alatt lefut a program





#10:
"A szabvány csak azt mondja ki, hogy a tömbök méretét fordítási időben tudni kell."
Te melyik szabványban olvastad ezt? Az van kimondva hogy konstans kifejezésnek kell lennie. A C++ nem engedi meg a VLA-t, az csak C99-ben volt, de már C11-ben nem szerepel. C++ soha nem engedte meg és C++14-ben sincs ilyen. Az csak a gcc kiterjesztése. A kifejezés hibás.
Azok akik pedig leszavazták a #8-as válaszolót, örülnék ha megmagyaráznák hogy miért.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!