Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Шмебулок
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 36
1

Задача с функциями и указателями

28.11.2018, 19:01. Просмотров 304. Ответов 12
Метки нет (Все метки)

У меня код выдаёт ошибку. Задача такая: есть 3 целых массива(A[6][5], B[4][7], C[5][5]), нужно посчитать производное каждого столбика в матрицах и вывести его на экран. Помогите пожалуйста разобраться.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void inputarray(int n, int m, float *(Arr)[i][j])
{
srand (time (0));
for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            *(Arr)[i][j]=rand () %5 -1;
            printf("%3f", *(Arr)[i][j]);
            printf("  ");
        }
printf("\n");
    }
}
void counting(int n, int m, float *(Arr)[i][j])
{
    float P;
for(int j=0; j<n; j++)
    {
        P=1;
    for(int i=0; i<m; i++)
    {
      P*=Arr[i][j];
      printf("Products:%3f", P);
      printf(" ");
    }
    }
}
int main(){
const int n1=5, m1=6, n2=7, m2=4, n3=5, m3=5;
int A[m1][n1], B[m2][n2], C[m3][n3];
printf("Matrix A:");
inputarray(n1, m1, &A[0][0]);
printf("Products from matrix A:");
counting(n1, m1, &A[0][0]);
printf("Matrix A:");
inputarray (n2, m2, &B[0][0]);
printf("Products from matrix B:");
counting(n2, m2, &B[0][0]);
printf("Matrix C:");
inputarray (n3, m3, &C[0][0]);
printf("Products from matrix C:");
counting(n3, m3, &C[0][0]);
return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2018, 19:01
Ответы с готовыми решениями:

Задача с указателями
Доброго времени. 1. Необходимо написать функцию int remGetMax(int**this); которая сохраняет...

Задача с указателями
Помогите написать программу а) которая читает два Integer-числа и создать два указателя,которые...

Задача с математическими функциями
Условие задания: Составьте программу, которая подсчитывает и выводит значение t1 и t2 по формулам,...

Задача с указателями: найти среднее арифметическое трех целых чисел
Разработать программу на языке Си. Все переменные в программе должны быть переменными-указателями....

Работа с массивами, указателями и функциями.
Я вот рли не знаю, как отправить в свою созданную функцию массив, как потом обработанный массив в...

12
Байт
Эксперт C
21032 / 13287 / 2792
Регистрация: 24.12.2010
Сообщений: 27,994
28.11.2018, 23:41 2
Цитата Сообщение от Шмебулок Посмотреть сообщение
printf("Products:%3f", P);
Из цикла надо вынести в конец функции
0
Шмебулок
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 36
02.12.2018, 17:28  [ТС] 3
Это не помогло.Просто стало 1 неправильное производное после каждой матрици.

Добавлено через 9 минут
Цитата Сообщение от Шмебулок Посмотреть сообщение
printf("Products:%3f", P);
* * * printf(" ");
Вот это вынес из цикла в следующий, и теперь хотя бы считает нужное количество производных, но они всё время одинаковые.Помогите решить.

Добавлено через 5 минут
И я заменил *(Arr)[][] на *a. Потомучто компилятор выдаёт ошибку
0
Байт
Эксперт C
21032 / 13287 / 2792
Регистрация: 24.12.2010
Сообщений: 27,994
02.12.2018, 18:03 4
Шмебулок Покажите последний код. И весь вывод. И скажите, что именно вас не устраивает
0
02.12.2018, 18:03
Шмебулок
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 36
02.12.2018, 18:11  [ТС] 5
В производных выводяться одни и те же числа, но такого быть не должно.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void inputarray(int n, int m, float *a)
{
srand (time (0));
for (int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            *a=rand () % 6 -2;
            printf("%3.0f", *a);
            printf(" ");
        }
printf("\n");
    }
}
void counting(int n, int m, float *a)
{
    float P;
for(int j=0; j<n; j++)
    {
        P=1.0;
    for(int i=0; i<m; i++)
    {
      P*=*a;
    }
     printf("%3.0f", P);
      printf(" ");
    }
}
int main(){
const int n1=5, m1=6, n2=7, m2=4, n3=5, m3=5;
int A[m1][n1], B[m2][n2], C[m3][n3];
printf("Matrix A:\n");
inputarray(n1, m1, &A[0][0]);
printf("Products from matrix A:\n");
counting(n1, m1, &A[0][0]);
printf("\nMatrix B:\n");
inputarray(n2, m2, &B[0][0]);
printf("Products from matrix B:\n");
counting(n2, m2, &B[0][0]);
printf("\nMatrix C:\n");
inputarray(n3, m3, &C[0][0]);
printf("Products from matrix C:\n");
counting(n3, m3, &(C)[0][0]);
return 0;
}
0
Миниатюры
Задача с функциями и указателями  
Байт
Эксперт C
21032 / 13287 / 2792
Регистрация: 24.12.2010
Сообщений: 27,994
02.12.2018, 18:31 6
Цитата Сообщение от Шмебулок Посмотреть сообщение
выводяться одни и те же числа,
Ну, так конечно. Используешь одно и тоже число. *a у тебя не меняется. Попробуй так
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
void inputarray(int n, int m, float *a)
{
srand (time (0));
for (int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            *a=rand () % 6 -2;
            printf("%3.0f", *a);
            printf(" ");
            a++;
        }
printf("\n");
    }
}
void counting(int n, int m, float *a)
{
    float P;
for(int j=0; j<n; j++)
    {
        P=1.0;
    for(int i=0; i<m; i++)
    {
      P*=*(a++);
    }
     printf("%3.0f", P);
      printf(" ");
    }
}
0
Шмебулок
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 36
02.12.2018, 19:08  [ТС] 7
Числа разные, но всё равно неправильно. Например, в 2 столбике в матрице А произведение елементов должно быть 0, а там -48.
0
Миниатюры
Задача с функциями и указателями  
Байт
Эксперт C
21032 / 13287 / 2792
Регистрация: 24.12.2010
Сообщений: 27,994
02.12.2018, 19:44 8
Цитата Сообщение от Шмебулок Посмотреть сообщение
int A[m1][n1], B[m2][n2], C[m3][n3];
Цитата Сообщение от Байт Посмотреть сообщение
void inputarray(int n, int m, float *a)
Цитата Сообщение от Байт Посмотреть сообщение
void counting(int n, int m, float *a)
Ну и чего ты хочешь? Скажи спасибо, что не рухнуло все вообще
0
Шмебулок
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 36
02.12.2018, 19:51  [ТС] 9
Я прошу помочь разобраться, потомучто я не понимаю как правильно сделать.
0
Байт
Эксперт C
21032 / 13287 / 2792
Регистрация: 24.12.2010
Сообщений: 27,994
02.12.2018, 19:59 10
Шмебулок, смотри внимательно на 3 цитаты. Это я скопипастил с твоего кода, не обратив внимания на чудовищную ошибку. Места, куда надо смотреть, выделены. Вот еще выделю поярче
Цитата Сообщение от Байт Посмотреть сообщение
int A[m1][n1], B[m2][n2], C[m3][n3];
void inputarray(int n, int m, float *a)
void counting(int n, int m, float *a)
Десяти минут должно тебе хватить. Не хватит - ну чтож, придется рассказать маленький секрет.
0
Шмебулок
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 36
02.12.2018, 20:11  [ТС] 11
Там тип поменять на флоат, а в 1 из функций поменять переменную?
0
Байт
Эксперт C
21032 / 13287 / 2792
Регистрация: 24.12.2010
Сообщений: 27,994
02.12.2018, 20:22 12
Шмебулок,
C
1
2
void inputarray(int n, int m, int *a)
void counting(int n, int m, int *a)
И вывод подправь printf("%3d", *a);
Главное. Типы данных должны быть согласованы.
Странно, что транслятор не дал ошибки...
0
D3m1an
03.12.2018, 12:25     Задача с функциями и указателями
  #13

Не по теме:


Байт, на несовпадение типов ошибку среда может и не выдать, выдаст предупреждение :)

0
03.12.2018, 12:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2018, 12:25
Привет! Вот еще темы с ответами:

Работа с указателями/массивами /функциями
Запутался с указателями/в лабе нужно провести через указатели /Дан одномерный массив из К...

Путаница с функциями и указателями. Платина. Ansi c
Прошу прощения за очередную лишнюю тему, где школьник запутался в указателях и не может передать...

Задача с указателями
Здравствуйте. У меня проблема: никак не могу понять эти указатели:-|. Есть задача: пользователь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru