Pitanje za zadatak iz C -nizovi

HelpF2

Početnik
Poruka
2
mam cetiri niza i teba da mi na displej izbaci koliko ima brojeva, u svakom nizu po na osob, manje od sest. E sada ne znam da li da upotrebim cetiri FOR petlj, za svaki if uslov jedan for, ili da jedan for za sve if ali ne znam kako da to lepo upakujem da proverava svaki niz a ne samo jedan.

Program nije ceo posto mi treba samo taj deo provere.

Kod:
byte niz1[16]={3,22,31,9,11,6,7,8,23,17,10,30,73,40,55,93};
 byte niz2[16]={11,14,7,13,17,19,97,2,12,128,1,124,123,122,33,21};
  byte niz3[16]={9,15,4,13,2,49,57,3,74,47,39,59,112,100,91,6};
   byte niz4[16]={33,58,68,66,21,19,97,3,1,2,5,12,27,9,15,11};
byte count1=0,count2=0,count3=0,count4=0;
a= niz1[i];
b= niz2[i];
c= niz3[i];
 d= niz4[i];

for (i=0;i<16;i++){
                           if(a<6) count1++;
                                displej=count1 ;

                           if(b<6) count2++;
                            displej=count2;
                           if(c<6) count3++;
                          displej=count3;
                           if(d<6) count4++;
                           displej=count4;  }
 
mam cetiri niza i teba da mi na displej izbaci koliko ima brojeva, u svakom nizu po na osob, manje od sest. E sada ne znam da li da upotrebim cetiri FOR petlj, za svaki if uslov jedan for, ili da jedan for za sve if ali ne znam kako da to lepo upakujem da proverava svaki niz a ne samo jedan.

Program nije ceo posto mi treba samo taj deo provere.

Kod:
byte niz1[16]={3,22,31,9,11,6,7,8,23,17,10,30,73,40,55,93};
 byte niz2[16]={11,14,7,13,17,19,97,2,12,128,1,124,123,122,33,21};
  byte niz3[16]={9,15,4,13,2,49,57,3,74,47,39,59,112,100,91,6};
   byte niz4[16]={33,58,68,66,21,19,97,3,1,2,5,12,27,9,15,11};
byte count1=0,count2=0,count3=0,count4=0;
a= niz1[i];
b= niz2[i];
c= niz3[i];
 d= niz4[i];

for (i=0;i<16;i++){
                           if(a<6) count1++;
                                displej=count1 ;

                           if(b<6) count2++;
                            displej=count2;
                           if(c<6) count3++;
                          displej=count3;
                           if(d<6) count4++;
                           displej=count4;  }
Kod:
[COLOR="#FF0000"]const unsigned char[/COLOR] DUZINA_NIZA [COLOR="#800080"]=[/COLOR] 10[COLOR="#800080"];[/COLOR]
[COLOR="#B22222"]char[/COLOR] bNiz1 [COLOR="#800080"][[/COLOR]DUZINA_NIZA[COLOR="#800080"]][/COLOR] = [COLOR="#800080"]"[/COLOR]123456789[COLOR="#800080"]";[/COLOR] [COLOR="#006400"]//zadnji clan je '/0', odnosno bajt (vrijednost od 0 do 255) koji ima vrijednost '0', zato 10, iako niz ima 9 vrijednosti.[/COLOR]
char bNiz2 [DUZINA_NIZA] = "234567891";
char bNiz3 [DUZINA_NIZA] = "345678912";
char bNiz4 [DUZINA_NIZA] = "456789123";
char i = 0;

[COLOR="#FF0000"]for[/COLOR] [COLOR="#800080"]([/COLOR]i[COLOR="#800080"];[/COLOR] i [COLOR="#800080"]<[/COLOR] 9[COLOR="#800080"];[/COLOR] i[COLOR="#800080"]++)
{[/COLOR]
    cout << "Niz1:" << bNiz1[i] << " Niz2:" << bNiz2[i] << " Niz3:" << bNiz3[i] << " Niz4" << bNiz4[i] << "\n\n\r";
[COLOR="#800080"]}[/COLOR]
 
Kod:
[COLOR="#FF0000"]const unsigned char[/COLOR] DUZINA_NIZA [COLOR="#800080"]=[/COLOR] 10[COLOR="#800080"];[/COLOR]
[COLOR="#B22222"]char[/COLOR] bNiz1 [COLOR="#800080"][[/COLOR]DUZINA_NIZA[COLOR="#800080"]][/COLOR] = [COLOR="#800080"]"[/COLOR]123456789[COLOR="#800080"]";[/COLOR] [COLOR="#006400"]//zadnji clan je '/0', odnosno bajt (vrijednost od 0 do 255) koji ima vrijednost '0', zato 10, iako niz ima 9 vrijednosti.[/COLOR]
char bNiz2 [DUZINA_NIZA] = "234567891";
char bNiz3 [DUZINA_NIZA] = "345678912";
char bNiz4 [DUZINA_NIZA] = "456789123";
char i = 0;

[COLOR="#FF0000"]for[/COLOR] [COLOR="#800080"]([/COLOR]i[COLOR="#800080"];[/COLOR] i [COLOR="#800080"]<[/COLOR] 9[COLOR="#800080"];[/COLOR] i[COLOR="#800080"]++)
{[/COLOR]
    cout << "Niz1:" << bNiz1[i] << " Niz2:" << bNiz2[i] << " Niz3:" << bNiz3[i] << " Niz4" << bNiz4[i] << "\n\n\r";
[COLOR="#800080"]}[/COLOR]

Hah, kakva je ovo glupost od koda? Ovo uopšte ne radi ono što je čovek napisao da zadatak traži (ne broji ništa), niti, na kraju krajeva, ima veze sa zadatkom (ispisuje sadržaj nekakva četiri niza koji veze nemaju sa postavkom).

Bolje ne "pomaži" drugima ako ni sam ne znaš da programiraš, više štete nego koristi.


Klasično rešenje:

Kod:
typedef char byte;  // ukoliko definicija nedostaje
#define BROJ_NIZOVA    4
#define MAX_CLANOVA    16
#define LIMIT    6

int i, counter[BROJ_NIZOVA] = { 0 };

byte niz1[MAX_CLANOVA] = { 3, 22, 31, 9, 11, 6, 7, 8, 23, 17, 10, 30, 73, 40, 55, 93 };
byte niz2[MAX_CLANOVA] = { 11, 14, 7, 13, 17, 19, 97, 2, 12, 128, 1, 124, 123, 122, 33, 21 };
byte niz3[MAX_CLANOVA] = { 9, 15, 4, 13, 2, 49, 57, 3, 74, 47, 39, 59, 112, 100, 91, 6 };
byte niz4[MAX_CLANOVA] = { 33, 58, 68, 66, 21, 19, 97, 3, 1, 2, 5, 12, 27, 9, 15, 11 };

// brojanje članova niza manjih od LIMIT (== 6)
for( i = 0; i < MAX_CLANOVA; i++ )
{
    if( niz1[ i ] < LIMIT )
        counter[0]++;
    if( niz2[ i ] < LIMIT )
        counter[1]++;
    if( niz3[ i ] < LIMIT )
        counter[2]++;
    if( niz4[ i ] < LIMIT )
        counter[3]++;
}

// ispis (primer)
for( i = 0; i < BROJ_NIZOVA; i++ )
    printf( "Niz broj %d ima %d članova manjih od %d\n", i+1, counter[i], LIMIT );


Mada je bolje zadate nizove držati u jednom dvodimenzionalnom nizu veličine BROJ_NIZOVA x MAX_CLANOVA (u ovom slučaju, 4 x 16):

Kod:
typedef char byte;  // ukoliko definicija nedostaje
#define BROJ_NIZOVA    4
#define MAX_CLANOVA    16
#define LIMIT    6

int i, j, counter[BROJ_NIZOVA] = { 0 }; // dovoljna je jedna nula, po standardu će svi ostali članovi biti inicijalizovani na 0

byte niz[BROJ_NIZOVA][MAX_CLANOVA] = {
    { 3, 22, 31, 9, 11, 6, 7, 8, 23, 17, 10, 30, 73, 40, 55, 93 },
    { 11, 14, 7, 13, 17, 19, 97, 2, 12, 128, 1, 124, 123, 122, 33, 21 },
    { 9, 15, 4, 13, 2, 49, 57, 3, 74, 47, 39, 59, 112, 100, 91, 6 },
    { 33, 58, 68, 66, 21, 19, 97, 3, 1, 2, 5, 12, 27, 9, 15, 11 }
};

// brojanje članova niza manjih od LIMIT (== 6)
for( i = 0; i < BROJ_NIZOVA; i++ )
    for( j = 0; j < MAX_CLANOVA; j++ )
        if( niz[ i ][ j ] < LIMIT )
            counter[i]++;

// ispis (primer)
for( i = 0; i < BROJ_NIZOVA; i++ )
    printf( "Niz broj %d ima %d članova manjih od %d\n", i+1, counter[i], LIMIT );

Napomena: Malo sam "raširio" indekse niza u [] zagradama sa praznim mestima, da bi se bolje uočilo koji indeks se korist gde.
 
Poslednja izmena:
mam cetiri niza i teba da mi na displej izbaci koliko ima brojeva, u svakom nizu po na osob, manje od sest. E sada ne znam da li da upotrebim cetiri FOR petlj, za svaki if uslov jedan for, ili da jedan for za sve if ali ne znam kako da to lepo upakujem da proverava svaki niz a ne samo jedan.

Program nije ceo posto mi treba samo taj deo provere.

Kod:
byte niz1[16]={3,22,31,9,11,6,7,8,23,17,10,30,73,40,55,93};
 byte niz2[16]={11,14,7,13,17,19,97,2,12,128,1,124,123,122,33,21};
  byte niz3[16]={9,15,4,13,2,49,57,3,74,47,39,59,112,100,91,6};
   byte niz4[16]={33,58,68,66,21,19,97,3,1,2,5,12,27,9,15,11};
byte count1=0,count2=0,count3=0,count4=0;
a= niz1[i];
b= niz2[i];
c= niz3[i];
 d= niz4[i];

for (i=0;i<16;i++){
                           if(a<6) count1++;
                                displej=count1 ;

                           if(b<6) count2++;
                            displej=count2;
                           if(c<6) count3++;
                          displej=count3;
                           if(d<6) count4++;
                           displej=count4;  }

imas funkciju u c-u. I malo pisi jasnije. Bas je bilo zamorno citati.
 

Back
Top