Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Как перегрузить оператор<< и оператор>> ? Доброго времени суток. Застрял на двух вопросах и не как не могу найти инфу которвя мне помогла бы их решить. вопрос первый. В общем у меня есть обьект в который содержит массив типа char и его велечину.класс называеться (MString) перегрузить оператор функция которая должна вернуть мне значение находящиеся в индксе i тоесть когда я вызываю оператор то должно случиться следующее допустим у... https://www.cyberforum.ru/ cpp-beginners/ thread1793490.html C++ Нюансы использования файлового ввода/вывода
Подскажите пожалуйста ещё по 1 вопросу. У меня в коде целочисленный массив (на данный момент все элементы равны 0). Мне надо что бы в программе можно было менять эти переменные не изменяя код. Для этого мне надо что бы программа могла вызвать функцию которая запишет их в файл и позже выведет по запросу. И если необходимо то заменит данные в файле. Вопрос такой: Как записать данные я знаю, но...
C++ Сортировка перестановками https://www.cyberforum.ru/ cpp-beginners/ thread1793407.html
Хотел написать функцию для сортировки. Компилятор ошибок не выдает.На выводе выходит это: 3 2 5 4 1 8 6 9 7 11 13 10 12 14 -858993460 . Писал в Visual Studio. #include "stdafx.h" #include <iostream> using namespace std; void func(int mass, int size) { bool What = 1; for(;0==0;){ for (int i = 0;i < size;i++) {
C++ Реализовать автоматизированную информационную систему железнодорожного вокзала (динамические структуры данных) Задание работы: Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: □ номер поезда; □ станция назначения; □ время отправления. https://www.cyberforum.ru/ cpp-beginners/ thread1793402.html
C++ Проверить попадание точки в заданный сектор
Как перед танчиком проверить сектор с углом 60 градусов радиуса R?
C++ Не компилируется рекурсивная шаблонная функция Добрый день! Есть функция:#include <iostream> template<uint8_t data, uint8_t ...other> static void write() { std::cout << data << std::endl; write<other...>(); } https://www.cyberforum.ru/ cpp-beginners/ thread1793366.html
C++ Какие есть отличия между struct и class кроме модификаторов доступа по умолчанию? Какие есть отличия между struct и class кроме модификаторов доступа по умолчанию? https://www.cyberforum.ru/ cpp-beginners/ thread1793360.html C++ Отладчик Visual Sudio: непонятные значения в окне "Локальные"
В visual studio в окне "локальные" в столбце "значения" вместо значений элементов вектора какая-то фигня.Как изменить формат значений в этом окне?
C++ Представить числом введенное текстовое представление цифры https://www.cyberforum.ru/ cpp-beginners/ thread1793291.html
Обьясните, что в этом коде делает цикл (for) ? Почему если его убрать, программа не работает? "Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine". Введите их в программу, преобразующую цифру в соответствующее строковое представление; например, при вводе цифры 7 на экран должна быть выведена строка seven. С помощью этой же программы, используя тот же са¬мый цикл...
C++ Повторное выполнение кода Здравствуйте! Ребята как я могу сделать так чтобы эта программа т.е Калькулятор повторил свою работу каждый раз когда я получаю свой результат. Мне нужно чтобы (switch) повторял свое действие вот код: int main() { setlocale(LC_ALL , "Russian"); https://www.cyberforum.ru/ cpp-beginners/ thread1793258.html
Телефонный справочник, функция удаления абонента C++
Помогите исправить ошибки в функция удаления абонента void removing(TEL &A, int n) void removing(TEL &A, int n) { removing: ifstream fin("trb.txt", ios::in);
C++ Проверка версии программы (перевод кода с C#) https://www.cyberforum.ru/ cpp-beginners/ thread1793233.html
Всем привет,подскажите как перевести данный код с C# на с++? try { WebClient ClientStatus = new WebClient(); string ActualStatus = ClientStatus.DownloadString("Сайт/Файл.txt"); string CurrentStatus = "v1"; if (!ActualStatus.Contains(CurrentStatus)) { DialogResult Dialog = MessageBox.Show("Обнаружено обновление!Перейти на страницу загрузки?", "Обновление", MessageBoxButtons.YesNo,...
6 / 6 / 7
Регистрация: 07.08.2016
Сообщений: 44
15.08.2016, 17:31 0

Потерялся в двумерном массиве - C++ - Ответ 9457841

15.08.2016, 17:31. Показов 1263. Ответов 15
Метки (Все метки)

Лучший ответ Сообщение было отмечено Overloading как решение

Решение

Overloading, меня больше удивляет тот факт, что вы так паритесь. Зачем? Вы хотите понять как работают двумерные массивы? Я объясню.
C++
1
2
3
4
5
6
7
 for (int i = 0; i<n ; i++)
    {
        for (int j = 0; j<m ; j++)
         {
         array[n][m] = ....   // вот так вы заполняете массив по элементам
          }
     }
Чтобы было понятно, то здесь N являются строками, затем M - являются столбцами. Отсчёт ведётся от индекса [0][0] и заполняется построково(т.е. элементы a[0][0] -> a[0][1] -> a[0][2] и так далее, затем идёт заполнение другой строчки: a[1][0] -> a[1][1] -> a[1][2] и так далее). Я думаю, что это несложно и понятно.

Какой смысл делать так:
C++
1
2
3
4
5
6
7
8
9
10
    const int m=6, n=4;
    int a[m][n];
    int x = 5, y = 0;
    
    for (int i = 0; i<n ; i++)
    {
        for (int j = 0; j<m ; j++)
        { ...........
.....................
.....................
Я не понимаю. Вы объявляете массив, на который выделено памяти ровно на 6 строк и 4 столбца. Но затем заполняете его на 4 строки и 6 столбцов! Меньше можно, да. Так как памяти выделено больше. Но больше - нельзя, ибо все остальные элементы имеющие, скажем, индекс начиная с a[4][0] и так далее - улетают вникуда. И что происходит потом и какие результаты он выдаёт вам в конце - Бог его знает. Вряд ли, как мне кажется, кто-то вам предскажет какие числа он выдаст вам потом. Это было первое.

Второе.
C++
1
2
3
4
5
6
7
8
for (int j = 0; j < m; j++)               
    {
        for (int i = 0; i < n ; i++)
        {
            cout<<"  "<<a[i][j]<<"  ";
        }
        cout<<endl;
    }
Теперь выводе массива на экран происходит непонятная дичь, позвольте так сказать. Вы выводе массив на экран с точностью наоборот, как вы его заполняли. Это глупо делать и никогда не выдаст вам верный результат.
Объясняю понятней.
C++
1
2
3
4
 for (int i = 0; i<n ; i++)
    {
        for (int j = 0; j<m ; j++)
        { ...........
Смотрим код выше. Вы заполнили его как i - строки, j - столбцы. (То, что у вас ошибка в переполнении - я высказал выше).
Но затем вы выводите его как:
C++
1
2
3
4
5
6
7
8
for (int j = 0; j < m; j++)           //Напоминаю!! Это были у вас СТОЛБЦЫ    
    {
        for (int i = 0; i < n ; i++)   //А это были у вас СТРОКИ
        {
            cout<<"  "<<a[i][j]<<"  ";
        }
        cout<<endl;
    }
То есть, вы всё перевернули. Как заполняете массив, так его и выводите! Если вы хотели поработать с массивами и понять, как они работают, прошу перечитать данные темы на различных сайтах и порешать задачи, но никак не экспериментировать вот так :/

Ну и наконец, правильный код должен был выглядеть вот так:
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 <iostream>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    const int m=6, n=4;
    int a[m][n];
    int x = 5, y = 0;
    
    for (int i = 0; i<m ; i++)
    {
        for (int j = 0; j<n ; j++)
        {
            a[i][j] = y; 
                if (j >= x)
                {
                    a[i][j] = y+1;
                } 
        }
        y++;x--; 
    }
 
   for (int i = 0; i < m; i++)               
    {
        for (int j = 0; j < n ; j++)
        {
            cout<<"  "<<a[i][j]<<"  ";
        }
        cout<<endl;
    }
return 0;
}
А так, всё зависит от цели вашего кода. Можно манипулировать массивом как вы пожелаете. Главное, не переполнять его.

Вернуться к обсуждению:
Потерялся в двумерном массиве C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2016, 17:31
Готовые ответы и решения:

Min в двумерном массиве
1)данный алгоритм находим min элементы в двумерном массиве для метод наименьшей стоимости....

Указатели в двумерном массиве
Помогите пожайлуста!!! Как занулить главную диогональ, скока не пробовал, ни как не получается.......

Палиндром в двумерном массиве
Задача звучит так :С клавиатуры вводится размерность целочисленной матрицы, затем сама матрица....

Указатели в двумерном массиве
Например есть массив int** mas=new int*; for(int i=0; i&lt;=str;i++) mas=new int; ...

15
15.08.2016, 17:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2016, 17:31
Помогаю со студенческими работами здесь

Функции в двумерном массиве
Ввести двумерные массивы X1,X2. В этих массивах найти минимальные элементы. Преобразовать каждую...

Строки в двумерном массиве
Здравствуйте! Хочу прояснить некоторые моменты по работе с двумерным массивом. Достичь хочу...

В двумерном массиве подсчитать
Для каждой строки в двумерном массиве подсчитать количество положительных элементов и записать...

Динамика в двумерном массиве
Всем привет. Подскажите, пожалуйста, реально ли реализовать такое. Есть заранее найденное n - не...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru