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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 14:47   #1
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию Масив в функцию Си

Задача такова:нужно умножить 3 матрицы,с помощью функции.(желательно функцию которая умножает 2 матрицы)
Помогите пжлста как сделать функцию чтоб из неё можно было извлечь масив (ну который появляетсья при перемножении 2ух матриц)
Мне говорили через указатели,но я их наверное непонял так что ничё неполучаетсья,кто может помогите плз)
Код:
#include <stdio.h>
#include <math.h>
void pro(int *c,int x[10][10],int n,int y[10][10])
{int s,i,j,k;
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
{s=0;
 for(k=0;k<n;k++)
 s=s+x[i][k]*y[k][j];
*c[i][j]=s;}
}}

main()
{int a[10][10],c[10][10],b[10][10],x[10][10];
int i,j,n;
Slame вне форума Ответить с цитированием
Старый 15.12.2010, 14:59   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Передача массива в функцию по указателю:
Код:
void func(int*, int);
...
int array[10];
func(array, 10);
...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 15.12.2010, 15:16   #3
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

хм...А можно узнать как вывести масив из функциюю на переменную программы?
Slame вне форума Ответить с цитированием
Старый 15.12.2010, 15:23   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Код:
void func(int *array, int n)
{
    for(int i=0; i < n; ++i)
        ... //работа с массивом
}

int main()
{
    int array[10];
    func(array, 10);
    //В массиве array сохранены все изменения, сделанные в функции func()
    return 0;
}
Если не понятно - читайте учебник
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 15.12.2010, 16:35   #5
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

Смотрел в учебник правда электронный там то что мне нужно не описано...
А можешь подсказать пжлста в твоём коде в функции обратиться к масиву можно как-то если он двумерный?
пробывал *array[i][j] бьёт ошибку типол Illigal use of pointer;
Slame вне форума Ответить с цитированием
Старый 15.12.2010, 16:42   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Нет ни чего не возможного
Код:
void func(int *array, int n)
{
    for(int i=0; i < n; ++i)
    for (int j = 0; j < n; j++)
    {
        ... //работа с массивом
        array++;
     }
}

int main()
{
    int array[10][10], *p = &array[0][0];
    func(p, 10);
    //В массиве array сохранены все изменения, сделанные в функции func()
    return 0;
}
From Stilet: Для выделения кода у нас предусмотрена кнопка #
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Stilet; 15.12.2010 в 17:29.
Hacker19_90 вне форума Ответить с цитированием
Старый 15.12.2010, 17:15   #7
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

Спасибо,но я не немного не эт осрпашвиал)
вот именно там где "Работа с масивом" как к нему обратиться я всес пособы перебробыал бьёт ошибку допустим к масиву *array можно обратиться в функции как
array[i][j] ???или надо както по другому?
Slame вне форума Ответить с цитированием
Старый 15.12.2010, 17:45   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от Slame Посмотреть сообщение
Спасибо,но я не немного не эт осрпашвиал)
вот именно там где "Работа с масивом" как к нему обратиться я всес пособы перебробыал бьёт ошибку допустим к масиву *array можно обратиться в функции как
array[i][j] ???или надо както по другому?
Ну покажи что получилось! Щас обьясню
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 15.12.2010, 17:50   #9
Slame
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 45
По умолчанию

Что получилось всмысле код?
Код:
 void pro(int *c,int *x,int *y,int n)
{int s,i,j,k;
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
{s=0;
 for(k=0;k<n;k++)
 s=s+x[i][k]*y[k][j];
c[i][j]=s;}
}}
Там где красный цвет выбило ошибку Invalid inderection
Slame вне форума Ответить с цитированием
Старый 15.12.2010, 18:03   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Код:
 void pro(int *c,int *x,int *y,int n)
{int s,i,j,k;
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
{s=0;
 for(k=0;k<n;k++)
 {
     s=s+(*x)*(*y);
     x++;
     y++;
}
*c=s;
c++;}
}}
Ну так попробуйте
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
масив sllh_111 Помощь студентам 0 08.05.2010 12:40
Масив MyST1caL Общие вопросы Delphi 1 20.01.2010 23:06
Масив в С++ Smile.id Помощь студентам 7 14.10.2009 13:03
масив HENRY23 Общие вопросы Delphi 0 17.03.2009 22:30
Масив rizii Общие вопросы C/C++ 2 09.01.2009 13:30