Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
zzzLoLzzz
2 / 2 / 1
Регистрация: 21.03.2015
Сообщений: 69
1

Размеры всех прямоугольников

20.11.2016, 17:14. Просмотров 832. Ответов 5
Метки нет (Все метки)

Найти размеры всех прямоугольников, площадь которых задано натуральным числом s и стороны которых выражены натуральными числами. При этом решения, которые получаются перестановкой размеров сторон считать совпадающими.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 17:14
Ответы с готовыми решениями:

Нахождение всех прямоугольников, площадь которых равна q
Дано натуральное число q. Требется написать программу для нахождения всех прямоугольников, площадь...

Найти размеры всех прямоугольников, удовлетворяющих условию
задачи на си: 1) найти размеры всех прямоугольников, площадь которых равна заданному натуральному...

Найти размеры всех прямоугольников, площадь которых равна натуральному числу S
Найти размеры всех прямоугольников площадь которых равна натуральному числу S, стороны которых...

Построение n прямоугольников, размеры, цвет и место расположения которых выбираются случайно
Составить программу построения n прямоугольников, размеры, цвет и место расположения которых...

Вывести на консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подкаталогах
Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех...

5
cybeuser
105 / 105 / 73
Регистрация: 18.11.2013
Сообщений: 304
Завершенные тесты: 1
20.11.2016, 18:15 2
Лучший ответ Сообщение было отмечено zzzLoLzzz как решение

Решение

zzzLoLzzz, подойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
 
using namespace std;
 
int main(){
    
    int s;
    int *M;// Множители без перевертышей
    int count = 0;// Число множителей с дубликатами
    cout << "s = ";
    cin >> s;
    
    if(s<=0)
    {
        cout << "Error s <= 0 \n";
        return 1;
    }
    
    // Вычисляем кол-во всех множителей с дубликатами
    for (int i = 1; i <= s; ++i)
        if (s%i == 0)
            count++;
    
    M = new int [count];// Выделяем память
    
    int count1 = count;// Дополнительный счетчик
    int k = 0;
    for (int i = 1; count1 > count/2; ++i)
        if (s%i == 0)
        {
            M[k] = i;
            M[k+1] = s/i;
            k = k + 2;
            count1--;
        }
        
    for(int i = 0; i < count; i = i + 2)
        cout << M[i] << " " << M[i+1] << endl;
    
    delete [] M;
    return 0;   
}
Добавлено через 10 минут
Прошу прощения, перепутал язык, вот на Си, убрал массив М, который наверно не нужен
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
 
int main()
{
    
    int s, i;
    int count = 0;// Число множителей с дубликатами
    printf("s = ");
    scanf("%d", &s);
    
    if(s<=0)
    {
        printf("Error s <= 0 \n");
        return 1;
    }
    
    // Вычисляем кол-во всех множителей с дубликатами
    for (i = 1; i <= s; ++i)
        if (s%i == 0)
            count++;
    
    int count1 = count;// Дополнительный счетчик
    int k = 0;
    for (i = 1; count1 > count/2; ++i)
        if (s%i == 0)
        {
            printf("%d %d\n",i,s/i);
            k = k + 2;
            count1--;
        }
        
    return 0;   
}
1
Байт
Эксперт C
22084 / 13766 / 2910
Регистрация: 24.12.2010
Сообщений: 29,390
20.11.2016, 18:26 3
cybeuser, Все намного проще
C
1
2
3
 for (i = 1; i *i<= s; ++i)
        if (s%i == 0)
            count++;
Вот и все, и боле ничего
2
cybeuser
105 / 105 / 73
Регистрация: 18.11.2013
Сообщений: 304
Завершенные тесты: 1
20.11.2016, 18:32 4
Байт,
Цитата Сообщение от zzzLoLzzz Посмотреть сообщение
При этом решения, которые получаются перестановкой размеров сторон считать совпадающими.
Тогда будут дубликаты которые как я понял не нужны, разве не так?

Понял, дубликатов не будет )
0
Байт
Эксперт C
22084 / 13766 / 2910
Регистрация: 24.12.2010
Сообщений: 29,390
20.11.2016, 18:36 5
Цитата Сообщение от cybeuser Посмотреть сообщение
Тогда будут дубликаты
Чего это вдруг?

Добавлено через 1 минуту
cybeuser, Да вы попробуйте "на руках" для s=12 и s = 16
0
cybeuser
105 / 105 / 73
Регистрация: 18.11.2013
Сообщений: 304
Завершенные тесты: 1
20.11.2016, 18:36 6
Байт, ошибся, не увидел i*i, вы полностью правы =)
0
20.11.2016, 18:36
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2016, 18:36

Размеры для всех устройств
для персональных компьютеров думаю средние размеры сайта должны быть 1024*786, а какие стандарты...

Нахождения площадей всех прямоугольников с заданным полупериметром P
составить программу на С++ нахождения площадей всех прямоугольников с заданным полупериметром...

Нахождение всех прямоугольников, площадь которых равна q
Дано натуральное число q. Требется написать программу для нахождения всех прямоугольников, площадь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.