Низови – задаци

Да се подсетимо:

Низ је структура података истог типа који имају заједничко име а појединачним елементима се приступа на основу редног броја. За дефинисање низа и за приступ елементима низа користе се []. Редни бројеви (индекси) крећу се од 0 до n-1. Елементима низа може се приступати и помоћу показивача:

#include<stdio.h>
main()
{
 int a[20],*p,zbir,n,i;

printf("unesi n");scanf("%d",&n);
 for (p = a; p < a + n; p++)scanf("%d", p);
 zbir=0;
 for(p=a;p<a+n;p++)zbir=zbir+(*p);
 printf("zbir=%d",zbir);

}

За рад са низовима могу се дефинисати функције за унос елемената низа, за приказивање елемената низа, за нека израчунавања над елементима низа. За пренос елемената низа у функцију и у програм низ се дефинише преко показивача, јер функција не формира локалну копију низа (као што је случај са појединачним подацима) већ се директно ради са елементима низа. Због тога се при дефинисању функције за низ користи само име низа, а не наводи се његова димензија, тако да заглавље функције за унос елемената целобројног низа има следећи изглед:

void unesi(int a[], int n)

1. Написати програм који израчунава средњу вредност оних елемената низа целих бројева који су дељиви са 3.

#include<stdio.h>
main() 
{
 int a[20],i,k,n;
 float s,as;
 printf("unesi n"); scanf("%d",&n);
 printf("unesi elemente niza");
 for(i=0;i<n;i++)scanf("%d",&a[i]);
 s=0;k=0; 
for(i=0;i<n;i++)if(a[i]%3==0){s=s+a[i];k++;}
 if(k!=0)
{
as=s/k;
 printf("srednja vrednost elemenata deljivih sa 3 je %8.2f",as);
}
 else printf("nema elemenata deljivih sa 3");
 }

2. Написати програм који обрће редослед елемената низа, односно мења места првог и последњег, другог и претпоследњег…

#include<stdio.h>
main()
 {
 float a[20],b;
 int n,i,j; 
printf("unesi n"); scanf("%d",&n);
 printf("unesi elemente niza");
 for(i=0;i<n;i++)scanf("%f",&a[i]); 
for(i=0,j=n-1;i<j;i++,j--){b=a[i];a[i]=a[j];a[j]=b;} 
printf("novodobijeni niz:\n"); 
for(i=0;i<n;i++)printf("%8.2f\t",a[i]);
 }

3. Написати програм који саставља нови низ који се састоји од елеманата унетог низа при чему су изостављени елементи једнаки задатој вредности k.

#include<stdio.h>
main() 
{
 int i,j,k,n,a[20];
 printf("unesi n"); scanf("%d",&n);
 printf("unesi elemente niza"); 
for(i=0;i<n;i++)scanf("%d",&a[i]); 
printf("unesi broj koji treba izbaciti iz niza");scanf("%d",&k); 
for(i=0,j=0;i<n;i++)if(a[i]!=k)a[j++]=a[i];
 n=j;
 printf("novodobijeni niz:\n"); 
for(i=0;i<n;i++)printf("%d\t",a[i]); 
}

 

4. Написати програм који у уређени низ бројева умеће нови елеменат, али тако да низ остане уређен. Задатак решити тако да се уносе елементи низа, након тога сортирати низ, и тек онда у сортирани низ уметнути нови елеменат.

#include<stdio.h>
main() 
{
 int i,n,b,a[20],j,pom;
 printf("unesi n"); scanf("%d",&n);
 printf("unesi elemente niza");
 for(i=0;i<n;i++)scanf("%d",&a[i]);
 /* sortiranje niza */ 
for(i=0;i<n-1;i++) 
for(j=i+1;j<n;j++) 
if(a[i]>a[j]) { pom=a[i]; a[i]=a[j]; a[j]=pom; }
 printf("unesi broj koji treba dodati u niz");scanf("%d",&b);
 /* umetanje elementa u niz */ 
for(i=n-1;i>=0&&a[i]>b;i--)a[i+1]=a[i];
 a[i+1]=b;
 n++;
 printf("novodobijeni niz:\n");
 for(i=0;i<n;i++)printf("%d\t",a[i]);
 }

5. Написати програм који разврстава низ бројева у два низа: у једном ће се наћи позитивни елементи низа, а другом негативни

#include<stdio.h>
main() 
{ 
int a[20],b[20],c[20],na,nb,nc,i; 
printf("unesi n"); scanf("%d",&na); 
printf("unesi elemente niza"); 
for(i=0;i<na;i++)scanf("%d",&a[i]); 
nb=0;nc=0; 
for(i=0;i<na;i++)
 if(a[i]<0)b[nb++]=a[i];
 else c[nc++]=a[i]; 
printf("niz negativnih brojeva:"); 
for(i=0;i<nb;i++)printf("%d\t",b[i]);
 printf("\n");
 printf("niz pozitivnih brojeva:");
 for(i=0;i<nc;i++)printf("%d\t",c[i]); 
}

6. Написати програм који спаја два сортирана низа при чему новодобијени низ такође треба да буде сортиран. Задатак решити тако да се уносе елементи оба низа, након тога сортирати низове, и тек онда спојити два сортирана низа како би се добио нови, сортирани низ.

#include<stdio.h>
main()
 { 
int a[20],b[20],c[40],na,nb,nc,ia,ib,ic,j,pom;
printf("unesi n za niz a"); scanf("%d",&na);
 printf("unesi elemente niza a"); 
for(ia=0;ia<na;ia++)scanf("%d",&a[ia]);
 /* sortiranje niza a */ 
for(ia=0;ia<na-1;ia++)
 for(j=ia+1;j<na;j++)
 if(a[ia]>a[j]) { pom=a[ia]; a[ia]=a[j]; a[j]=pom; }
 printf("sortirani niz:");
for(ia=0;ia<na;ia++)printf("%d\t",a[ia]);
 printf("\n");
 printf("unesi n za niz b"); scanf("%d",&nb);
 printf("unesi elemente niza b"); 
for(ib=0;ib<nb;ib++)scanf("%d",&b[ib]);
 /* sortiranje niza b */
 for(ib=0;ib<nb-1;ib++)
 for(j=ib+1;j<nb;j++)
 if(b[ib]>b[j]) { pom=b[ib]; b[ib]=b[j]; b[j]=pom; }
 printf("sortirani niz:");
for(ib=0;ib<nb;ib++)printf("%d\t",b[ib]); 
printf("\n");
 for(ia=0,ib=0,ic=0;ia<na&&ib<nb;ic++)
 if(a[ia]<b[ib])c[ic]=a[ia++];
 else c[ic]=b[ib++]; 
while(ia<na)c[ic++]=a[ia++]; 
while(ib<nb)c[ic++]=b[ib++];
 nc=ic; 
printf("novodobijeni niz:");
 for(ic=0;ic<nc;ic++)printf("%d\t",c[ic]);
 }
Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s