Как создать матрицу с добавлением элементов в C?
я имею введу то, что нужно создать матрицу с вводом елементов. Например матрица А 3х4 и нужно вручную вводить эти самые елементы. Делать это нужно через цикл или как? Я понимаю как создать матрицу с помощью массивов, но как вручну задавать елементы не очень(.
13 фев 2011 в 17:43
С чем именно проблема? С чтением ввода пользователя?
13 фев 2011 в 17:51
Да! Как правильно это реализовать на с?
13 фев 2011 в 17:52
@Nychos я дополнил свой ответ
13 фев 2011 в 18:13
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Для решения задачи Вам необходимо сделать ровно то, что Вы нам сообщили.
P.S. Правду говорят — в вопросе обычно содержится если не весь, то половина ответа =).
Вот набросал элементарнейший пример чтения массива:
int N; printf("Enter number of items: "); scanf("%d", &N); int *arr = (int*)malloc(sizeof(int) * N); for (int i = 0; i < N; ++i) < printf("Enter item #%d: ", i); scanf("%d", &(arr[i])); >// … free(arr);
Обратите внимание, на то, что вариант далёк от идеала, поскольку нет никакой проверки корректности ввода. Но Вам, как я понимаю, надо для учебного задания, так что сойдёт.
Матрицы в Си
Матрица это набор объектов, которые хранятся в виде таблицы. У каждой матрицы есть имя, единый тип всех ее объектов.
Обявление матрицы в Си
Также как и переменные матрицу в Си необходимо объявить перед тем как с ней работать, необходимо указать ее тип, ее имя , количество строк -1 и количество столбцов -1. Нумерация столбцов и строк идет с 0.
Тип матрицы Имя [количество строк-1][количество столбцов-1];
int A[8][9] ; / /объявляет целочисленную матрицу с именем A , у которой 9 строк и 10 столбцов
После объявления матрицы, с ее элементами можно работать. Чтобы обратитсья к элементу матрицы нужно указать имя матрицы в первых квадратных скобках указать номер строки, во вторых квадратных скобках указать номер столбца.
A[0][1]=10; // элементу матрицы с номер строки 0 и столбца 1 присваивается значение 10
printf(“%d”, A[0][1]);// выводит на экран элемент матрицы с номер строки 0 и столбца 1
Задание матрицы в Си
Чтобы работать с матрицей в Си, необходимо присвоить начальные значения всех ее элементов.
Для работы со всеми элементами матрицы используется вложенные циклы for
В главном цикле “пробегаем” по всем строкам, а во вложенном “пробегаем” по всем столбцам для каждой строки.
// “пробегаемся” по всем строкам. Нумерация строк с 0.
// вложенный цикл, “пробегаемся” по всем столбцам для Нумерация столбцов с 0.
…Имя матрицы [i][j]…// работаем с элементом матрицы с номером строки i и номером столбца j
Пример программы 22. Программа задаёт целочисленную матрицу размером 10 на 10 и заполняет ее случайными числами в диапазоне, который укажет пользователь и выводит ее на экран.
int a[9][9]; // объявление матрицы 10 на 10
int i,j; // счетчики циклов
int range;// диапазон в котором присваиваются значения элементов матрицы
//ввод диапазона случайных чисел
printf(«введите диапазон заполнения\n»);
// пробегаем по всем строкам
// пробегаем по всем столбцам для данной строки i
a[i][j]=rand() % range+1; // прсиваиваем элементу матрицы a с номером строки i и номер столбца j случайного значения в диапазоне от 0 до 9
// пробегаем по всем строкам
// пробегаем по всем столбцам для данной строки i
// переход на следующую строку
При выводе матрицы на экран в Си для каждой строки мы совершаем переход на следующую строку с помощью оператора printf(» «);
Ввод матрицы в Си с помощью клавиатуры
Пример программы 23. Задаётся матрица размера 3 на 3 с помощью клавиатуры и ищется ее максимальный элемент. Он выводится на экран. При поиске максимального элемента, мы создаем специальную переменную max и присваиваем ей значение элемента a[0][0]. Пробегаем по всем элементам матрицы с помощью вложенного цикла, сравнивая текущий элемент с максимумом, если текущий элемент больше максимума, то максимуму присваивается значение этого элемента.
int a[2][2]; // объявление матрицы 3 на 3
int i,j; // счетчики циклов
int max; // переменная для хранения максимального элемента матрицы
// пробегаем по всем строкам
// пробегаем по всем столбцам для данной строки i
// ввод текущего элемента матрицы с клавиатуры
printf(«Введите элемент матрицы [%d][%d]», i, j);
// переход на следующую строку
// пробегаем по всем строкам
// пробегаем по всем столбцам для данной строки i
// переход на следующую строку
// пробегаем по всем строкам
// пробегаем по всем столбцам для данной строки i
// сравниваем текущий элемент массива с максимумом
// вывод максимального элемента
printf («Максимальный элемент массива %d», max);
Вернуться к содержанию
Перейти к теме Работа с файлами в Си
Полезно почитать по теме массивы и матрицы в си
Массивы в си
Игра на си Крестики Нолики
Комментарии ( 0 )
Нет комментариев. Ваш будет первым!
Как создать матрицу в c
Язык C позволяет создавать многомерные массивы. Например, двумерную матрицу размером 100 строк на 200 столбцов можно описать следующим образом:
Обращаться к элементу матрицы с индексами ( i,j) можно используя два индекса, каждый в отдельных квадратных скобках:
Удобно считать, что индекс в первых квадратных скобках — номер строки, а во вторых — номер столбца. Таким образом, matr[i][ j ] – элемент матрицы на пересечении i- й строки и j- го столбца.
Программа печати содержимого матрицы 100×200 : печатаем 1 00 строк по 2 00 элементов в каждой
double matr[100][200];
… /* инициализация матрицы */
printf(“%lf “, matr[i][j]);
Программа перемножения двух матриц 100×200 и 200×150, результат — матрица 100×150 :
double m1[100][200], m2[200][150], m3[100][150];
… /* инициализация m1 и m2 */
Динамически создаваемые матрицы
Часто размер матрицы неизвестен в момент написания программы. В этом случае удобно выделять память под матрицу в тот момент, когда ее размер становится известным. Это делается при помощи известной нам функции malloc().
Память, выделяемая динамически, линейна, то есть представляет собой одномерный массив. Программист, используя ее для хранения многомерных массивов, сам отвечает за размещение элементов матрицы в этом одномерном массиве, то есть устанавливает соответствие между двумя индексами элемента в матрице и одним индексом элемента в одномеерном массиве. Матрицу удобно хранить в одномерном массиве в виде последовательности строк.
Программа, считывающая размер матрицы и ее элементы с клавиатуры и выводящая матрицу на экран:
double *matr;
int n, k, i, j;
printf(“Wrong size\n”);
matr = (double*)malloc(n*k*sizeof(double));
printf(“%lf ”, matr[i + j*n]);
Отлад ка программы
Для отладки программы можно использовать не только дополнительную печать состояния программы, называемую отладочной, но и специальные средства.
В ОС Линукс имеется отладчик GDB, позволяющий выполнять программу по шагам или непрерывно до определенной точки, называемой breakpoint , отслеживать текущее состояние переменных и стека вызова функций.
Для полноценной работы отладчика с программой ее загрузочный код должен содержать отладочную информмацию. Это достигается добавлением опции “ -g” в команде компиляции, например:
gcc tmp.c -g
Результат такой компиляции загрузочный файл a.out содержит отладочную информацию.
Для выполнения загрузочного файла в режиме отладки надо при его загрузке добавить перед его именем имя отладчика:
gdb ./a.out
Отладчик gdb работает в командном режиме, то есть команды пользователя набираются в командной строке.
Самые главные команды в отладчике — run и quit . Первая выполняет программу, вторая позволяет закончить отладку.
Если программа в процессе выполнения «упала», то помогут команды bt и frame. Первая покажет стек вызовов функций в момент «падения» с именами и номерами функций, вторая поможет выбрать интересующую функцию в этом стеке по ее номеру:
frame 1
Чтобы разобраться, почему программа «упала», полезно применить команду print, которая выводит на экран значения переменных в момент падения:
print matr[0][0]
print i
print j
Если указанные команды не помогли, то можно воспользоваться возможностью выполнения программы до определенной точки, например:
break main
А затем выполнять программу по шагам при помощи команд next ( выполняет очередную инструкцию) и step («проваливается» в вызов функции).
Как создать матрицу в c
1. Создать квадратную матрицу A целых чисел размером 9х9.
Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, лежащих на той же строке и том же столбце.
Матрица В:
2. Создать квадратную матрицу B размером 9х9 и заполнить ее адресам элементов матрицы А. Распечатать матрицу B на дисплее в формализованном виде.

Матрица С:
3. Создать матрицу С размером 3х9 и заполнить ее значениями содержащиеся по адресам матрицы B, согласно заданию. Распечатать матрицу С на дисплее в формализованном виде.
Заполнить сроки матрицы С, значениями содержащиеся по адресам в матрице В.
Пользователь
Регистрация: 23.05.2010
Сообщений: 19
можешь объединить свои силы с челом, у которого такое же задание: http://programmersforum.ru/showthread.php?p=765290
P.S. задание записывал кто-то на слух, при этом ничего не понимал, что ему говорят и что он пишет: «и заполнить ее адресам элементов матрицы А» — АДРЕСАМИ, «и заполнить ее значениями содержащиеся по адресам матрицы B» — СОДЕРЖАЩИМИСЯ, «Заполнить сроки матрицы С, значениями содержащиеся по адресам в матрице В.» — Заполнить строки матрицы С значениями, расположенными по адресам, находящимся в матрице В. — ну как то так =)
Вобщем ппц формулировки некорректные какие, а так бы щас всё сделала по быстрому.
Регистрация: 03.04.2011
Сообщений: 4
Есть код для первой части (из 3)
поправьте и по возможности помогите дописать для 2, 3 части задания, в этот же код)
//--------------------------------------------------------------------------- #pragma hdrstop #include #include #include #define N 10 //--------------------------------------------------------------------------- #pragma argsused int main() < < #define strok 9 #define stolb 9 int a[strok][stolb]; int mat[N][N], i,j,sum; < for(i=0;iprintf("\n"); > getch(); return 0; > > > //---------------------------------------------------------------------------
Регистрация: 03.04.2011
Сообщений: 4
Помогите же, неужели так сложно подправить код?! На главной диагонали разместить суммы элементов, лежащих на той же строке и том же столбце.
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии. ) | timepoka | Помощь студентам | 8 | 01.07.2011 13:20 |
| доказательство, что произведение матриц А и В не коммутативно. Язык С | sanela | Помощь студентам | 2 | 26.01.2010 02:11 |
| Написание кода в Delphi на создание матриц | Chertenok666 | Помощь студентам | 9 | 30.11.2009 18:23 |
| Зачада на массив. Язык С.Создание файла | Bella | Помощь студентам | 4 | 05.11.2009 19:58 |
| Двумерные массивы,создание новой матрицы путем сортровки поочередно двух матриц. | valord | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 03.06.2009 20:41 |