Programiranje u C-u - od svega pomalo izdvojena tema

poruka: 1.661
|
čitano: 331.436
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
Re: Programiranje u C-u - od svega pomalo
senpai kaže...

Trebao bih pomoc u jednom programu (za fax):

zadatak kaze:::

Napisati funkciju koja raˇcuna zbroj dva vektora predstavljena poljima realnih
brojeva (uzeti u obzir kako oba polja moraju biti iste veliˇcine). Funkcija kao rezultat
vra´ca polje koje je rezultat zbrajanja. Na primjeru u main() funkciji pokazati
uporabu napisane funkcije. Za sva polja dinamiˇcki zauzeti potrebnu memoriju.

 

 Za pocetak, zadatak ti kaze realnih, a ti si koristio cijele brojeve pa je to trebalo ispravit, takodjer kad pasteas na forum koristi fromate za kod, ako se radi o kodu.

 

inace, ovo bi trebalo biti rijesenje

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
float *rezVektor (float *a, float *b, float *c, int n){

int i;
for (i = 0; i<n; i++) {
*(c + i) = *(a + i) + *(b + i);
}
return c;
}

int main() {
int i, n;
float *a, *b, *c;
printf("kolika je dimenzija vaseg vektora? \n");
scanf("%d", &n);
a = (float *)malloc(n * sizeof(float));
b = (float *)malloc(n * sizeof(float));
c = (float *)malloc(n * sizeof(float));
printf("unesite elemente prvog vektora...\n");
for (i = 0; i<n; i++)
{
printf("%d. element: ", i + 1);
scanf("%f", a + i);
}
//rezVektor(a);

printf("unesite elemente drugog vektora...\n");
for (i = 0; i<n; i++)
{
printf("%d. element; ", i + 1);
scanf("%f", b + i);
}
c = rezVektor(a, b, c, n);

for (i = 0; i<n; i++) {
*(c + i) = *(a + i) + *(b + i);
}


printf("rezultantni vektor je..\n");
for (i = 0; i<n; i++) {
printf("%.2f. element: %d\n", i + 1, *(c + i));
}
free(a);
free(b);
free(c);
return 0;
}

 

 

 

Ako ti sta nije jasno pitaj

 

 

 

Poruka je uređivana zadnji put sub 7.1.2017 20:41 (ShadoW).
7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Hvala puno za onaj zadatak.. naisao sam na novi problem (ispircavam se ako sam dosadan)..

zadatak:::

Generirati pseudo-sluˇcajni cijeli broj u [50; 1000] te zauzeti dinamiˇcki memoriju za
toliko podataka tipa double. Popuniti dobiveno polje pseudo-sluˇcajnim brojevima
u [0, 1]. Provjeriti i na ekran ispisati odgovaraju´cu poruku nalazi li se u polju
vrijednost 1.

 

napisao sam kod za program::

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
double *p;
int i, n;
srand((unsigned)time(NULL));
n = 50 + (float)rand() / RAND_MAX * 950;
printf("random broj iz intervala [50,1000] = %.2f \n", n);
p = (double*)malloc(n * sizeof(double));
if (p == NULL)
return 0;
for (i = 0; i < n; i++)
{
p[i] = (double)rand() / RAND_MAX;
}
for (i = 0; i < n; i++)
{
printf("p[%d]=%.2f \n", i, p[i]);
}
for (i = 0; i < n; i++)
{
if (p[i] == 1)
printf("u polju se nalazi vrijednost 1\n");
else printf("vrijednost 1 se ne nalazi u ovom polju\n");
break;
}
free(p);
return 0;

}

 

 

greska kada pokrenem program je (pretpostavljam) kod usporedjivanja

if (p[i]==1)

{ ... }

stalno mi ispisuje "broj 1 se ne nalazi u vasem polju" a vise puta sam vidio da se nalazi

moze pomoc?

 
0 0 hvala 0
15 godina
offline
Re: Programiranje u C-u - od svega pomalo
senpai kaže...

Hvala puno za onaj zadatak.. naisao sam na novi problem (ispircavam se ako sam dosadan)..

zadatak:::

Generirati pseudo-sluˇcajni cijeli broj u [50; 1000] te zauzeti dinamiˇcki memoriju za
toliko podataka tipa double. Popuniti dobiveno polje pseudo-sluˇcajnim brojevima
u [0, 1]. Provjeriti i na ekran ispisati odgovaraju´cu poruku nalazi li se u polju
vrijednost 1.

 

napisao sam kod za program::

.

.

.

 

greska kada pokrenem program je (pretpostavljam) kod usporedjivanja

if (p[i]==1)

{ ... }

stalno mi ispisuje "broj 1 se ne nalazi u vasem polju" a vise puta sam vidio da se nalazi

moze pomoc?

 

if (p[i] == 1)
  printf("u polju se nalazi vrijednost 1\n");
else printf("vrijednost 1 se ne nalazi u ovom polju\n"); 
  break;

 

provjerava ti samo prvi clan

ude u petlju, provjeri da li je 1, ako ne ispise da nije i prekine petlju

 

bit ce ti jasnije ako si u istu petlju stavis da ti ispisuje brojeve:

 

evo:

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
double *p;
int i, n;
srand((unsigned)time(NULL));
n = 50 + (float)rand() / RAND_MAX * 950;
printf("random broj iz intervala [50,1000] = %.2f \n", n);
p = (double*)malloc(n * sizeof(double));
if (p == NULL)
return 0;
for (i = 0; i < n; i++)
{
p[i] = (double)rand() / RAND_MAX;
}
for (i = 0; i < n; i++)
{
}
for (i = 0; i < n; i++)
{
if (p[i] == 1){
printf("u polju se nalazi vrijednost 1\n");
free(p);
return 0;
}
else {
printf("p[%d]=%.2f \n", i, p[i]);

}
}
printf("vrijednost 1 se ne nalazi u ovom polju\n");
free(p);
return 0;
}

 

s druge strane, ne uspijevam dobit 1 no kasno je da sad to isprobavam :S

14 godina
offline
Re: Programiranje u C-u - od svega pomalo
captain_soap_McTawish kaže...
Top Bugovac kaže...

Na objektno orijentiranom programiranju profesor je spominjao virtualnu i fizičku memoriju, te kako malloc radi (odnosno kako upravlja memorijom), sve usputno

Gdje mogu naučiti više o tim stvarima? 

 Na operacijskim sustavima? Mislim da se pri kraju predmeta radi nešto vezano za to (strategije dodjele memorije i sl.).

Mislim da je to dio ASP-a(Algoritni i strukture podataka)

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

Jel netko može pronaći grešku u ovom programu ? 

 

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


void upisi(int x[10])
{
int i;
randomize();
for(i=0;i<100;i++)
x[i]=random(1000)-500;
}
void sortiraj(int x[100])
{

int pom,i,j;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(x[j]<x[i])
{
pom=x[i];
x[i]=x[j];
x[j]=pom;
}
}

void ispisi(int x[100])
{
int i;
for(i=0;i<100;i++)
printf("%d\t",x[i]);
}
void main()
{

int a[100];
upisi(a);
printf("\n nesortirano polje je: \n");
ispisi(a);
sortiraj(a);
printf("\n sortirano polje je \n");
ispisi(a);
getch();
}

Konlaw Attract
 
0 0 hvala 0
12 godina
offline
Re: Programiranje u C-u - od svega pomalo
lawofattractioncro kaže...

Jel netko može pronaći grešku u ovom programu ? 

 

 Citiram samo zbog poboljšanja čitljivosti kada se već uporno odbija koristiti odgovarajući format teksta:

 

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

void upisi(int x[10])
{
    int i;
    randomize();
    for(i=0;i<100;i++)
        x[i]=random(1000)-500;
}

void sortiraj(int x[100])
{
   
    int pom,i,j;
    for(i=0;i<99;i++)
        for(j=i+1;j<100;j++)
            if(x[j]<x[i])
            {
                pom=x[i];
                x[i]=x[j];
                x[j]=pom;
            }
}

void ispisi(int x[100])
{
    int i;
    for(i=0;i<100;i++)
        printf("%dt",x[i]);
}

void main()
{
   
    int a[100];
    upisi(a);
    printf("n nesortirano polje je: n");
    ispisi(a);
    sortiraj(a);
    printf("n sortirano polje je n");
    ispisi(a);
    getch();
}

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put sri 1.2.2017 12:53 (pr0n_addict).
7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Moze li netko pronaći grešku u programu.

Poruka je uređivana zadnji put sub 4.2.2017 9:24 (lawofattractioncro).
9 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
pr0n_addict kaže...
lawofattractioncro kaže...

Jel netko može pronaći grešku u ovom programu ? 

 

 

Evo napisao sam ti komentare u programu, ono što je po meni krivo.            

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

void upisi(int x[10]) //deklarirao si polje od 10 elemenata i onda ga poslje puniš do 100 elemenata?!
{
    int i;
    randomize(); //ovo ne postoji u c-u, možeš koristiti srand sa vremenom
    for(i=0;i<100;i++) //polje deklarirano do 10, a puniš ga do 100?!
        x[i]=random(1000)-500; //također ne postoji koristi rand
}

void sortiraj(int x[100])
{
   
    int pom,i,j;
    for(i=0;i<99;i++)
        for(j=i+1;j<100;j++)
            if(x[j]<x[i])
            {
                pom=x[i];
                x[i]=x[j];
                x[j]=pom;
            }
}

void ispisi(int x[100])
{
    int i;
    for(i=0;i<100;i++)
        printf("%dt",x[i]); //ne znam što bi trebalo značiti %dt -> samo %d\n 

void main()
{
   
    int a[100];
    upisi(a);
    printf("n nesortirano polje je: n"); //ne razumijem što bi ovo trebalo značiti
    ispisi(a);
    sortiraj(a);
    printf("n sortirano polje je n"); //ne razumijem što bi ovo trebalo značiti
    ispisi(a);
    getch(); //ovo ti ne treba
}

Koji IDE koristiš?

Poruka je uređivana zadnji put sub 4.2.2017 11:36 (el pistlero123).
7 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Oprostite,znam da je ovo offtopic ali ne znam u koju temu da se javim.

Naime idem na županijsko natjecanje iz inf za tjedan dana,te ne razumijem kako riješiti sljedeći algoritam:

 

Fight with the best,die like the rest!
Moj PC  
0 0 hvala 0
9 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
FatMAN kaže...

Oprostite,znam da je ovo offtopic ali ne znam u koju temu da se javim.

Naime idem na županijsko natjecanje iz inf za tjedan dana,te ne razumijem kako riješiti sljedeći algoritam:

 

 zbrajaš samo djelitelje tipa:

A. zbroj = 1

B. zbroj = 1+2+4 = 7

C. zbroj = 1+2+4+7+14 = 28

D. zbroj = 1+2+4+8+16+32+64=127

Tako da c je točan

7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
el pistlero123 kaže...
FatMAN kaže...

Oprostite,znam da je ovo offtopic ali ne znam u koju temu da se javim.

Naime idem na županijsko natjecanje iz inf za tjedan dana,te ne razumijem kako riješiti sljedeći algoritam:

 

 zbrajaš samo djelitelje tipa:

A. zbroj = 1

B. zbroj = 1+2+4 = 7

C. zbroj = 1+2+4+7+14 = 28

D. zbroj = 1+2+4+8+16+32+64=127

Tako da c je točan

 Hvala ali možeš li mi objasniti na koji način si izvukao postupak.Algoritmi mi baš i ne idu

Fight with the best,die like the rest!
Poruka je uređivana zadnji put sub 4.2.2017 14:25 (FatMAN).
16 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pa ako je k broj, zbrojiš sve djeljitelje broja k osim njega samog.

Druga linija koda znači uzmi raspon od 1 do k-1

Treća linija koda znači uzmi djeljitelje

Četvrta linija koda znači zbroji djeljitelje

Poruka je uređivana zadnji put sub 4.2.2017 15:01 (Floki).
 
0 0 hvala 0
7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Pa kako da ja znam koliki je raspon od 1 do k-1.

I sto je tocno i?

Fight with the best,die like the rest!
Poruka je uređivana zadnji put sub 4.2.2017 22:07 (FatMAN).
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
FatMAN kaže...

Pa kako da ja znam koliki je raspon od 1 do k-1.

I sto je tocno i?

 

Evo ti code da se više ne zayebavaš , ako nije što jasno pitaj.

 

#include <stdio.h>
#include <string.h>


void check(int k) {
    char res[2];
    int zbroj = 0;

    for(int i=1 ; i<(k-1) ; ++i){
        if((k%i) == 0) {
            zbroj = zbroj+i;
        }
    }

    if (zbroj == k) {
        strcpy(res , "da");
    } else {
        strcpy(res , "ne");
    }

    printf("%s\n" , res);
}

int main()
{
    check(2);
    check(8);
    check(28);
    check(128);

    return 0;
}

moje aplikacije na play-u : https://play.google.com/store/search?q=nik02droid
9 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
FatMAN kaže...

Pa kako da ja znam koliki je raspon od 1 do k-1.

I sto je tocno i?

 i je brojač u toj petlji koji ide do k-1, a ujedno ti i služi kao djelitelj. Ti moraš naći sve djelitelje tih zadanih brojeva osim početnog broja jer imaš do k-1, i zbrojiti ih. To je to.

Poruka je uređivana zadnji put sub 4.2.2017 23:28 (el pistlero123).
7 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Koristim Dev c++. Jel možeš napisati točan kod ako imaš vremena, jer ne razumijem baš sve.

Konlaw Attract
9 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
lawofattractioncro kaže...

Koristim Dev c++. Jel možeš napisati točan kod ako imaš vremena, jer ne razumijem baš sve.

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <time.h>

 

void upisi(int x[100])

{

   int i;

   srand(time(NULL));

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

    x[i]=rand() % 1000;

}

 

void sortiraj(int x[100])
{
   int pom,i,j;
   for(i=0;i<99;i++)
    for(j=i+1;j<100;j++)
      if(x[j]<x[i])
      {
        pom=x[i];
        x[i]=x[j];
        x[j]=pom;
      }
}

 

void ispisi(int x[100])
{
  int i;
  for(i=0;i<100;i++)
    printf("%d.: %d\n",i+1, x[i]);
}

 

int main()
{
  int a[100];
  upisi(a);
  printf("\nnesortirano polje je:\n");
  ispisi(a);
  sortiraj(a);
  printf("\nsortirano polje je:\n");
  ispisi(a);
  getch();
  return 0;
}

 

Evo izvoli

stavio sam da generira random brojeve do 1000.

Poruka je uređivana zadnji put ned 5.2.2017 14:45 (el pistlero123).
16 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

U biti onaj kod gdje kao argument funkcije upis deklarira polje od 10 elemenata radi. U funkciju upis prenosimo pokazivac na prvi element niza X iz main funkcije, a ostalo napravi aritmetika pokazivaca.

Zato kao argument funkcije  deklariramo pokazivac umjesto niza ili niz bez broja elemenata.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
1 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
FatMAN kaže...

Pa kako da ja znam koliki je raspon od 1 do k-1.

I sto je tocno i?

 Na koje ti natjecanje tocno ides, informatike ili filozofije.

Ako iz pseudo koda ne znas procitati da je k broj koji unosis a iz petlje ne znas vidjeti da je i index petlje a od 1 do k - i raspon petlje, o cemu mi onda govorimo.

Covjek ti je  cisto solidno objasnio rad algoritma, a petlje i grananja moras nauciti sam iz bilo kojeg izvora, skola, repeticije, knjiga, tutorijali na netu, to ti ovdje nitko nece objasnjavati.

Poruka je uređivana zadnji put pon 6.2.2017 13:37 (Floki).
9 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
Floki kaže...

U biti onaj kod gdje kao argument funkcije upis deklarira polje od 10 elemenata radi. U funkciju upis prenosimo pokazivac na prvi element niza X iz main funkcije, a ostalo napravi aritmetika pokazivaca.

Zato kao argument funkcije  deklariramo pokazivac umjesto niza ili niz bez broja elemenata.

 

 Aha znači apsolutno je svejedno što se deklarira. E super

 

 

Nego, imam problema sa razumijevanjem pokazivača na polje pokazivača. Recimo:

char *a[5];

char **b = &a;

//na što sada pokazuje pokazivač b(pretpostavimo da je u svakom a[i] nekakav string); kako alocirati memoriju za takvo polje i kako ga prenijeti u funkciju

16 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
el pistlero123 kaže...
Floki kaže...

U biti onaj kod gdje kao argument funkcije upis deklarira polje od 10 elemenata radi. U funkciju upis prenosimo pokazivac na prvi element niza X iz main funkcije, a ostalo napravi aritmetika pokazivaca.

Zato kao argument funkcije  deklariramo pokazivac umjesto niza ili niz bez broja elemenata.

 

 Aha znači apsolutno je svejedno što se deklarira. E super

 

 

Nego, imam problema sa razumijevanjem pokazivača na polje pokazivača. Recimo:

char *a[5];

char **b = &a;

//na što sada pokazuje pokazivač b(pretpostavimo da je u svakom a[i] nekakav string); kako alocirati memoriju za takvo polje i kako ga prenijeti u funkciju

 To je prijenos 2D polja.

Naravno, treba staviti i dealokaciju nizova, ne da mi se sad to raditi, onda bi trebao strcpy koristiti kad inicijaliziram nizove.

 

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

void ispis(char** a)
{
   for (int i = 0; i < 2; i++)
      printf("%s\n", *(a+i));
}
int main()
{
   char** a;
   a = new char*[10];
   for (int i = 0; i < 10; i++)
      *(a+i) = new char[10];
   a[0] = "abc";
   a[1] = "def";
   ispis(a);
   return 0;
}


Poruka je uređivana zadnji put pon 6.2.2017 20:27 (Floki).
11 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Moze mala pomoc, sortiranje vezane liste, jel moze neko objasnit di grijesim.

 

http://pastebin.com/i2eBYfWc

 

Greska je sto samo mijenjem na sto pokazuju pokazivaci ne mijenjam stvarne adrese, jel ima neko alg za promjenu adresa ili i zamjena podataka ok ?

Poruka je uređivana zadnji put uto 7.2.2017 23:28 (someguy).
 
0 0 hvala 0
10 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pitanje, koliko bajta memorije se zauzima izvršavanjem naredbe: float *p = (float *)malloc(5 + 10 * sizeof(float)); (float je 4 bajta)
Može mi netko reći po čemu zaključim koliko to zauzima. sizeof je ovaj operator kojim je postavljen float i 15 puta ga očito množi? Nije li onda 60 bajta memorije overall.

Kreativnost se postiže repeticijom. Analogno, talent - radom.
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
isuckatthisgame kaže...

Pitanje, koliko bajta memorije se zauzima izvršavanjem naredbe: float *p = (float *)malloc(5 + 10 * sizeof(float)); (float je 4 bajta)
Može mi netko reći po čemu zaključim koliko to zauzima. sizeof je ovaj operator kojim je postavljen float i 15 puta ga očito množi? Nije li onda 60 bajta memorije overall.

 

Nije,

             //5 +(10*     4    ) = 45
float *p = (float *)malloc(5 + 10 * sizeof(float));

 

Množenje ima prednost nad zbrajanjem.

 

moje aplikacije na play-u : https://play.google.com/store/search?q=nik02droid
11 godina
offline
Re: Programiranje u C-u - od svega pomalo
isuckatthisgame kaže...

Može mi netko reći po čemu zaključim koliko to zauzima.

 printf("%d", 5 + 10 * sizeof(float));

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

Moze mala pomoc, sortiranje vezane liste, jel moze neko objasnit di grijesim.

 

http://pastebin.com/i2eBYfWc

 

Greska je sto samo mijenjem na sto pokazuju pokazivaci ne mijenjam stvarne adrese, jel ima neko alg za promjenu adresa ili i zamjena podataka ok ?

 Adrese pokazivaca mozemo promjeniti jedino preko preko dvostrukih pokazivaca, a ovdje jos imamo izmjenu next pokazivaca noda kao dodatan posao.

U primjeru sam uzeo sentiel node kao prvi da olaksam posao, to je onaj kojeg ne koristimo. Sljedeca dva noda sam zamjenio, najprije isprintao listu prije zamjene dva noda, a zatim poslije zamjene. Da bolje predocim stvari isprintao sam i adrese pokazivaca.

 

void print(node* start)
{
   while (start != NULL)
   {
      printf(" %d  %p", start->broj, start);
      start = start->next;
   }
   printf("\n");
}
int main()
{
   node* start = (node*)malloc(sizeof(node));
   node* prvi = (node*)malloc(sizeof(node));
   node* drugi = (node*)malloc(sizeof(node));
   start->broj = 0;
   start->next = prvi;
   prvi->broj = 8;
   prvi->next = drugi;
   drugi->broj = 5;
   drugi->next = NULL;

   node* temp;
   node** k = &start; // uzimamo adresu start pokazivaca u dvostruki pokazivac k
   node** l;
   print(start);
   k = &(*k)->next; // dvostruki pokazivac k pomice adresu na node prvi
   l = &(*k)->next; // dvostruki pokazivac l pokazuje na node drugi

   temp = *k;   // mijenjamo adrese pokazivaca
   *k = *l;
   *l = temp;

   temp = (*k)->next;     //  mijenjamo next pokazivace
   (*k)->next = (*l)->next;
   (*l)->next = temp;

   print(start);

   free(start);
   free(prvi);
   free(drugi);

   return 0;
}

Poruka je uređivana zadnji put ned 12.2.2017 16:19 (Floki).
10 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

imam jedno pitanjce. zna netko brzinski alogritam kako doći do elemenata iznad i ispod presjeka glavne i sporedne dijagonale unutar matrice (2D polja) u c-u.  postoji li mogućnost ugnjezditi četiri petlje for jednu unutar druge? moja pretpostavka da ne, jer budem opet tražil po čitavom području ispod ili iznad jedne dijagonale, pa mi program tu radi nepotreban višak koraka, zar ne

 

složil sam ovak nešto za elemente

 

ispod sporedne:

for (i = 0; i < n; i++)
   for (j = i + 1; j < n; j++)

 

iznad sporedne:

for (i = 0; i < n; i++)
   for (j = 0; j < n - i - 1; j++)

 

ispod glavne:

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

 

iznad glavne:

for (i = 0; i < n - 1; i++)
   for (j = 1 + i; j < n; j++)

 

 

znači ciljano mi treba presijek iznad i ispod jedne i druge dijagonale 2d polja, malo mi je overload

Kreativnost se postiže repeticijom. Analogno, talent - radom.
Poruka je uređivana zadnji put pon 20.2.2017 18:01 (isuckatthisgame).
Moj PC  
0 0 hvala 0
14 godina
offline
Programiranje u C-u - od svega pomalo

Najlakse ti je kad si nacrtas sliku na papir i oznacis kriticne tocke.

ajmo reci da je x ono sto trebas, gledamo presjek iznad glavne i sporedne dijagonale(dijagonale ukljucene):

1 1 1 1 1

0 1 1 1 0

0 0 1 0 0  -n/2

0 0 0 0 0

0 0 0 0 0

    |

   n/2

Znaci krecemo razmisljati logicki i vidimo da prva petlja mora do n/2

E, sad gledamo kako doci uz najmanje koraka do svih brojeva:

Zakljucujemo da u svakom redu krecemo od i, a stajemo na n-i

Iz toga dobivamo :

for(i=0;i<=n/2;i++){

  for(j=i;j<n-i;j++){

 

  }

}

Takoder imaj na umu da mozes koristiti i i--

Tako da onda za presjek ispod koristis obrnutu logiku:

for(i=n:i>n/2;i--){

  for(j=n-i;j<i;j++){

  

  }

}

Moj PC  
1 0 hvala 1
10 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

hvala na ideji, ovo mi daje malo drugačiju sliku na polje, svakako plus. samo, nije li presijek isključivo sve iznad 'točke' sjecišta dijagonala, bez dijagonala (elementi koji su iznad odnosno ispod obje dijagonale polja)

 

 

dakle ako je 2D polje primjerice 5x5, traženi elementi x(iznad presjeka glavne i sporedne) i y(ispod):

0 x x x 0
0 0 x 0 0
0 0 0 0 0
0 0 y 0 0
0 y y y 0

 

masnim označene dijagonale

 

ili preglednije, u polju 3x3

0 x 0
0 0 0
0 y 0

 

 

4x4

0 x x 0
0 00 0
0 00 0
0 y y 0

 

 

možda griješim, ispravite me

 

 

postupkom

for (i = 0; i <= n / 2; i++)
   for (j = i; j < n - i; j++)

dolazim do ovoga:
x x x x x
0 x x x 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

Kreativnost se postiže repeticijom. Analogno, talent - radom.
Poruka je uređivana zadnji put uto 21.2.2017 9:28 (isuckatthisgame).
14 godina
offline
Programiranje u C-u - od svega pomalo

A gle, sad s matematicke strane ovisi kakve su zagrade, to moras pitati onog tko ti je postavio zadatak, ali u tom slucaju samo promjenis u for-u samo za +1 pocetak reda i za -1kraj i brojis 1 red manje.

 

EDIT:

probaj:

for(i=0;i<(n/2);i++){

  for(j=i+1;j<n-i-1;j++){

    //mozda je i krivo, nemam bas vremena analizirati

  }

}

Poruka je uređivana zadnji put uto 21.2.2017 13:10 (CroNk3r).
Moj PC  
1 0 hvala 1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice