Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2013, 17:42   #11
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Следующая программка запрашивает у пользователя размер двумерного массива (квадратного). Заполняет его случайными числами от 0 до 9 и выводит на экран.



Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void fillArray(int **array, int size) {
    srand (time(NULL));
    for (int row = 0; row < size; row++) {
        for (int col = 0; col < size; col++) {
            array[row][col] = rand() % 10;
        }
    }
}

void printArray(int **array, int size) {
    srand (time(NULL));
    for (int row = 0; row < size; row++) {
        for (int col = 0; col < size; col++) {
            cout << array[row][col];
            if (col != size-1) {
                cout << ' ';
            }
            else {
                cout << '\n';
            }
        }
    }
}

int main(int argc, char** argv) {
    int **array;

    // Size of the array
    int N;
    cout << "Enter the size of the array (N): ";
    cin >> N;

    // Allocation
    array = new int*[N];
    for (int i = 0; i < N; i++) {
        array[i] = new int[N];
    }
    
    // Fill the array
    fillArray(array, N);
    
    // Print the array
    printArray(array, N);

    // Deletion
    for (int i = 0; i < N; i++) {
        delete [] array[i];
    }
    delete [] array;

    return 0;
}
P.S. Хорошенько изучите. Подумайте, как сделать, чтобы и отрицательные числа были.
8Observer8 вне форума Ответить с цитированием
Старый 05.09.2013, 18:33   #12
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Следующая программка запрашивает у пользователя размер двумерного массива (квадратного). Заполняет его случайными числами от 0 до 9 и выводит на экран.



Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void fillArray(int **array, int size) {
    srand (time(NULL));
    for (int row = 0; row < size; row++) {
        for (int col = 0; col < size; col++) {
            array[row][col] = rand() % 10;
        }
    }
}

void printArray(int **array, int size) {
    srand (time(NULL));
    for (int row = 0; row < size; row++) {
        for (int col = 0; col < size; col++) {
            cout << array[row][col];
            if (col != size-1) {
                cout << ' ';
            }
            else {
                cout << '\n';
            }
        }
    }
}

int main(int argc, char** argv) {
    int **array;

    // Size of the array
    int N;
    cout << "Enter the size of the array (N): ";
    cin >> N;

    // Allocation
    array = new int*[N];
    for (int i = 0; i < N; i++) {
        array[i] = new int[N];
    }
    
    // Fill the array
    fillArray(array, N);
    
    // Print the array
    printArray(array, N);

    // Deletion
    for (int i = 0; i < N; i++) {
        delete [] array[i];
    }
    delete [] array;

    return 0;
}
P.S. Хорошенько изучите. Подумайте, как сделать, чтобы и отрицательные числа были.
ого..) если честно, почти ничего не понятно....(((( Array, Deletion , Allocation и многие другие мне совершенно непонятны...((( только в начале понятно, что программа предлагает пользователю выбрать размерность массива, а дальше темный лес..(
alucard115 вне форума Ответить с цитированием
Старый 06.09.2013, 11:54   #13
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Погуглите: что такое указатель в С++ и что такое new в С++. Тогда Вы поймёте эту конструкцию:

Код:
    int **array;
И эту:

Код:
    // Allocation
    array = new int*[N];
    for (int i = 0; i < N; i++) {
        array[i] = new int[N];
    }
Почитаете немного об указателях и new, тогда пишите здесь, что Вам непонятно и как Вы поняли. Вам всегда здесь кто-нибудь поможет.
8Observer8 вне форума Ответить с цитированием
Старый 06.09.2013, 12:29   #14
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
ого..) если честно, почти ничего не понятно....(((( Array, Deletion , Allocation и многие другие мне совершенно непонятны...((( только в начале понятно, что программа предлагает пользователю выбрать размерность массива, а дальше темный лес..(
Форум - это форум. Учебник - это учебник.
Насколько учебник плохой форум, настолько же форум - плохой учебник.
Неужели труднее открыть книгу чем писать на форум?

Цитата:
Почитаете немного об указателях и new
не поможет ему, он же спрашивал:
Цитата:
и еще, что означает
Код:
const int m=10;
//...
только я не совсем понимаю в переменных, и в некоторых операторах...=(( МОжет кто сможет пояснить комментариями?)
нужен именно учебник/справочник.
rrrFer вне форума Ответить с цитированием
Старый 06.09.2013, 14:33   #15
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

alucard115 ничего сложного в коде нет.. Спрашивайте конкретно в какой строке непонятки... Постараюсь объяснить в меру своих способностей. Если в общих чертах.
1. Создается динамический массив из N элементов...
2. Для заполнения случайными числами передается в функцию fillArray()
3. Для печати в консоли передается в функцию printArray()
4. Далее выделенная память освобождается...
Все.....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 06.09.2013, 14:38   #16
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
8Observer8
пока что, для меня слишком сложно, что вы написали..( погуглил, но все равно понятного мало...
Цитата:
rrrFer
быть может, Вы и правы...=(


Нашел в интернете код, который более прост, и понятен, но не понимаю, почему результат не правильный.

Код:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{  setlocale(0,"rus");
   int matrix[100][100];
   int mass[100];
   int stroka;
   int stolbec;
   cout<<"Введите кол-во строк: ";
   cin>>stroka;
   cout<<"Введите кол-во столбцов: ";
   cin>>stolbec;
   cout<<"Введите элементы массива через пробел: "<<endl;
   for(int i=0;i<stroka;i++){
       int count=0;
       if(i%stroka)
           cout<<endl;
       for(int j=0;j<stolbec;j++){
           
           cin>>matrix[i][j];
           cout<<matrix[i][j]<<" ";
           if(matrix[i][j]>0)
           {count++;}}
    mass[i]=count;
   }
   cout<<"\nКол-во положительных элементов: ";
   for(int i=0;i<stroka;i++)
       cout<<mass[i]<<" ";
   cout<<endl;
   getch();
    return 0;
}
Массив задал, но не правильно определяет количество положительных элементов. ПОдскажите, что исправить нужно?


P.S. кстати, нашел все таки как сделать, чтобы русский отображался))
alucard115 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Двумерный массив в С the_faceless Помощь студентам 8 18.12.2012 23:21
Двумерный массив на С++ Владилена Помощь студентам 0 11.06.2011 18:36
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40