Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
#1

Несложная программа - C++

04.11.2009, 16:05. Просмотров 1419. Ответов 22
Метки нет (Все метки)

Здравствуйте, мне нужно написать не сложную программу, но так как мои знания в области с++ на данный момент нулевые, хотел бы попросить у вас помощи. Программа такого типа: "Дано множество чисел, найти среди них число, имеющее максимальное количество делителей".
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2009, 16:05     Несложная программа
Посмотрите здесь:

Задачка несложная - C++
http://5.firepic.org/5/images/2013-11/04/8hpfr4qkym6l.png

Несложная задача,условие на фото - C++
Все на картинке

Несложная программа - Visual C++
Нужно 10 точек вывести на экран.Вроде несложная задачка но не получается.Помогите пжл.Условие на фото.

несложная программа - Free Pascal
Разобрать и отладить код программы, в которой: 1) с помощью типизированной константы вводятся значения элементов целочисленной матрицы M,...

несложная программа - C#
Помогите написать программу: Создать меню с командами Input, Work, Exit. При выборе команды Exit приложение завершает работу. При...

Несложная программа - C (СИ)
Задано целое n>0 и последовательность с n действительных чисел. Найти сумму положительных и сумму отрицательных чисел этой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denver
1610 / 279 / 3
Регистрация: 19.09.2009
Сообщений: 701
04.11.2009, 16:46     Несложная программа #2
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
#include <iostream>
 
using std::cout;
using std::cin;
    int main()
    {
        int N, Sum_Max, Sum, Ch;
        cout << "Vvedite chislo N: "; 
        cin >> N;
        Sum_Max = 1; /*Максимальная сумма делителей*/
        Ch = 1; /*Число с максимальной суммой делителей*/
        for( int i = 2; i<= N; i++) /*Это цикл по количеству чисел*/        
        {
            Sum = 0;
            for (int k= 1; k<= i/2 + 1; k++) /*В этом цикле находим сумму делителей*/
                if(i % k == 0) /*Если i нацело делится на k, то k - делитель i*/
                    Sum += k;
            Sum += i;
            if (Sum > Sum_Max) 
            {
                Sum_Max = Sum; 
                Ch = i; 
            }
        }
        cout << "Max summu delitelei " << Sum_Max << " imeet chislo " << Ch;
    system ("pause");
    return 0;
    }
sheka
Босс
161 / 127 / 7
Регистрация: 03.06.2009
Сообщений: 751
04.11.2009, 16:47     Несложная программа #3
Цитата Сообщение от VLAD1M1R Посмотреть сообщение
мне нужно ..., хотел бы попросить у вас помощи
)))
думаю, здесь множество - имеется ввиду массив.
проверка делителей - простой перебор до корня квадратного.
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
04.11.2009, 16:56  [ТС]     Несложная программа #4
извиняюсь, но я ошибся в описании задания... Я имел ввиду, что дается определенное количество чисел, записанных в .txt и среди них нужно найти число, имеющее наибольшее кол-во делителей...
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
04.11.2009, 21:15     Несложная программа #5
VLAD1M1R,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <fstream>
int main()
{
    const int n = 5 ; 
    int a[n];
    size_t i = 0,k;
    std::ifstream in("d:\\ww.txt");
    while (in>>k)
    {
        a[i]=k;
        i++;
    }
    for (size_t i = 0 ; i < n ; i++)
        std::cout<<a[i]<<' ';
    return 0;
}
как пример в файле пять чисел записываешь их в массив делаешь потом тоже что тебе и предложили
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
04.11.2009, 23:24  [ТС]     Несложная программа #6
большое спасибо! выручили =)
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
19.11.2009, 21:15  [ТС]     Несложная программа #7
Цитата Сообщение от Андрейка Посмотреть сообщение
VLAD1M1R,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <fstream>
int main()
{
    const int n = 5 ; 
    int a[n];
    size_t i = 0,k;
    std::ifstream in("d:\\ww.txt");
    while (in>>k)
    {
        a[i]=k;
        i++;
    }
    for (size_t i = 0 ; i < n ; i++)
        std::cout<<a[i]<<' ';
    return 0;
}
как пример в файле пять чисел записываешь их в массив делаешь потом тоже что тебе и предложили
Я не совсем понял, как будет выглядеть программа в итоге... Я прописал, то что ты мне посоветовал, но она тупо выводит на экран эти 5 чисел введенные в txt. Объясните что в общем нужно прописать, чтобы программа находила число с макс. кол-вом делителей... Я просто не догоняю чутка))
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.11.2009, 21:22     Несложная программа #8
VLAD1M1R, в общем у нас же числа в файле? вот мой код их считывает в массив то есть мы считали все числа из файла и загнали их в массив a, ну а выше тебе код писали неопсредственно по твоей задаче
Sasha_Smirnov
5401 / 1244 / 132
Регистрация: 08.02.2009
Сообщений: 3,881
Записей в блоге: 29
19.11.2009, 21:28     Несложная программа #9
Андрейка, не мог бы ты пристегнуть сюда исполняемый файл?

Очень хочу испытать, на скорость (в зависимости от чисел), и сравнить затем со своей прогой.
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
19.11.2009, 22:26  [ТС]     Несложная программа #10
Андрейка, как я понял, сначала нужно прописать код, который ты скинул, а затем уже тот что выше, да?
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
20.11.2009, 11:16  [ТС]     Несложная программа #11
Был бы благодарен, если б написали программу целиком.. не могу догнать что там к чему =)
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
20.11.2009, 15:01     Несложная программа #12
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
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
main()
{
      srand(time(NULL));
      int i,n,j,k=0,maxi=0,max=0;
      printf("Vvedite kol-vo elementov massiva\n");
      scanf("%d",&n);
      int a[n];
      for(i=0;i<n;i++) {
                       a[i]=rand()%100;
                       printf("%d ",a[i]);
                       for (j=2;j<a[i];j++) if(a[i]%j==0) k+=1;//edenica i samo 4islo za deliteli ne s4iteyutsya
                       if (k>max) {max=k; maxi=i;}
                       k=0;
                       
                       }
      printf("\n");
      printf("Maksimalnoe kol-vo delitelei u %d elementa massiva ravnogo %d\n4islo delitelei ravno %d\n",maxi+1,a[maxi],max);
      
    system("PAUSE");
    
    
    
}
это на си. и без маллока.

Добавлено через 2 минуты
если 1 и само число тоже нужно считать делителями, то 15 строку программы надо переписать так
C
1
for (j=1;j<=a[i];j++) if(a[i]%j==0) k+=1;
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
27.11.2009, 12:43  [ТС]     Несложная программа #13
Мне дано множество чисел (записанные в txt) и СРЕДИ НИХ нужно найти такое число, которое имеет максимальное кол-во делителей. То что вы мне предложили мне не подходит.. Андрей показал как ввести числа в массив, а вот что дальше делать я не пойму.. Помогите полностью дописать программу...
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.11.2009, 13:00     Несложная программа #14
VLAD1M1R, Уточните на примере:
Вот два числа : 16 и 6
16=2*2*2*2
6=2*3
У какого числа больше делителей в этом примере?
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
27.11.2009, 13:05  [ТС]     Несложная программа #15
у числа 16
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.11.2009, 13:31     Несложная программа #16
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
43
44
45
46
#include <iostream.h>
#include <fstream.h>
#include <process.h>
#include <conio.h>
int main()
{
    int n, *mas, i=0, j, j1, count1, count2=0, index, a;
    bool fl;
    ifstream input("input.txt");
    if(!input)
        exit(1);
    input>>n;
    mas=new int[n];
    while(!input.eof())
    {
        input>>mas[i];
        i++;
    }
    for(i=0; i<n; i++)
    {       
        count1=0;
        a=mas[i];
        for(j=2; j<a/2; j++)
        {
            fl=true;
            for(j1=2; j1<j; j1++)
                if(j%j1==0)
                    fl=false;
            if(fl && a%j==0)
            {
                a/=j;
                count1++;
                j--;
            }
        }
        if(count1>count2)
        {
            count2=count1;
            index=i;
        }
    }
    cout<<"Maximum delitelei imeet chislo "<<mas[index]<<endl;
    input.close();
  getch();
  return 0;
}
Только в файле input.txt, откуда считываются числа, сначало должно быть число - количество чисел, которые будут проверяться, а затем сами числа записаны
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
10.12.2009, 00:40  [ТС]     Несложная программа #17
спасибо за программу... только одно но... так как эти задания нам дали на раннем этапе изучения с++ , то я думаю преподаватель завалит вопросами, скажет объяснить о том или ином символе/обозначении. Хотел бы узнать, возможно ли написать эту программу с базовыми (начальными) знаниями, без "сложных" операций?)) Или это и так самый простой способ???...
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.12.2009, 09:12     Несложная программа #18
Тогда давайте я дам коментарии по основной части кода:
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
int main()
{
        int n, *mas, i=0, j, j1, count1, count2=0, index, a; 
        bool fl; // переменная типа bool принимает только два значения: false и true
        ifstream input("input.txt"); // открываем файл (в котором записано множество чисел)
        if(!input) // если не открыли
                exit(1); // то выходим из программы
        input>>n; // считываем первое значение из файла в переменную n (я писал ранее, что это число должно быть количеством множества чисел)
        mas=new int[n]; // создаем динамически массив для хранения переменных типа int, размером n
        while(!input.eof()) // пока файл не закончится
        {
                input>>mas[i]; // считываем очередное число в массив
                i++; // увеличиваем индекс
        }
        for(i=0; i<n; i++) // перебираем i 
        {               
                count1=0; 
                a=mas[i]; // значение очередного числа из массива присваиваем переменной a
                for(j=2; j<a/2; j++) // перебираем j до значения a/2
                {
                        fl=true;
                        for(j1=2; j1<j; j1++) // перебираем j1 
                                if(j%j1==0) // если j делится на j1 без остатка (а это значит что j не простое число)
                                        fl=false;
                        if(fl && a%j==0) // если fl осталось со значением true (это в том случае если j простое число) и a делится на j без остатка
                        {
                                a/=j; // a делим на j
                                count1++; // переменную count1 увеличиваем на 1 (в ней хранится значение количества делителей числа a)
                                j--; // уменьшаем на единицу, потому что таких делителей, как предыдущий может быть несколько
                        }
                }
                if(count1>count2) // если только что полученное значение кол-ва делителей (count1) больше, чем хранится в переменной count2
                {
                        count2=count1; 
                        index=i; // в переменную index записываем значение i (на текущий момент из всех проверенных ранее чисел, в mas[index] хранится число имееющее самое большое кол-во делителей)
                }
        }
        cout<<"Maximum delitelei imeet chislo "<<mas[index]<<endl; // выводим на экран
        input.close();// закрываем файл
  getch(); // задержка на экране результата
  return 0;
}
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
10.12.2009, 17:18  [ТС]     Несложная программа #19
Большое спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2009, 11:58     Несложная программа
Еще ссылки по теме:

Несложная программа. Заплачу. - Delphi
Доброго времени суток. Очень нужна Ваша помощь. Времени в обрез, а сдавать работу надо. Вот тут лежит описание программы:...


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

Или воспользуйтесь поиском по форуму:
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
11.12.2009, 11:58  [ТС]     Несложная программа #20
короче я прописал все как ты сказал, но у меня 1 ошибка вылетает, сам разобраться не смог.. вот лог ошибки:
1>------ Build started: Project: chislo s max summoy delit, Configuration: Debug Win32 ------
1>Compiling...
1>chislo s max summoy delit.cpp
1>e:\оитзи(1 курс)2009\vlad1m1r\chislo s max summoy delit\chislo s max summoy delit\chislo s max summoy delit.cpp(52) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
1>Build log was saved at "file://e:\ОиТЗИ(1 курс)2009\VLAD1M1R\chislo s max summoy delit\chislo s max summoy delit\Debug\BuildLog.htm"
1>chislo s max summoy delit - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Yandex
Объявления
11.12.2009, 11:58     Несложная программа
Ответ Создать тему
Опции темы

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