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

Вывод последовательности, определяющий, являются ли простыми/совершенными соответствующие элементы введённой последовательности - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема ф-ии сравнения элементов списка http://www.cyberforum.ru/cpp-beginners/thread378649.html
День добрый, вот есть такая загогулина (вроде бы и простая, но я уже всю голову себе разнес): Есть список, каждый элемент из которого: массив букв (т.е. слово). Необходимо проверить список на одинаковые слова, подсчитав их кол-во. Решил, что будет достаточно такого простенького кода, но, как оказалось, нет: void mission() { int k=0; //char end=0, spec; node *temp, *temp1; temp = head; ...
C++ Коши пожалуйста помогите составить программу на visual studio 2008. Численное решение задачи Коши для обыкновенных дифференциальных уравнений. очень прошу помогите!!! http://www.cyberforum.ru/cpp-beginners/thread378641.html
Помогите решить задачу сломал голову не знаю как решить. C++
1)Определить максимальный элемент в каждой строке матрицы и заменить все элементы 2 столбца на этот максимальный элемент. 2)Определить минимальный элемент в матрице и заменить каждый 0 элемент на минимальный. 3)Упорядочить элементы в 1 строке матрицы. вот сама задача. #include<iostream.h> // iostream #include<math.h> // math
C++ Опять ошибка в коде =(
/* * code.cpp * * Created on: 06.11.2011 * Author: Sensei */ #include <iostream> using std::cout; using std::endl;
C++ Обмен данными межды формой и диалогом http://www.cyberforum.ru/cpp-beginners/thread378616.html
как это можно сделать с помощью коннектов? Я хочу чтобы при нажатии на кнопку ОК у диалога данные передавались в форму. что нужно писать в SIGNAL и SLOT у диалога и у формы? Добавлено через 4 минуты ой, в раздел Qt хотел написать
C++ Книга после Бьярне Страуструп а что можно почитать после Программирование: принципы и практика использования C++ , исправленное издание, Бьярне Страуструп подробнее

Показать сообщение отдельно
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
06.11.2011, 16:03  [ТС]     Вывод последовательности, определяющий, являются ли простыми/совершенными соответствующие элементы введённой последовательности
Вот, что у меня получилось:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <locale.h>
const int N=100;
void inMas1(int &n, int a[N])
{
    //Ввод размерности массива
    printf ("Введите размерность массива n=");
    scanf ("%d", &n);
    //Проверка на корректность введённой размерности массива
    if (n<=0)
    {
        printf ("Некорректный ввод \n");
    }
    for (int i=0; i<n; i++)
    {
        //Ввод a[i]
        printf ("a[%d]=", i);
        scanf ("%d", &a[i]);
    }
}
int ProstSoversh (int n, int a[])
{
    bool flagNoSoversh=true;
    bool flagNoProst=true;
    for(int i=0; i<n; i++)
    {
        for(int j=2; j<(n/2); j++)
        {
            if(a[i]%j==0)
            {
                for (int g=0; g<n; g++)
                {
                    if ((a[g]==6)||(a[g]==28)||(a[g]==496)||(a[g]==8128)||(a[g]==33550336)||(a[g]==8589869056)||(a[g]==137438691328))
                    {
                        //Возвращаем 2, флаг, сигнализирующий ,что число не совершенное, опускаем (оно совершенное)
                        flagNoSoversh=false;
                        return 2;
                        break;
                    }
                }
            
            }
            else
            {
                //Возвращаем 1, флаг, сигнализирующий, что число не простое (составное), опускаем (оно простое)
                flagNoProst=false;
                return 1;
                break;
            }
        }
    }
    if (flagNoSoversh&&flagNoProst)
    {
        //Если число не совершенное и не составное - возвращаем 0
        return 0;
    }
}
void outMas(int n, int a[])
{
    //Цикл вывода массива
    for (int k=0; k<n; k++)
    {
        //Во время второй итерации цикла a почему-то меняется на результат, полученный в ProstSoversh и в дальнейшем происходит вывод неверных результатов отработки функции ProstSoversh
        a[k]=ProstSoversh(n, a);
        printf ("%d", a[k]);
    }
}
void main()
{
    setlocale (LC_ALL, "russian");
     //определение переменных
    int n, a[N], b[N];
    //ввод исходных данных
    inMas1(n, a);
    //вывод результата
    if (n>0)
    {
        outMas(n, a);
    }
}
Единственная проблема описана в строке с номером 63. Цитирую: Во время второй итерации цикла a почему-то меняется на результат, полученный в ProstSoversh и в дальнейшем происходит вывод неверных результатов отработки функции ProstSoversh

Убедительная просьба - не писать код заново. Моя просьба заключается лишь в объяснении мне, почему такое происходит и как это исправить
 
Текущее время: 08:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru