[C++] - Segmentation fault

C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Avatar
jjj
Postovi: 1451
Pridružen/a: 04 lip 2009, 00:46
OS: Nepu Yvahk
Lokacija: Classyfied

Re: [C++] - Segmentation fault

Post Postao/la jjj »

nicky je napisao/la:
Ako se ne varam, ti stvoriš polje veličine i ,a i ti nije nigdje definiran?
++

Usput, odredi tip main() funkciji, ovo je aljkavo.
Avatar
stefan
Moderator
Postovi: 4366
Pridružen/a: 28 sij 2009, 18:46
Spol: M
OS: openSUSE Leap KDE

Re: [C++] - Segmentation fault

Post Postao/la stefan »

Pa ako zelis polje fleksibilne veličine, moraš dinamički alocirati memoriju.

Kod: Označi sve

int polje[size];
radi samo ako je varijabla size konstantna (const), a posto je ti unoisiš - nije konstantna.

Kod: Označi sve

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

main()
{
    int n, i;
    int* polje;
    cout << "Unesi broj članova polja: ";
    cin >> n;
    polje=new int[n]

    if (n>100)
        cout << "Krivi unos"<<endl;
    else
    {
        srand(time(NULL));
        for (i=0; i<n; i++)
        {
            polje [i]=rand();
            cout << polje [i] << endl;
        }
    }
}
Like some other animals, the gecko can perform a neat trick when threatened by a predator: it can amputate its own tail. The dropped tail serves to distract the predator, and by losing it, the lizard can run faster.
Avatar
DŽINGIS KAN
Postovi: 132
Pridružen/a: 03 sij 2009, 20:47
Spol: M
OS: ORACLE SOLARIS 11.1

Re: [C++] - Segmentation fault

Post Postao/la DŽINGIS KAN »

Hvala stefane, sada radi kako treba!

Samo objasni čemu zvjezdica - int* polje, i polje=new int[n]; tj. kako na windowsu radi, a ovdje su potrebne izmjene.
Avatar
nicky
Site Admin
Postovi: 2074
Pridružen/a: 07 pro 2007, 16:30
Spol: Ž
OS: ubuntu 12.04
Lokacija: Zagreb

Re: [C++] - Segmentation fault

Post Postao/la nicky »

DŽINGIS KAN je napisao/la:Hvala stefane, sada radi kako treba!

Samo objasni čemu zvjezdica - int* polje, i polje=new int[n]; tj. kako na windowsu radi, a ovdje su potrebne izmjene.

Na win ti radi jer je tamo prilikom stvaranja varijable i na toj adresi ti piše smeće pa je i jako velik.

int *polje je pokazivač na polje koji je velik 4 byte-a. Prvo je potrebno definirati pokazivač na polje da bi kasnije mogao dinamički stvoriti polje proizvoljne veličine.
polje = new int[n] stvara polje veličine n, ukupne veličine sizeof(int) * n.
Avatar
stefan
Moderator
Postovi: 4366
Pridružen/a: 28 sij 2009, 18:46
Spol: M
OS: openSUSE Leap KDE

Re: [C++] - Segmentation fault

Post Postao/la stefan »

DŽINGIS KAN je napisao/la:Samo objasni čemu zvjezdica - int* polje, i polje=new int[n]; tj. kako na windowsu radi, a ovdje su potrebne izmjene.
ne bi smijelo ni na windowsima raditi. ovisno o kompajleru, mozda inicijalizira varijablu i na neki veliki broj (max int) pa proradi. ali moralo bi tadi neku gresku, ili bar upozorenje.
Like some other animals, the gecko can perform a neat trick when threatened by a predator: it can amputate its own tail. The dropped tail serves to distract the predator, and by losing it, the lizard can run faster.
linux suks
Postovi: 28
Pridružen/a: 25 svi 2008, 18:55
Spol: M
OS: win xp, sidux, pcbsd,...

Re: [C++] - Segmentation fault

Post Postao/la linux suks »

windowsi ti (ako si radio u ms visual studio) podrzavaju kreiranje dinamickih polja dakle nemora ti polje biti unapred definirano. u vba je kod za redimenzioniranje polja islo jednostavno

redim (polje(0 to nesto)) ili redim (polje (o to nesto, 0 to nesto) )

za c++ u visual studio se nesjecam vise ali je isto bilo jednostavno redimenzionirati polje cak si mogao i sacuvati vec upucane clanove
:D

ms dev studio jos uvjek najbolji ms paket ikada napravljen :D (da su tak skodirali vindoze bila bi mozda konkurencija linuxu iako sumnjam)
Avatar
4ndY
Moderator
Postovi: 4060
Pridružen/a: 15 svi 2008, 18:05
Spol: M
OS: Fedora/KDE
Lokacija: Hamburg, DE
Kontakt:

Re: [C++] - Segmentation fault

Post Postao/la 4ndY »

linux suks je napisao/la:windowsi ti (ako si radio u ms visual studio) podrzavaju kreiranje dinamickih polja dakle nemora ti polje biti unapred definirano. u vba je kod za redimenzioniranje polja islo jednostavno
To nije toliko do operacijskog sustava (svi to mogu), već do mogućnosti programskog jezika :misli

Iako čak i C ima mogućnost dinamičkog alociranja memorije (malloc), no programski jezici više razine imaju to ljepše riješeno jer dolaze i sa "sakupljačem smeća" 8-)
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Avatar
Grof
Site Admin
Postovi: 9954
Pridružen/a: 04 pro 2007, 08:00
Lokacija: Zagreb

Re: [C++] - Segmentation fault

Post Postao/la Grof »

4ndY je napisao/la: Iako čak i C ima mogućnost dinamičkog alociranja memorije (malloc), no programski jezici više razine imaju to ljepše riješeno jer dolaze i sa "sakupljačem smeća" 8-)
Da, i stvaraju šlampave programere koji zaboravljaju pozivati destructore.

Dođe mi više kao medjeđa usluga ;)
linux suks
Postovi: 28
Pridružen/a: 25 svi 2008, 18:55
Spol: M
OS: win xp, sidux, pcbsd,...

Re: [C++] - Segmentation fault

Post Postao/la linux suks »

mislio sam u ms studio :) on ima "malo" izmjenjene libove :) nije se dogodilo jedanput da nesto sto je radilo i moglo se skompajlat u msstudio nije radilo i nije se moglo skompajlat na drugom kompajleru ali mislim ipak malo je ljudi koji ce moci reci iskreno da msstudio nije jedan od najboljih programskih okruzenja

jedino mi zao kaj su vba izbacili :( s njime se mogu cudesa napraviti u excelu i autocadu)
Avatar
Grof
Site Admin
Postovi: 9954
Pridružen/a: 04 pro 2007, 08:00
Lokacija: Zagreb

Re: [C++] - Segmentation fault

Post Postao/la Grof »

linux suks je napisao/la: jedino mi zao kaj su vba izbacili :( s njime se mogu cudesa napraviti u excelu i autocadu)
Ja za AutoCAD (točnije AutoCAD Civil3D) koristim MS Visual Basic 2008 Express Edition i radi odlično. Prepoznaje sve Autodeskove Assemblye i kompajlira uredno.
Odgovori