Programiranje u C-u - od svega pomalo izdvojena tema

poruka: 1.661
|
čitano: 386.842
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Isprobaj?

The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. --Damian Conway
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
1domagoj1 kaže...

Isprobaj?

Radi. Hvala.

15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Evo,na svom blogu sam detaljno objasnio Hello world program:

http://thebluedrag.blogspot.com/

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
Moj PC  
0 0 hvala 0
15 godina
online
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

Evo,na svom blogu sam detaljno objasnio Hello world program:

http://thebluedrag.blogspot.com/

Why all those "enter's"?Because readable C code should expand vertically not horizontally.

Što si s ovime htio reći?

 

15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pa naučit ljude da ne stavljaju sav svoj kod u jednu liniju...

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
Moj PC  
1 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

Pa naučit ljude da ne stavljaju sav svoj kod u jednu liniju...

A mogao si ih naučiti i da intedndiraju kôd...

16 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Nevezana primjedba, nakon zareza, točke, uskličnika itd. ide razmak. Nije kao da pišeš SMS pa si ograničen brojem znakova :)

15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
royalhero kaže...
g12356 kaže...

Pa naučit ljude da ne stavljaju sav svoj kod u jednu liniju...

A mogao si ih naučiti i da intedndiraju kôd...

  da,ali iz nekog razloga blogspot ne prihvaća tab...Svejedno,nadam se da će ih auto indent naučit.

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Topla preporuka - Wordpress...

15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
royalhero kaže...

Topla preporuka - Wordpress...

  A neda mi se sad migrirat...Razmišljao sam i o wordpressu,ali ovo nije profi blog.

Ja sam Plavi zmaj.Form the future!Masa,društvo većina,''normalni'' su ništa bez onih pojedinaca koji ih čine.
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
g12356 kaže...

da,ali iz nekog razloga blogspot ne prihvaća tab...Svejedno,nadam se da će ih auto indent naučit.

Podesi IDE da konvertira tab u razmake. To se ionako tako radi...

 

 

...i pliz, koristi razmak nakon #include ;)

0xBADC0DE
Poruka je uređivana zadnji put ned 10.2.2013 17:08 (rustweaver).
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Imam par pitanja,pa ako možete odgovoriti:

1.Naime trebam sortirati parne brojeve,a ne znam kako.Vidio sa

  da se može sa f/2-(int)f/2==0,ali mi se čini prekomplicirano,ali

generalno mi treba za svaki uvjet kada mi traži da izbacim nešto što je djeljivo 

s nekim brojem.

2.Imam zadatak,ispisati:

*

**

***

****

*****

pomoću petlji,ali nisam siguran kako?
Znam kako ispisati * u svakom redu,ali neznam kako

ih postepeno povećati? 

EuNE:AnakinSW,WoT: BlackRainCRO
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
pandza94 kaže...

Imam par pitanja,pa ako možete odgovoriti:

1.Naime trebam sortirati parne brojeve,a ne znam kako.Vidio sa

  da se može sa f/2-(int)f/2==0,ali mi se čini prekomplicirano,ali

generalno mi treba za svaki uvjet kada mi traži da izbacim nešto što je djeljivo 

s nekim brojem.

Modulo operator

 

A za sortiranje koristi bubble sort...

 

pandza94 kaže...

2.Imam zadatak,ispisati:

*

**

***

****

*****

pomoću petlji,ali nisam siguran kako?
Znam kako ispisati * u svakom redu,ali neznam kako

ih postepeno povećati? 

int x, y, n=1;

for (y=0; y<5; y++)
{
    for (x=0; x<n; x++)
    {
        printf("*");
    }
    n++;
    printf("\n");
}

 

0xBADC0DE
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

 

#include <stdio.h>

 

void main()

