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

Напечатать элементы индекса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана целочисленная квадратная матрица http://www.cyberforum.ru/cpp-beginners/thread991785.html
Дана целочисленная квадратная матрица. Найдите наибольший элемент вспомогательной диагонали. Выведите на экран исходный и преобразованный массив. Помогите с программным кодом!!!
C++ Тема: списки Создать список, содержащий целые числа. Перенести последний элемент списка в его начало. После завершения работы со списком освободить занимаемую им динамическую память. http://www.cyberforum.ru/cpp-beginners/thread991784.html
Вводится массив из 10-ти элементов C++
Вводится массив из 10-ти элементов. Вывести эти элементы на экран. Найдите минимальный и максимальный элементы массива и поменяйте их местами. Выведите адрес начала массива, адреса и значения всех минимальных и максимальных элементов, результирующий массив.
Проверьте, на наличие ошибок C++
Накалякал код, по методичке, компилятора на компе нет. Проверьте, пожалуйста, скомпилируется ли код и будет ли он соответствовать заданию: "Написать программу подсчета суммы 10 чисел, вводимых с клавиатуры"? #include <iostream.h> main() { int x, i=1; float sum=0; do { cin>>x; sum=sum+x;
C++ Как соединить Code::Bloks редактор и компилятор DevC++ 4.9.9.2 http://www.cyberforum.ru/cpp-beginners/thread991744.html
По сответу знаюших людей узнал кое что про Code::Bloks. Я скачал codeblocks-12.11-setup.exe и у меня стоит компилятор DevC++ 4.9.9.2, как их соединить ? И нада ли вообше соединять ведь у DevC++ есть своя IDE, просто говорят что DevC++ не разрабатывается,
C++ как подружить libxml2 и html Установлена libxml2 из репозитория wheezy. Вот этот код собирается нормально. #include <iostream> #include <libxml2/libxml/parser.h> #include <libxml2/libxml/tree.h> int main(int argc, char **argv) { подробнее

Показать сообщение отдельно
Zig_Stas
8 / 8 / 1
Регистрация: 26.10.2013
Сообщений: 55
29.10.2013, 20:12     Напечатать элементы индекса
Цитата Сообщение от Владиславик Посмотреть сообщение
DmitryM5, Zig_Stas, хорошо, обсудим тогда в этой теме. Вообщем сначала задача.
[Написать программу, определяющую сумму n-значных чисел, содержащих только нечетные цифры. Определить так же, сколько четных цифр в найденной сумме. ].
Сам код
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <ctime>//Нужно для генерации n - значных чисел
using namespace std;
 
int getRandVal(int n);
 
 
 
int * splitValue(int val, int &n, bool bGetArray);
 
bool isValueConsistOnlyNoOddNumbers(int val);
 
int main()
{
    int i;
    int m;
    int n;
    int sum;
    int cnt;
   
    int *arr = NULL;//Указатель на массив с n-значн числами
    while(true)
    {
        system("cls");
        cout<<"Enter number values in array : ";cin>>m;
        cout<<"Enter n digits in values     : ";cin>>n;
        arr = new int[m];
        cout<<"Generated array of values\n";
        for(i = 0; i < m; i++)
            cout<<(arr[i] = getRandVal(n))<<endl;
        cout<<"Values in array with only odd numbers\n";
        for(sum = (cnt = (i = 0)); i < m; i++)
        {
            if(isValueConsistOnlyNoOddNumbers(arr[i]))
            {
                cout<<arr[i]<<endl;
                sum = sum + arr[i];
                cnt = cnt + 1;
            }
        }
        delete [] arr;
        if(!cnt)
            cout<<"array not contain values which consist"
                <<" only from no-odd numbers\n";
        else
        {
            cout<<"sum of values which consist"
                <<" only from no-odd numbers is "
                <<sum<<endl;
          
            arr = splitValue(sum, n, true);
            for(cnt = (i = 0); i < n; i++)
            {
                if(!isValueConsistOnlyNoOddNumbers(arr[i]))
                    cnt = cnt + 1;
            }
            cout<<"given sum contains from "<<cnt<<" odditive numbers\n";
            delete [] arr;
        }
        system("pause");
    }
    return 0;
}
 
int getRandVal(int n)
{
    int val = 0;
    int nDigits = 0;
    
    while(nDigits != n)
        splitValue((val = rand()%RAND_MAX), nDigits, false);
    return val;
}
 
int * splitValue(int val, int &n, bool bGetArray)
{
    int * arr = NULL;//Указатель на массив с разрядами числа val
    if(val < 0)
        val *= -1;//Знак числа нам не нужен
   
    int i, buf = val;
    for(n = 0; 0 < buf; n++)
        buf = buf / 10;
   
    if(bGetArray)
    {
        arr = new int[n];
        for(i = 0; 0 < val; i++)
        {
           
            arr[i] = val % 10;
            val    = val / 10;
        }
    }
Конечно же код не полностью мой, но есть исправления.
По сути этот код подходит по условию задачи.
Но, преподаватель придрался к следующему:
-Код не правильно подсчитывает сумму. Т.е если она считает сумму двух нечетных чисел, то должна выводить количество четных цифр в найденной сумме.
-Так же, она сказала, что массивы тут совсем не нужны. Получается, по теории, надо вводить следующую последовательность действий:
1. Если я ввожу цифру 2, то считаются цифры от 10 до 99, т.е двузначные.
2. Если я ввожу цифру 3, то считаются цифры от 100 до 999, т.е трехзначные и т.д (Так же с еденичкой)
Эта программа считает немного по другому..
Помогите переработать код, что бы программа выполняла условие задачи.
Насчет массивов она абсолютно права. У Вас подсчет суммы нечетных должен идти просто по циклу, где начало цикла есть pow(10,n-1), а конец pow(10,n)-1. Т.е. если нужны 3-х значные, то компилятор 10*10=100 - начало, а 10*10*10-1=999 - конец цикла.
 
Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru