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

Как обойтись без указателей и указателей на указатель? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выполнить свертку байтов в диапазоне http://www.cyberforum.ru/cpp-beginners/thread1023427.html
Добрый день, я очень-очень плохой студент и очень-очень не понимаю программирование, а хотелось бы. Читаю разные самоучители и прочее.. Но данные задания Написать программу, которая получает случайное целое типа int, выводит его двоичное представление на экран, выполняет преобразование в соответствии с вариантом (см. ниже), затем выводит на экран двоичное представление результата...
C++ Нужна рабочая функция быстрого/прямого и обратного преобразования Фурье Нужна рабочая функция быстрого/прямого и обратного преобразования Фурье. В гугле много всего, рабочего не нашел. http://www.cyberforum.ru/cpp-beginners/thread1023426.html
C++ Нужна программа - Найти кратчайший путь между двумя заданными вершинами графа
Ребят, у кого есть программа на С++ или текст программы: Найти кратчайший путь между двумя заданными вершинами графа. Желательно с графикой.
C++ Как реализовать многоуровневое меню?
Допустим есть в главном меню пункт 1, пункт 2,пункт 3. При переходе по любому из пунктов программа что то выполняет. Для каждого пункта есть своя функция. Но мне нужно перейти обратно в главное меню. Что делать? GOTO ругают за превращение программы в спагетти, а если в функции одного из пунктов для возвращения назад вызывать функцию главного меню выходит то же самое. Как реализуются такие задачи?
C++ Ошибка в классе IntegerSet http://www.cyberforum.ru/cpp-beginners/thread1023397.html
IntegerSet.h: #pragma once //#ifndef _INTEGERSET_H #define _INTEGERSET_H class IntegerSet { public: IntegerSet(); IntegerSet(int); ~IntegerSet();
C++ можно ли потоку для чтения передать имеющуюся строку, что бы из нее выдрать числа при чтении А можно ли потоку для чтения передать имеющуюся строку, что бы из нее выдрать числа при чтении? подробнее

Показать сообщение отдельно
Vensus
 Аватар для Vensus
41 / 23 / 9
Регистрация: 29.11.2013
Сообщений: 74
29.11.2013, 23:23     Как обойтись без указателей и указателей на указатель?
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
 
void fill_matrix(int** &matrix, int lines, int signs)   //функция заполняет матрицу случайными значениями от 0 до 10
{
    
    for(int i=0; i < lines; i++)
    {
        for (int j=0; j < signs; j++)
        {
            matrix[i][j] = rand()%11;
            cout << matrix[i][j] << " ";
        }
    cout << '\n';
    }
}
 
int arithmetic_mean(int **&matrix, int lines)   //функция считает среднее арифметическое первого столбца
{
    int  sum = 0;   //переменная хранящая сумму всех элементов первого столбца
    for (int i = 0; i < lines; i++)     //цикл считает сумму всех элементов первого столбца
    {
     sum += matrix[i][0];
    }
    cout << "Среднее арифметическое первого столбца: " << sum/lines << '\n';    //выводим среднее арифметическое 
    return sum/lines;   //возвращаем среднее арифметическое
}
 
void sum_elements(int** &matrix, int lines, int signs, int average)     //функция считает элементы матрицы, которые больше среднего арифметического первого столбца
{
    int sum = 0;    //sum - хранит число таких элементов
    for(int i = 0; i < lines; i++)                              //перебераем
    {                                                           //все числа
        for (int j = 0; j < signs; j++)                         //матрицы
        {                                                       //и сравниваем их
            if (matrix[i][j] > average) sum++;                  //записываем результат в переменную sum
        }
    }
    cout << "Количество элементов больше среднего арифметического первого столбца: " << sum << '\n'; //вывод суммы всех таких элементов
}
 
int main()
{
    locale::global(locale("Russian"));  //добавляем русский язык
    int MATRIX_LINES, MATRIX_SIGNS;     //MATRIX_LINES - число строк, MATRIX_SIGNS - число символов в каждой строке
    cout<<"Введите число строк: ";      //P.S. Важно (!) давать переменным, константам, массивам и т.п. "значащие" имена
    cin >> MATRIX_LINES;                
    cout<<"Введите количество символов в каждой строке: ";
    cin>> MATRIX_SIGNS;
 
    int **matrix = new(nothrow) int *[MATRIX_LINES];        //выделяем память
    for (int i =0 ; i < MATRIX_LINES; i++)                  //для нашей матрицы
    matrix[i] = new(nothrow) int [MATRIX_SIGNS];            //размера MATRIX_LINES(x)MATRIX_SIGNS
 
    fill_matrix(matrix, MATRIX_LINES, MATRIX_SIGNS);        //заполняем матрицу случайными числами
    int average;        //average - будет хранить значение среднего арифметического первого столбца
    average = arithmetic_mean(matrix, MATRIX_LINES);        //average получает значение среднего арфиметического первого столбца
    sum_elements(matrix, MATRIX_LINES, MATRIX_SIGNS, average);  //вызываем функцию для подсчета элементов, удовлетворяющих условию
  
    for (int i = 0; i < MATRIX_LINES; i++) delete[] matrix[i];      //освобождаем память
    delete [] matrix;                                               //ЭТО тоже очень важно делать!
                
    system("pause");
    return 0; 
}
Вот исходный код с комментариями... Старался все сделать понятным...
P.S. Старайтесь писать программы как можно понятнее, не использовать односимвольные константы, переменные - это не несет никакой полезной информации. Ну можно многое еще сказать о вашем коде. Я лишь вам старался показать хороший пример.
 
Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru