• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

лабороторка

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

gggeforse

помогите решить)))) :) XD

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

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

ierofant

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 числа а она выдает все равно длину 2?)
а как сделать чтобы она еще писала числа сумму которых находит?
 
I

ierofant

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

ierofant

Хотя, если как следует поразмыслить, действительно в определённой ситуации такое может произойти. Поэтому я исправил код, и добавил то, что вы спрашивали:
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

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;
}
 
L

lazybiz

Что-то последний пример мне покоя не дает. Особенно последний цикл...

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

gggeforse

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= в каждй комнате и седовательно комнату с мин площадью не находит правильно)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!