Здравствуйте, помогите мне, пожалуйста. Сомневаюсь в своих задачах и хочу задать вопросы по их решению.
Задача на одномерные массивы:
Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в диапазоне от -35 до 50. Вывести в порядке неубывания (возрастания) те положительные элементы этого массива, которые меньше заданного числа Х (0<X<50).
Код:
#pragma argsused
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[])
{ float x[100]={0},sw,a;
char j=0,i=0,min;
randomize();
for(i=0;i<100;i++)
x[i]=random(85)-35+random(100)/100.;
for(i=0;i<98;i++)
{
min=i;
for(j=i+1;j<99;j++)
if (x[min]>x[j]) min=j;
sw=x[i];
x[i]=x[min];
x[min]=sw;
}
printf("Vvedite X:"); scanf("%f",&a);
i=0;
while (x[i]<=a)
{
printf("%f\n",x[i]);
i++;
};
getchar(); getchar();
return 0;
Двумерные массивы:
Дан двумерный массив из 5 строк и 6 столбцов. Определить
для каждого четного столбца максимальный элемент. Найти произведение этих элементов.
Не могу понять как приписать четность столбца.
Код:
#pragma argsused
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{ int a[5][7]={0},i,j;
float s=1;
randomize();
for (i = 0; i < 5; i++) {
for (j = 0; j < 6; j++) {
a[i][j]=random(100);
printf("%4d",a[i][j]);
if (a[i][j]>a[i][6]) a[i][6]=a[i][j];
} printf(" max=%d\n",a[i][6]); s=s*a[i][6];
}
printf(" proizvedenie = %f",s);
getchar();getchar();
return 0;
И последняя задачка на функции:
Дан одномерный массив из 100 случайных целых чисел в диапазоне от 5 до 25 включительно. Вывести все числа, которые максимально часто встречаются в массиве и количество их повторений. Подсчет количества повторений для числа оформить в виде функции.
Она у меня получилась нерациональной. Нужно для идеала упростить вот этот момент, выделенный синим.
Код:
#pragma argsused
#include <stdio.h>
#include <stdlib.h>
#include <vcl.h>
int ter(int t,int *y)
{
int r=0;
for (int i = 0; i < 100; i++)
{
if (y[i]==t+5) r++;
}
return r;
}
int main(int argc, char* argv[])
{int a[100],i,flag=0;
int c[21],m,max=0,sw;
randomize();
for (i = 0; i < 100; i++)
{
a[i]=random(21)+5;
if (i%2==0) printf("%3d\n",a[i]);
else printf("%3d",a[i]);
}
printf("\n");
for (i=0; i < 21; i++)
{
c[i]=ter(i,a);
if (c[i]>max) max=c[i];
printf("4uCjlo %d BcTpe4aeTc9| %d\n",i+5,c[i]);
}
for (m = 0; m < 21; m++)
if (c[m]==max) printf("max Kojlu4ecTBo %d - elementov =%d\n",m+5,c[m]);
getchar();
return 0;
Надеюсь на понимание и вашу помощь.