Witam, mam problem z dwoma następującymi programami.
1)Muszę wyzerować elementy tablicy od jej początku do jej połowy, jeśli jej ostatni element jest parzysty, lub od połowy do jej końca jeśli ostatni element jest nieparzysty(w poleceniu zadania musiałem jeszcze wykorzystać do tego programu odpowiednie funkcje takie jak drukuj, losuj itp):
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
void losuj(unsigned int tablica[], int A);
void drukuj(unsigned int t[],int B);
void zeruj(unsigned int *p1,unsigned int *p2);
int main()
{
int N=12;
unsigned int losowa[12]={};
losuj(losowa, N);
int i;
drukuj(losowa, N);
printf("\n");
if(losowa[N-1]%2==0)
zeruj(losowa, losowa+(N/2-1));
else
zeruj(losowa+(N/2-1), losowa+(N-1));
drukuj(losowa, N);
system("pause");
return 0;
}
void losuj(unsigned int tablica[], int A)
{
int i;
srand(time(0));
for(i=0;i<A;i++)
*(tablica+i)= -10+rand()%20;
}
void drukuj(unsigned int t[],int B)
{
int i;
for(i=0;i<B;i++)
printf("%d ",t[i]);
}
void zeruj(unsigned int *p1, unsigned int *p2)
{
int i;
for(i=0; i<*p2; i++)
*(p1+i)=*(p1+i)*0;
}
2)Muszę, obliczyć ile jest elementów w danej tablicy spełniających warunek taki, że
-pomiędzy argumentem pierwszym, a drugim funkcji "licz" jest element równy argumentowi trzeciemu tej funkcji:
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
int licz(double *p1, double *p2, double x);
int main()
{
double a[]={8.0, 2.0, 1.0, 6.0, 2.0, 7.0, 5.0, 2.0, 9.0};
int n= licz(a+2, a+7, 2.0);
printf("%d\n", n);
system("pause");
return 0;
}
int licz(double *p1, double *p2, double x)
{
int i, licznik=0;
for(i=0;i<*p2;i++)
{
if(*(p1+i)==x)
licznik++;
}
return licznik;
}
Proszę o wyrozumiałość i porady ;)
Pozdrawiam