Показать сообщение отдельно
Старый 12.01.2011, 11:07   #1 (permalink)
Jenkins
Новичок
 
Регистрация: 25.12.2010
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию C# массивы и функции

Здравствуйте, помогите мне, пожалуйста. Сомневаюсь в своих задачах и хочу задать вопросы по их решению.

Задача на одномерные массивы:
Дан одномерный массив из 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;
Надеюсь на понимание и вашу помощь.
Jenkins вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070