{

 

 

 

int N[15];

int i,temp,j,n;

 

for(i=0;i<15;i++)

{

printf("Unesite %d. element niza:\n",i+1);

scanf("%d",&N[i]);

}

 

for(i=0;i<14;i++)

for(j=i+1;j<15;j++)

{

if(N[i]>N[j])

{

temp=N[i];

N[i]=N[j];

N[j]=temp;

}

}

 

 

for(i=15;i<15;i--)

{

printf("%d",N[i]);

}

 

getchar();

getchar();

 

 

Hvala za ono.Neznam zašto bubble sort algo ne radi ovdje,

neće da mi razvrsta brojeve?

EuNE:AnakinSW,WoT: BlackRainCRO
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C-u - od svega pomalo

Pogledaj tu zadnju petlju za ispis. Ta petlja ne ispisuje ništa.

Napravi je ovako:

 

for(i=0; i<15; i++)

{

     ispis

}

Poruka je uređivana zadnji put ned 10.2.2013 18:04 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Koji sam ja retard lol.

 

EuNE:AnakinSW,WoT: BlackRainCRO
Moj PC  
0 0 hvala 0
14 godina
offline
Programiranje u C-u - od svega pomalo

Može mala pomoć, I am stuck.

 

Inače sve nađem na Google-u ali ovo nikako da shvatim.

 

Ovo imam:

http://pastebin.com/GGgvLtXq

 

 

Prvo, i najbitnije, crasha mi se program radi funkcije statistika_gen, kada obrišem obje for petlje odnosno da funkcija ne radi ništa, nema crasha.

 

Druga, manje bitna stvar ali svejedno me zanima, zašto dobivam ovaj warning:

test.c:33:6: warning: conflicting types for 'rand_upis' [enabled by default]

test.c:49:6: warning: conflicting types for 'statistika_gen' [enabled by default]

 

Hvala unaprijed

WordPress ❤
Poruka je uređivana zadnji put ned 10.2.2013 18:56 (OriginalEXE).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
OriginalEXE kaže...
Prvo, i najbitnije, crasha mi se program radi funkcije statistika_gen, kada obrišem obje for petlje odnosno da funkcija ne radi ništa, nema crasha.

Ruši ti se jer dobivaš pagefault, pristupaš komadu memorije kojem nemaš pristup. Zašto bi se nešto takvo moglo dogoditi? Hint: zbrljao si sa pokazivačima.

 

int izvuceni_brojevi[52][7], i, j, statistika[39];

Što su varijable "izvuceni_brojevi" i "statistika"? Pokazivači na prvi element polja.

 

Pazi sad ovo:

rand_upis( *izvuceni_brojevi );

statistika_gen( *izvuceni_brojevi, *statistika );

 

Što si ti ovdje napravio? Dereferencirao si pokazivač na prvi element polja, i umjesto adrese polja dobio vrijednost prvog elementa koju si onda proslijedio kao memorijsku adresu polja. Kako polje nije inicijalizirano prvi element ima bog-te-pitaj koju vrijednost.

 

To jako lagano provjeriš. Ispiši memorijsku adresu polja prije ulaska u funkciju (dakle u mainu), i onda ju ponovno ispiši u nekoj od ovih funkcija, vidjet ćeš da nije isti broj.

 

OriginalEXE kaže...
Druga, manje bitna stvar ali svejedno me zanima, zašto dobivam ovaj warning:

test.c:33:6: warning: conflicting types for 'rand_upis' [enabled by default]

test.c:49:6: warning: conflicting types for 'statistika_gen' [enabled by default]

Meni GCC daje 4 poruke:

 

conflicting types for 'rand_upis'
previous implicit declaration of 'rand_upis' was here
conflicting types for 'statistika_gen'
previous implicit declaration of 'statistika_gen' was here

 

Ukratko nedostaje ti forward deklaracija funkcija. Jednostavno sam prije maina dodao:

void statistika_gen( int[][], int*);
void rand_upis(int[][]);

 

I nemoj main definirati kao funkciju koja ne prima argumente. Btw nedostaje ti i return na kraju maina.

 

Evo, sa ispravcima:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>

void statistika_gen( int[][], int*);
void rand_upis(int[][]);

int main() {
   
    srand( time( NULL ) );
    int izvuceni_brojevi[52][7]={0}, i, j, statistika[39]={0};
   
    rand_upis( izvuceni_brojevi );
   
    for ( i = 0; i < 52; i++ ) {
       for ( j = 0; j < 7; j++ ) {
          printf( "%d\n", izvuceni_brojevi[i][j] );
       }
    }
   
    statistika_gen( izvuceni_brojevi, statistika );
    for ( i = 0; i < 39; i++ ) {
       printf( "%d\n", statistika[i] );
    }
   
    return 0;
}

void rand_upis( int unos[52][7] ) {
    int i, j;
    for ( i = 0; i < 52; i++ ) {
       for ( j = 0; j < 7; j++ ) {
          unos[i][j] = rand() % 39 + 1;
       }
    }
}

void statistika_gen( int unos[52][7], int statistika[39] ) {
    int i, j;

    // postavi na nulu
    //nije potrebno jer u mainu inicijaliziramo na nulu
    /*for ( i = 0; i < 39; i++ ) {
       statistika[i] = 0;
    }*/
    for ( i = 0; i < 52; i++ ) {
       for ( j = 0; j < 7; j++ ) {
          statistika[ unos[i][j] + 1 ] += 1;
       }
    }
}

 

0xBADC0DE
Poruka je uređivana zadnji put ned 10.2.2013 19:20 (rustweaver).
14 godina
offline
Re: Programiranje u C-u - od svega pomalo

Hvala ti puno na objašnjenju i odgovoru.

 

1.) Da li je zbilja potrebno deklarirati funkcije prije maina? Inače radim samo u PHP-u, ovo je za fax, pa mi ovo ide na živce.

2.) Tvoj kod mi daje sljedeče greške (koristim Geany):

 

gcc -Wall -c "test.c" (in directory: C:\Users\WPress\Documents\geany)

test.c:6:1: error: array type has incomplete element type

test.c:7:1: error: array type has incomplete element type

test.c: In function 'main':

test.c:12:5: warning: missing braces around initializer [-Wmissing-braces]

test.c:12:5: warning: (near initialization for 'izvuceni_brojevi[0]') [-Wmissing-braces]

test.c:14:5: error: type of formal parameter 1 is incomplete

test.c:22:5: error: type of formal parameter 1 is incomplete

test.c:14: confused by earlier errors, bailing out

Compilation failed.

WordPress ❤
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
OriginalEXE kaže...

1.) Da li je zbilja potrebno deklarirati funkcije prije maina? Inače radim samo u PHP-u, ovo je za fax, pa mi ovo ide na živce.

 

Bitno je da prije maina napišeš prototip funkcije, a ne moraš nužno i definiciju pisati.

15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
OriginalEXE kaže...
2.) Tvoj kod mi daje sljedeče greške (koristim Geany):

 

 

Geany nije kompajler, dakle i ti koristiš GCC. Vjerojatno noviju verziju jer je ova moja stara s kojom DevCpp dolazi.

 

OriginalEXE kaže...
test.c:6:1: error: array type has incomplete element type

test.c:7:1: error: array type has incomplete element type

Probaj te dvije linije prepraviti u ovo:

void statistika_gen( int[52][7], int*);
void rand_upis(int[52][7]);

 

OriginalEXE kaže...
test.c:12:5: warning: missing braces around initializer [-Wmissing-braces]

test.c:12:5: warning: (near initialization for 'izvuceni_brojevi[0]') [-Wmissing-braces]

int izvuceni_brojevi[52][7]={{0}}, i, j, statistika[39]={{0}};

To je samo warning, ali ok, ipak su dvodimenzionalna polja...

 

OriginalEXE kaže...
test.c:14:5: error: type of formal parameter 1 is incomplete

test.c:22:5: error: type of formal parameter 1 is incomplete

test.c:14: confused by earlier errors, bailing out

Compilation failed.

Ovo bi sada trebalo biti pokriveno sa popravkom prototipa.

 

EDIT: ni GCC 4.6.1 mi ne ne žali zbog onog prvotnog prototipa, ali mi se žalio za zagrade kod incijalizacije polja nakon što sam omogučio sva upozorenja:

 

gcc.exe "d:\test\statistika.c" -o "d:\test\statistika.exe" -std=gnu99 -Wall -g3

 

EDIT2: ipak je to do starije verzije kompajlera, 4.6.1 ipak ne voli nepotpune tipove u prototipu. Naime, zbog mog zeza, u IDE-u se nije prebacio kompajler pa sam mislio da kompajliram sa 4.6.1, dok se u stvari kompajliralo sa 3.4.5. Bilo kako bilo, kada maknem random seed, output je isti sa obje verzije koda što će reći da se i "nepravilan slučaj" kompajlirao kako treba.

0xBADC0DE
Poruka je uređivana zadnji put pon 11.2.2013 5:36 (rustweaver).
14 godina
offline
Re: Programiranje u C-u - od svega pomalo

Da, znam, zaboravih to napomenuti :)

 

Hvala ti puno, sada kod radi, uf glavobolje s tim poljima, strašno kad dođeš sa php-a :S

 

Hvala puno!

WordPress ❤
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Opet ja :)

Zanima me kako spojiti dva niza?
Samo teorijski s kojom komandom?

I da,u zadatku mi traži da kod matrice nađem najmanji element glavne,i najveći sporedne dijagonale.
Mislio sam preko bubblesorta,pa ispisat prvi koji je najmanji,ali ne znam kako dijagonalu prebaciti u niz.
Može pomoć? 

EuNE:AnakinSW,WoT: BlackRainCRO
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C-u - od svega pomalo

min = niz[0][0];

 

for(int i=0; i<n; i++)

{

    if(niz[i][i] < min)

      min = niz[i][i];

}

 

Ovo ti je način za glavnu dijagonalu, naime elementi na glavnoj dijagonali niz[i][j] su oni kod kojih je i = j, a n je veličina kvadratne matrice.

Za pomoćnu dijagonalu pokušaj sam. Kao što vidiš tu je sortiranje suvišno i nepotrebno.

Što se tiče pomoćne dijagonale kod elemenata niz[i][j] su oni kojima je i + j = n-1, gdje je n veličina kvadratne matrice. To znači da je isto dovoljna jedna petlja koja provjerava elmente niz[i][n-i-1].

Poruka je uređivana zadnji put ned 10.2.2013 22:38 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Shvatio sam to za glavnu kako ide,no sporedna je uglavnom [j++][i--],s tim

da je j==max,i==min.
No još me zanima kako spojiti dva niza?
Jer mi je bio zadatak na kolokviju gdje imam dva niza,trebam ih spojiti u jedan i poredati po veličini,znači bubblesort? 

EuNE:AnakinSW,WoT: BlackRainCRO
Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C-u - od svega pomalo
pandza94 kaže...

Shvatio sam to za glavnu kako ide,no sporedna je uglavnom [j++][i--],s tim

da je j==max,i==min.
No još me zanima kako spojiti dva niza?
Jer mi je bio zadatak na kolokviju gdje imam dva niza,trebam ih spojiti u jedan i poredati po veličini,znači bubblesort? 

Deklariraš treći koji ima veličinu zbroja veličina ta dva niza i kroz dvije petlje ga popuniš prvo jednim, pa drugim, a onda sortiraš.

Jel ovo za dijagonalu trebaš za kolokvij isto?

Poruka je uređivana zadnji put ned 10.2.2013 21:27 (Floki).
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Ma vježbam malo za ispite,pa etom,informiram se na vrijeme :)
Možeš mi samo prototip toga napisati otprilike?

Što se tiče sporedne dijagonale,gledamo sam to nekako ovako uraditi:

 

 if(i==4&&j==1) //u s slucaju da je matrica 4x4

   if(niz[i][j]<min_spo)

     min_spo=niz[i][j]

   i--;

   j++;

 

EuNE:AnakinSW,WoT: BlackRainCRO
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C-u - od svega pomalo

Veličina kvadratne matrice n je 3X3.

Sve kroz jednu petlju. Prvi if uvjet je minimum glavne dijagonale, a drugi if uvjet je maksimum pomoćne djagonale.

 

#include <iostream>
using namespace std;
 


int main()

{
    int min, max;
    int niz[3][3] = {{3,5,1}, {8, 7, 9}, {2, 4, 5}};
    min = niz[0][0];
    max = niz[0][2];
    for (int i = 1; i < 3; i++)
    {
       if (niz[i][i]<min)
          min = niz[i][i];
       if (niz[i][3-i-1]>max)
          max = niz[i][3-i-1];
    }
    cout<< min << " " << max << endl;
    return 0;
}

 


 

Poruka je uređivana zadnji put ned 10.2.2013 22:14 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

iostream mi je još nepoznat,najdalje što smo mi došli je funkcije,tako da

ne bi smio raditi preko toga..
No hvala svejedno na trudu :) 

 

P.S.Znači ono što sam napisao je točno?
Mislim onaj kod? 

 

P.P.S.Prototip sam mislio za ono spajanje dva niza u jedan,jer mi

nije izvedba krajnje jasna?

 

P.P.P.S.Zar ono 3-i-1 radi uopće?

EuNE:AnakinSW,WoT: BlackRainCRO
Poruka je uređivana zadnji put ned 10.2.2013 22:25 (pandza94).
Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C-u - od svega pomalo
pandza94 kaže...

iostream mi je još nepoznat,najdalje što smo mi došli je funkcije,tako da

ne bi smio raditi preko toga..
No hvala svejedno na trudu :) 

E pa prevedi ovo na C, bitan ti je algoritam, a sintaksu u čistom C napiši, umjesto cout printf, i deklariraj indekse petlje izvan petlje.

Što se tiče spajanja nizova, pogledaj ovdje http://stackoverflow.com/questions/1700182/how-do-i-merge-two-arrays-having-different-values-into-one-array

nemam vremena sad pisati to.

A ono 3-i-1 naravno da radi, ne pišem ja ništa bez veze, lijepo sam ti rekao da kod  elementa  na sporednoj dijagonali niz[i][j] je suma indeksa i + j = n-1, a to je upravo to.

Poruka je uređivana zadnji put ned 10.2.2013 22:31 (Floki).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice