лабороторка

Тема в разделе "C/C++/C#", создана пользователем gggeforse, 12 янв 2011.

  1. gggeforse

    gggeforse Гость

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

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

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

    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;
    }
     
  3. gggeforse

    gggeforse Гость

    спасибо

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

    ierofant Гость

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

    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;
    }
     
  6. Rififi

    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;
    }
     
  7. gggeforse

    gggeforse Гость

    спасиб))
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Что-то последний пример мне покоя не дает. Особенно последний цикл...

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

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Да. И зачем ты инициализируешь массив? Мне просто очень интересно.
     
  10. gggeforse

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

Поделиться этой страницей