Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с матрицами в TurboC

8.6K
28 апреля 2006 года
raps_np
23 / / 05.10.2005
Создать программу работы с матрицами.Заполнение матррицы А и B: из фала или задание с клавиатуры. Нахождение А+В, (А+В)^-1, (А+В)*(А+В)^-1.
242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by raps_np
Создать программу работы с матрицами.Заполнение матррицы А и B: из фала или задание с клавиатуры. Нахождение А+В, (А+В)^-1, (А+В)*(А+В)^-1.



А в чем конкретно проблемы?
Если допустим в алгоритме запутался тогда:
1) напиши для начала решения мат. задание на листике (пости сюда)
2) пытаешься написать код (тоже постишь сюда)

тогда посмотрим где ошибся

8.6K
29 апреля 2006 года
raps_np
23 / / 05.10.2005
Цитата:
Originally posted by OlgaKr
А в чем конкретно проблемы?
Если допустим в алгоритме запутался тогда:
1) напиши для начала решения мат. задание на листике (пости сюда)
2) пытаешься написать код (тоже постишь сюда)

тогда посмотрим где ошибся


Мы недавно начали учить Си, но и за майских праздников у нас пропадает много пар. Поэтому я решил начать писать курсовую заранее.
Проблемы с которыми я столкнулся
1.Я не могу сделать так чтобы массив выводился на экран как матрица.
2.Как сделать общий цикл ввода массива А и В
3.Как прибавить к первому элементу массива А первый элемент массива В
Ну в общем я написал кое-что, посмотрите может че подскажете

Код:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main (void)
{
    int k,i,i1,ic,jc,sc,stc,j1,j,k1,s,st,s1,st1,m[10][10],m1[10][10],mc[10][10];
    clrscr();
    printf("Vvedite M matrice A\n");scanf("%d",&s);
    printf("Vedite N v matrice A\n");scanf("%d",&st);
    printf("Vedite M v matrice B\n");scanf("%d",&s1);
    printf("Vedite N v matrice B\n");scanf("%d",&st1);
        if(s<=s1)
    {
        sc=s;
    }
    if(st<=st1)
    {
        stc=st;
    }
    if(s>=s1)
    {
        sc=s;
        }
    if(st>=st1)
        {
            stc=st;
            }
    for (i=0; i < s; i++)
    for (j=0; j < st; j++)
        {
    printf("A:");scanf("%d",&m[j]);
    }
    for(i1=0;i1<s1;i1++)
    for(j1=0;j1<s;j1++)
    {
    printf("B:");scanf("%d",&m1[i1][j1]);
    }
    getch();
}
242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:

2.Как сделать общий цикл ввода массива А и В



Как насчет того, что бы использовать функцию, которую можно запустить дважды:
1)для массива А
2)для массива B
как параметры посылаешь массив, и можно строку для сообщения пользователю:

Код:
#include <stdio.h>
#define ROW 3
#define COL 3
void inputmatrix(int [][COL], char []);
void main(void)
{
  .....
  inputmatrix(A,"Enter elements of matrix A:\n");
  inputmatrix(B,"Enter elements of matrix B:\n");
  ....
}
void inputmatrix(int mat[][COL], char mes[])
{
  /* 1 - printing mes*/
  /* code for input matrix */
}
242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:

1.Я не могу сделать так чтобы массив выводился на экран как матрица.


Точно также, как в любом другом языке (ну асм пусть будет исключением :)) :
после распечатывания каждой строки матрицы (массива) нужно распечатать '\n' :

 
Код:
...
putchar('\n');
....


при расспечатывании елемента массива удобно пользоваться маштабированием:
 
Код:
printf("%5d",mat[j]);


или

 
Код:
printf("%d  ",mat[j]);
242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:

3.Как прибавить к первому элементу массива А первый элемент массива В


Также как и в математике, последовательно складывашь каждый элемент
матрицы А(сохранненой в массиве) с каждым элементо массива B, а результат сохраняешь в 3 массиве С например.
Достаточно одного цикла состоящего из 2-ух for-ов.

 
Код:
...
C[..][..] = A[..][..] + B[..][..];
...
242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:

