PDA

Prikaži potpunu verziju : Zadatak u C-u


Krilce
3.11.2010, 22:53
Pozz. Blizi se kolokvijum iz programiranja, danas smo dobili neke zadatke za vezbanje, a ja ne mogu da uradim ni 1. Da li bi neko mogao da odradi ovaj zadatak, objasnjejne nije potrebno, shvaticu sam.

Dat je niz X od maksimalno 25 celobrojnih elemenata.
Ucitati n elemenata u niz X i formirati nizove A i B, pri
cemu su elementi niza A parni elementi niza X, a elementi
niza B su negativni elementi niza X.

Kodiranje samog niza mi nije problem, ali mi nije jasno kako parne elemente iz niza X da ispisem u nizu A, a negativne u B. Hvala puno

boshkodj
3.11.2010, 23:26
Pozz. Blizi se kolokvijum iz programiranja, danas smo dobili neke zadatke za vezbanje, a ja ne mogu da uradim ni 1. Da li bi neko mogao da odradi ovaj zadatak, objasnjejne nije potrebno, shvaticu sam.

Dat je niz X od maksimalno 25 celobrojnih elemenata.
Ucitati n elemenata u niz X i formirati nizove A i B, pri
cemu su elementi niza A parni elementi niza X, a elementi
niza B su negativni elementi niza X.

Kodiranje samog niza mi nije problem, ali mi nije jasno kako parne elemente iz niza X da ispisem u nizu A, a negativne u B. Hvala puno
Napravis for petlju koja prolazi kroz sve elemente niza X, i onda proveravas :

if( x[i] % 2 == 0 ) // Onda je paran broj
{

}

if( x[i] < 0 ) // Onda je negativan broj
{

}

Geomaster
4.11.2010, 1:03
Pozz. Blizi se kolokvijum iz programiranja, danas smo dobili neke zadatke za vezbanje, a ja ne mogu da uradim ni 1. Da li bi neko mogao da odradi ovaj zadatak, objasnjejne nije potrebno, shvaticu sam.

Dat je niz X od maksimalno 25 celobrojnih elemenata.
Ucitati n elemenata u niz X i formirati nizove A i B, pri
cemu su elementi niza A parni elementi niza X, a elementi
niza B su negativni elementi niza X.

Kodiranje samog niza mi nije problem, ali mi nije jasno kako parne elemente iz niza X da ispisem u nizu A, a negativne u B. Hvala puno
Evo ovako bi to išlo

#include <vector>

....

int n;
// ovde učitaš dužinu niza u n

int* x = new int[n]; // napravimo niz x dužine n

// ovde učitaš elemente niza

std::vector<int> a; // ovo je lista A
std::vector<int> b; // B

// prolazimo kroz svaki element niza, koristio sam indekse a ne pokazivače da se ne zbuniš
for (int i = 0; i < n; ++i)
{
if (x[i] % 2 == 0) // paran broj (x % 2 znači ostatak pri deljenju sa 2)
a.push_back(x[i]); // stavimo ga u A
if (x[i] < 0) // negativan
b.push_back(x[i]); // stavimo ga u B
}

// ovde imaš vectore A i B. ako hoćeš možeš da ih pretvoriš u standardne nizove ovako

int* a_niz = new int[a.size()]; // novi niz veličine koliko i vektor a
int* b_niz = new int[b.size()]; // novi niz veličine koliko i vektor b

for (int j = 0; j < a.size(); ++j) // prolazimo kroz elemente vektora i stavljamo u niz
a_niz[j] = a[j];

for (int k = 0; k < a.size(); ++k)
a_niz[k] = a[k];
Nadam se da si shvatio, stavljao sam komentare gde sam mogao...

enaB
4.11.2010, 8:04
Čovek je rekao zadatak u C-u :)

Geomaster
4.11.2010, 12:01
Čovek je rekao zadatak u C-u :)
Aaaa, fail. @Krilce, izvini :D

clzola
4.11.2010, 13:04
Mozda nije bas najbolje resenje, ali koliko sam jha shvatio
ucitati n brojeva, maksimalno 25 i ispisati u A(parni) i B(negativni) nizove


#include <stdio.h>

int main()
{
int n;
int x[25];
int A[25], B[25];
int i, ja=0, jb=0, j1=0, j2=0;

printf("Unesite duzinu niza: ");
scanf("%d", &n);

if(n<26){
for (i=0; i<n; i++)
{
printf("Unesite broj: ");
scanf("%d", &x[i]);

if(x[i] % 2 == 0) { A[ja]=x[i]; ja++; j1++; }
if(x[i] < 0 ) { B[jb]=x[i]; jb++; j2++; }
}

/* Ako zelis i da ti ispise elemente niza X (unijeti brojevi)
printf("\n\n Elementi niza X: ");
for(i=0; i<n; i++)
{
printf("%d, ", x[i]);
}
*/

printf("\n Elementi niza A: ");
for(ja=0; ja<j1; ja++)
{
printf("%d, ", A[ja]);
}

printf("\n Elementi niza B: ");
for(jb=0; jb<j2; jb++)
{
printf("%d, ", B[jb]);
}
} // End of IF
else printf("Maksimalan broj elemenata je 25.");
getch();
}


Mozda moze i manji kod, ali uglavnom ovaj kod radi :D

MG-RAY
4.11.2010, 13:33
Mozda nije bas najbolje resenje, ali koliko sam jha shvatio
ucitati n brojeva, maksimalno 25 i ispisati u A(parni) i B(negativni) nizove

...
if(x % 2 == 0) { A[ja]=x[i]; ja++; j1++; }
if(x[i] < 0 ) { B[jb]=x[I]; jb++; j2++; }
}
...Mozda moze i manji kod, ali uglavnom ovaj kod radi :D

Zameni pozicije IF blokova, pa će i raditi... :opanachke


#include <stdio.h>
#include <stdlib.h>
#define LIMIT 25
int main()
{
int A[LIMIT], B[LIMIT];
int i = 0, aC = 0, bC = 0;

int lim = 0, num = 0;
printf("Unesite limit: ");
scanf("%d", &lim);

for(i; i < lim; i++)
{
printf("Unesite broj %d: ", i + 1);
scanf("%d", &num);

if(num < 0)
{
B[bC++] = num;
}
else if(num % 2 == 0) A[aC++] = num;
}

printf("A: ");
for(i = 0; i < aC; i++)
{
printf("%d ", A[i]);
}

printf("\nB: ");
for(i = 0; i < bC; i++)
{
printf("%d ", B[i]);
}

return 0;
}

clzola
4.11.2010, 13:38
Zameni pozicije IF blokova, pa će i raditi... :opanachke
Ja sam rekao da kod radi, nisam spominjao da ne radi :D

MG-RAY
4.11.2010, 13:49
Ja sam rekao da kod radi, nisam spominjao da ne radi :D

Pa, ne radi... Ti prvo proveravaš da li je broj paran i smeštaš ga u niz. Problem dolazi kada je broj i paran i negativan, tada tvoj program greši...

clzola
4.11.2010, 13:53
Pa, ne radi... Ti prvo proveravaš da li je broj paran i smeštaš ga u niz. Problem dolazi kada je broj i paran i negativan, tada tvoj program greši...

Jes bogami u pravu si, ja sam mislio da ti mislis, ne radi jer nece da se pokrene..

Krilce
4.11.2010, 19:48
Uspeo sam da odradim , skontao sam kako sam se nalupavao sinoc (posle 7 sati na faksu i 3 sata ucenja, ne bih mogao da odradim ni program za izracunavanje povrsine kvadrata :D). Hvala svima koji su pomogli, zivi bili jos 100 godina (mada svi znamo da se to nece desiti :D)

Evo, postavicu svoj kod, ako nekom bude trebala slicna stvar

#include <stdio.h>
#define MAX 25

int main() {
int x[MAX];
int i,n,p=0,q=1,s;
int a[MAX],b[MAX];

do {
printf("Unesite broj clanova niza(maksimalno %d):",MAX);
scanf("%d",&n);
}
while (n<=0 || n>MAX);

for(i=0;i<n;i++) {
printf("x[%d]=",i);
scanf("%d",&x[i]);
}
for(i=0;i<n;i++)
printf("\n%d. clan niza je:%d\n",i+1,x[i]);

for(i=0;i<n;i++) {
if(x[i]%2==0){
a[p]=x[i];
printf("\n%d. parni clan je: %d\n",q++,a[p]);
}
}

for(i=0;i<n;i++) {
if(x[i]<0){
b[s]=x[i];
printf("\n%d. negativni clan je: %d\n",q++,b[s]);
}
}
return 0;
}