Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Hitno!Treba mi pomoc!

[es] :: C/C++ programiranje :: Hitno!Treba mi pomoc!

[ Pregleda: 3423 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.dialup.sezampro.yu.



Profil

icon Hitno!Treba mi pomoc!12.06.2005. u 14:07 - pre 229 meseci
Ovaj kod bi trebalo da ukloni iz niza sve elemente koji su jednaki najmanjem ili najvecem elementu(valjda ukljucujuci i ta

dva elementa)Zanima me da li to moze ovako.Testirao sam ovo u .NET-u i prijavljuje mi neki fatal error pri linkovanju,pa me

zanima da li je kod los ili ne valja .NET.Ako moze neko da ga testira pa da vidi sta nije u redu...Treba mi odgovor sto ranije!
Evo koda>
main(){
int *a,n,i,k,min,max;
while(1){
printf("Velicina niza?\n\t");
scanf("%d",&n);
if(n<0)break;
a=malloc(n*sizeof(int));
printf("Unesite niz\n\t");
for(i=0;i<n;scanf("%d",a[i++]));
min=max=a[0];
for(i=1;i<n;i++){
if(a<min)min=a;
if(a>max)max=a;
}
for(k=i=0;i<n;i++)
if((a!=min)||(a!=max))a[k++]=a;
a=realloc(a,k*sizeof(int));
printf("Novi niz je\n\t");
for(i=0;i<k;i++)printf("%d ",a);
free(a);
}}
A vi,kako 'te?
 
Odgovor na temu

flx

Član broj: 41193
Poruke: 56
*.sbb.co.yu.



+1 Profil

icon Re: Hitno!Treba mi pomoc!12.06.2005. u 17:52 - pre 229 meseci
Mrzi me sada bas da analiziram tvoj program ali ovako na prvi pogled imas greske u pisanju tj na vise mesta ti fali a[od necega].Ispravi prvo to pa vidi sta se desava.
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
*.smin.sezampro.yu.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Hitno!Treba mi pomoc!12.06.2005. u 18:11 - pre 229 meseci
Kod mene (MinGW) kompajlira se i linkuje, ali pukne posle upisivanja niza.

Gcc kompajira i linkuje, ali nece da se pokrene
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.dialup.sezampro.yu.



Profil

icon Re: Hitno!Treba mi pomoc!12.06.2005. u 22:26 - pre 229 meseci
Ok,ali kao algoritam,da li on radi posao,tj. da izbaci iz niza sve elemente koji su jednaki najmanjem i najvecem....
A vi,kako 'te?
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Hitno!Treba mi pomoc!13.06.2005. u 14:24 - pre 229 meseci
kod za micanje elementa iz polja ti je iduci

for(i = 0; i < n; i++)
{
if(a[ i ] == value)
{
for(j = i; j < n; j++) a[j] = a[j + 1];
a = (int *)realloc(a, sizeof(int) * --n);
i--;
}
}


u ovom primjeru "a" ti je polje, koje mora bit dinamicki alocirano (dakle pomocu pointera na tip i malloca, kao u tvom kodu), value ti je vrijednost koju trazis, "n" je broj elemenata u polju, "i" i "j" su pomocne varijable tipa int (brojaci).

prva for petlja se vrti od pocetka do kraja polja, i testira jeli trenutacni element ima vrijednost koja se trazi. ako ima, druga petlja napravi left-shift sa svim iducim elementima. znaci svi elementi koji su iza elementa koji se trazi ce se maknuti ulijevo, tako da ce prebrisat element koji se trazi. to nam ostavlja na zadnjem elementu polja mjesto koje nam ne treba jer smo ipak izbacili jedan element, pa polje treba reallocirat na n - 1 elemenata. kasnije se jos i smanji brojac glavne petlje za 1, jer mozda novi element koji je dosao na mjesto starog elementa ima vrijednost koja je isto jednaka onoj koju trazimo, pa da se taj element nebi preskocio.

znaci, ti trebas nac vrijednost najveceg i najmanjeg elementa u polju, pa samo liniju 3 iz gornjeg koda promjeni u if (a == max || a == min)



Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.fsb.hr.



+9 Profil

icon Re: Hitno!Treba mi pomoc!13.06.2005. u 14:30 - pre 229 meseci
Ja mislim da bi tu prvo trebalo napraviti realokaciju prije nego spremas vrijednost u element polja 'a'? Ovako se moze desiti da se indeksiras na nepostojeci element.
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Hitno!Treba mi pomoc!13.06.2005. u 23:56 - pre 229 meseci
ja jedino vidim manu ako je trazeni element na zadnjem mjestu u polju. tada bi se iduci element probao prekopirati preko njega, a taj element je van granica polja. dakle kod bi trebalo prepraviti da izgleda ovako :

Code:

for(i = 0; i < n; i++)
{
    if(a[ i ] == value)
         if(i == (n - 1))
         {
              a = (int *)realloc(a, sizeof(int) * --n);
         }
         else
         {
              for(j = i; j < n; j++) a[j] = a[j + 1];
              a = (int *)realloc(a, sizeof(int) * --n);
              i--;
         }
}


dakle ako je zadnji element taj koji se trazi, samo se smanji blok za jedan element, pa ce on ostat izvan granica polja.

Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.dialup.sezampro.yu.



Profil

icon Re: Hitno!Treba mi pomoc!14.06.2005. u 11:14 - pre 229 meseci
Z@re,mozda mozes da stavis da brojac j(u onom prethodnom kodu) ide do n-1 pa tako nece ici preko granice polja,tj. kada poslednji put bude bilo j+1,taman ce da dodje do kraja.
A vi,kako 'te?
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.ppp-bg.sezampro.yu.



Profil

icon Re: Hitno!Treba mi pomoc!14.06.2005. u 11:24 - pre 229 meseci
Da i zaboravih da pitam zasto ovo izgleda ovako:
a = (int *)realloc(a, sizeof(int) * --n);
tj. mi u skoli ucimo bez int*,uglavnom bez zvezdica....

A vi,kako 'te?
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
*.smin.sezampro.yu.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Hitno!Treba mi pomoc!14.06.2005. u 12:22 - pre 229 meseci
Code:
void* realloc(void *ptr, size_t size);


Kao sto vidis realloc vraca pokazivac na void (tj. pokazivac na bilo koje mesto u memoriji)

U C jeziku moguce je direktno dodeljivati vrednosti bez castinga (jako opasno!)

Code:
#include <stdio.h>

int main()
{
    void* vp;
    int* ip;
    
    ip = vp;   
}


u C++ je to nemoguce uraditi bez castinga (tj. prvo se vp mora pretvoriti u int*, i dalje opasno, ali se pretpostavlja da programer zna sta radi)

Code:
#include <cstdio>

int main()
{
    void* vp;
    int* ip;
    
    ip = (int*)vp;   
}

 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.dialup.sezampro.yu.



Profil

icon Re: Hitno!Treba mi pomoc!14.06.2005. u 23:24 - pre 229 meseci
Vidim da jos treba malo da citam...
Ok,ljudi hvala vam na savetima,u sredu imam kolokvijum kod mr. Lasla Krausa,treba mi preko 90 poena za 10,valjda ce biti nesto lakse...
A vi,kako 'te?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Hitno!Treba mi pomoc!

[ Pregleda: 3423 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.