Код:
printf("Vvedite M matrice A\n");scanf("%d",&s);
    printf("Vedite N v matrice A\n");scanf("%d",&st);
    printf("Vedite M v matrice B\n");scanf("%d",&s1);
    printf("Vedite N v matrice B\n");scanf("%d",&st1);
        if(s<=s1)
    {
        sc=s;
    }
    if(st<=st1)
    {
        stc=st;
    }
    if(s>=s1)
    {
        sc=s;
        }
    if(st>=st1)
        {
            stc=st;
            }


это зачем ? насколько я вижу у тебя массивы не деномические.
И допустим ты берешь максимальный размер массива (при объявлении), а потом от пользователя получаешь желаемый размер, но в любом случае

Цитата:

N_A == N_B && M_A == M_B


иначе как ты их складывать собираешься?

242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by OlgaKr
это зачем ? насколько я вижу у тебя массивы не деномические.
И допустим ты берешь максимальный размер массива (при объявлении), а потом от пользователя получаешь желаемый размер, но в любом случае

иначе как ты их складывать собираешься?


т.е. хочу сказать что достаточно один раз получить значение N, M

Код:
if(s<=s1)
    {
        sc=s;
    }
    if(st<=st1)
    {
        stc=st;
    }
    if(s>=s1)
    {
        sc=s;
    }
    if(st>=st1)
    {
           stc=st;
    }


допустим тебе нужен этот код, неужели нельзя упростить его блоком if ... else
 
Код:
if( ... )
{
  ...
}
else
{
  ...
}
242
29 апреля 2006 года
Оlga
2.2K / / 04.02.2006
читай книги
8.6K
29 апреля 2006 года
raps_np
23 / / 05.10.2005
Цитата:
Originally posted by OlgaKr
читай книги


Большое спасибо, попробую разобраться.

8.6K
30 апреля 2006 года
raps_np
23 / / 05.10.2005
Для чего в C++ исполбзуется #define, а также в коде..........
Код:
#include <stdio.h>
#define ROW 3
#define COL 3
void inputmatrix(int [][COL], char []);
void main(void)
{
  .....
  inputmatrix(A,"Enter elements of matrix A:\n");
  inputmatrix(B,"Enter elements of matrix B:\n");
  ....
}
void inputmatrix(int [][COL], char mes[])
{
  /* 1 - printing mes*/
  /* code for input matrix */
}

, и если не трудно объсните как использовать функции,с примером кода. Заранее большое спасибо.
242
30 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by raps_np
Для чего в C++ исполбзуется #define, а также в коде..........
Код:
#include <stdio.h>
#define ROW 3
#define COL 3
void inputmatrix(int [][COL], char []);
void main(void)
{
  .....
  inputmatrix(A,"Enter elements of matrix A:\n");
  inputmatrix(B,"Enter elements of matrix B:\n");
  ....
}
void inputmatrix(int [][COL], char mes[])
{
  /* 1 - printing mes*/
  /* code for input matrix */
}

, и если не трудно объсните как использовать функции,с примером кода. Заранее большое спасибо.



насчет #define - книгу в руки

[COLOR=red]...[/COLOR] - это говорит о том, что я не написала полную программу, надо еще чучуть подумать, и дописать что надо. Например:

 
Код:
C[..][..] = A[..] + B[..];


говорит о том, что ты должен организовать цикл, пройтись по элементам массива А,B а результаты сохранить в массиве С,
а вместо .. подставить индексы. Короче говоря надо учиться:
 
Код:
for(i = 0; i < N; i++)
  for(j = 0; j < M; j++)
     C[j] = A[j] + B[j];


p.s. что, книгу в руки взять лень?
242
30 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by raps_np

и если не трудно объсните как использовать функции,с примером кода.



Exampele

внизу пример, в данном случае(коде) по использованию функции, нету разницы между С и С++

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог