лабороторка

  • Автор темы gggeforse
  • Дата начала
G

gggeforse

Гость
#1
помогите решить)))) :) XD

1)Дан одномерный массив из N натуральных чисел не больших 10. Найти наибольший участок массива, состоящий из одинаковых чисел. Вывести длину этого участка.
2) На каждом этаже трехэтажного дома жилых 6 комнат, каждая из которых имеет форму прямоугольника. Длина и ширина каждой комнаты известны. Определить, какой из этажей дома имеет минимальную жилую площадь. Если таких несколько, то вывести хотя бы одного из них.(двумерный массив)
3) Вывести анкетные данные студентов, имеющих по предметам физика и химия оценку "хорошо" или "отлично"(задача на структуры)

4) Дан одномерный массив из 150 случайных целых чисел в диапазоне от 14 до 37 включительно. Вывести те числа, которые наиболее редко встречаются в массиве и количество их повторений. Подсчет количества повторений для числа оформить в виде функций (задача на функции)
 
I

ierofant

Гость
#2
1)
C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

static const int N = 50;

int main ()
{
srand (time (NULL));

int mas [N];
for (int i = 0; i < N; i++) mas [i] = rand () % 10 + 1;

printf ("Массив:\n");
for (int i = 0; i < N; i++) printf ("%i ", mas [i]);

int len = 1, len2 = 1;
for (int i = 1; i < N; i++)
{
if (mas [i - 1] == mas [i]) len2++;
else
{
if (len2 > len) len = len2;
len2 = 1;
}
}
printf ("\nДлина участка с наибольшим числом повторений: %i\n", len);

return 0;
}
 
G

gggeforse

Гость
#3
спасибо

а почему в массиве иногда попадают 3 числа а она выдает все равно длину 2?)
а как сделать чтобы она еще писала числа сумму которых находит?
 
I

ierofant

Гость
#4
Это очень странно, у меня при трёх "три" пишет, а при четырёх "четыре" и так далее...
 
I

ierofant

Гость
#5
Хотя, если как следует поразмыслить, действительно в определённой ситуации такое может произойти. Поэтому я исправил код, и добавил то, что вы спрашивали:
C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

static const int N = 50;

int main ()
{
srand (time (NULL));

int mas [N];
for (int i = 0; i < N; i++) mas [i] = rand () % 10 + 1;

printf ("Массив:\n");
for (int i = 0; i < N; i++) printf ("%i ", mas [i]);

int len = 1, len2 = 1, x = mas [0];
for (int i = 1; i < N; i++)
{
if (mas [i - 1] == mas [i])
{
len2++;
if (len2 > len)
{
len = len2;
x = mas [i];
}
}
else len2 = 1;
}
printf ("\nДлина участка с наибольшим числом повторений: %i\n", len);
printf ("Эти числа: %i\n", x);

return 0;
}
 
R

Rififi

Гость
#6
gggeforse

4) Дан одномерный массив из 150 случайных целых чисел в диапазоне от 14 до 37 включительно. Вывести те числа, которые наиболее редко встречаются в массиве и количество их повторений. Подсчет количества повторений для числа оформить в виде функций (задача на функции)


C++:
#include <stdio.h>
#include <time.h>

#include <locale>
#include <iostream>

size_t count(int val, int* arr, size_t ArraySize)
{
size_t counter = 0;
for (size_t i=0; i<ArraySize; i++)
if (arr[i] == val)
counter++;

return counter;
}

int main()
{
setlocale(LC_ALL, "");

const size_t ArraySize = 150;
int arr[ArraySize] = {0};

srand(time(NULL));

for (size_t i=0; i<ArraySize; i++)
arr[i] = rand() % 23 + 14;

for (size_t i=0;; i++)
{
if (i == 14)
i = 38;

std::cout << "Число " << i << " встречается " << count(i, arr, ArraySize) << " раз" << std::endl;
}

return 0;
}
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#8
Что-то последний пример мне покоя не дает. Особенно последний цикл...

Добавлено: Rififi
Ты уверен что это правильное решение?
 
G

gggeforse

Гость
#10
4)задача
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{ int a[3][7],i,j;
randomize();
for (i = 0; i < 3; i++) {
printf("%d-y etazh",i+1);
for (j = 0; j < 6; j++) {
a[j]=random(10)+5; //от 5 до 15
a[6]=a[j]; printf("%5d",a[j]);
}
printf(" Sum=%d\n",a[1]+a[2]+a[3]+a[4]+a[5]+a[6]);
}

j;
for (i = 0; i < 2; i++) {
if (a[6]<a[j]) j=i;
}
printf("etag s min ploshadiu - %d",j+1);
getchar();getchar();
return 0;
}
//---------------------------------------------------------------------------

Она неправильно считает Sum= в каждй комнате и седовательно комнату с мин площадью не находит правильно)