Pereiti prie turinio

C kalba, masyvai ir ju ribos


Rekomenduojami pranešimai

Sveiki, gavau tokia uzduoti :

 

Grupė n žmonių, kurių ūgiai žinomi (sugeneruoti atsitiktinai), sustojo ratu. Parašykite programą, kuri suskaičiuotų, kiek yra žmonių, stovinčių tarp:

a.tokio pat ūgio žmonių;

b.aukštesnių žmonių;

c.žemesnių žmonių;

d.neaukštesnių žmonių.

 

Problema: Turiu 5 zmoniu masyva |1|2|3|4|5|, mano programa tikrina nezinomus skaicius esamus uz masyvo ribu.

|1nezinomas skaicius|1|2|3|4|5|2nezinomas skaicius| pavyzdziui tikrina 5 zmogu su 4 ir 2 nezinomu skaiciumi, o reikia kad tikrintu 5 su 4 ir 1.

 

Tikiuos supratot mano beda :D

 

 

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

int main()
{
time_t sec;
int i,j,a,*masyvas;
int l=0, m=0, d=0 ;
time(&sec);
srand((unsigned int)sec);
printf("Iveskite zmoniu kieki: ");
scanf("%d",&a);

masyvas = (int*)malloc(a*sizeof(int*));

for(i=0;i<a;i++)
{
*(masyvas+i)= rand()%10;
printf(" %d ", *(masyvas+i));
}
printf ("\n") ;

for (i=0 ; i<a ; i++)
{
    if(masyvas[i]==masyvas[i-1] && masyvas[i]==masyvas[i+1])
     l = l +1 ;
     else continue ;
}
printf ("Tokio pat ugio %d", l) ;

printf ("\n") ;

for (i=0 ; i<a ; i++)
{
    if(masyvas[i]<masyvas[i-1] && masyvas[i]<masyvas[i+1])
     m = m +1 ;
     else continue ;
}
printf ("Didesnio ugio %d", m) ;



printf ("\n") ;

for (i=0 ; i<a ; i++)
{
    if(masyvas[i]>masyvas[i-1] && masyvas[i]>masyvas[i+1])
     d = d +1 ;
     else continue ;
}
printf ("Mazesnio ugio %d", d) ;

return 0;}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gali tikrinti, ar indeksas neperžengia masyvo rėžių. Jei turi n žmonių ir jei tikrini n-tąjį žmogų, tai vietoj to, kad žiūrėtum į n-1 ir n+1, žiūrėk į n-1 ir 1 narį. Su if'ais nesudėtinga pasidaryt.

 

O protingesnė idėja būtų pasidaryt falsyvias kopijas: sudubliuoji pirmą ir paskutinį žmogų taip, kad paskutinis (n-tasis) žmogus būtų nulinėje vietoje, o pirmasis – n+1 vietoje. Tokiu atveju nereikės tikrinti, ar peržiūrimas pirmas/paskutinis žmogus. Masyvas pereinamas taip pat: for(int i = 1; i <= n; i++).

 

dEVoox parašė anksčiau :D

Redagavo wi_lius
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ačiū už pagalbą :)

 

 

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

int main()
{
time_t sec;
int i,b,j,q=0,a,*masyvas ;
int l=0, m=0, d=0 ;
time(&sec);
srand((unsigned int)sec);
printf("Iveskite zmoniu kieki: ");
scanf("%d",&b);
a = b + 2;
masyvas = (int*)malloc(a*sizeof(int));


for(i=0;i<a;i++)
{
*(masyvas+i)= rand()%10;
}
j = masyvas[a-2];
masyvas[0]= j;
q=masyvas[1];
masyvas[a-1]= q;

for(i=1;i<a-1;i++)
{
printf(" %d |", *(masyvas+i));
}
printf ("\n") ;
printf ("\n") ;


for (i=1 ; i<a ; i++)
{
    if(masyvas[i]==masyvas[i-1] && masyvas[i]==masyvas[i+1])
     l = l +1 ;
}
printf ("Tarp tokio pat ugio %d", l) ;

printf ("\n") ;

for (i=1 ; i<a ; i++)
{
    if(masyvas[i]<masyvas[i-1] && masyvas[i]<masyvas[i+1])
     m = m +1 ;
}
printf ("Tarp didesio ugio %d", m) ;



printf ("\n") ;

for (i=1 ; i<a ; i++)
{
    if(masyvas[i]>masyvas[i-1] && masyvas[i]>masyvas[i+1])
     d = d +1 ;
}
printf ("Tarp mazesnio ugio %d", d) ;


printf ("\n") ;

for (i=1 ; i<a ; i++)
{
    if(masyvas[i]>=masyvas[i-1]  && masyvas[i]<=masyvas[i+1] )
    {
     d = d +1 ;
    }
   if(masyvas[i]<=masyvas[i-1]  && masyvas[i]>=masyvas[i+1] )
   {
       d = d+1 ;
   }
}
printf ("Tarp nemazesnio ugio  %d", d) ;

return 0;}

Redagavo eskadron
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...