标题:矩阵累加问题。代码过不去,求解!!!!
只看楼主
liuyawen44
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-11-30
结帖率:75%
已结贴  问题点数:10 回复次数:2 
矩阵累加问题。代码过不去,求解!!!!
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int **p,**q;
    int i,j,k,m1,m2,n,a[10],b[10],t,s,c[20][20]= {0};

    scanf("%d",&n);
    for(i=0; i<n; i++)
    {

        scanf("%d%d",&a[i],&b[i]);

        p = (int **)malloc(a[i] * sizeof(int *));
        {
            if(p=NULL)
                printf("Not Enough Memory!\n");

        }
        for(t = 0; t < a[i]; t++)
        {
            p[t] = (int *)malloc(b[t]* sizeof(int));
            if(p[t]=NULL)
                printf("Not Enough Memory!\n");

        }
        for(k=0; k<a[i]; k++)
        {
            for(j=0; j<b[i]; j++)
            {
                scanf("%d",&p[k][j]);
                c[k][j]+=p[k][j];
            }
        }
        for(s=0; s<a[i]; s++)
            free(p[s]);
        free(p);

    }



}
输入样例:
2   <---待累加的矩阵个数
2 2  <---第1个矩阵的行数和列数
3 4
5 6
2 2  <---第2个矩阵的行数和列数
1 2
4 5
输出样例:
4 6
9 11

编程计算k个整型矩阵的累加,并输出结果。若给定的矩阵不能相加,则直接终止程序并输出"Matrix Can't Add!"。若计算机内存不足以计算给定矩阵的累加,则直接终止程序并输出"Not Enough Memory!"。
搜索更多相关主题的帖子: include Memory 
2014-12-28 12:04
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:10 
1、if(p=NULL)、if(p[t]=NULL)这两句存在明显的逻辑错误。

2、你给出的只是部分代码,我不知道其它部分你是没发上来还是没写。

3、题目的详细描述你没说,我无法判断你这a、b、c数组的尺寸开的是否合适,以及题目所谓的内存不足该怎么理解。

主要因为你没有题目描述,所以我只能写一段示例,功能算法是没有问题的,输出格式等细节就不一定了。

程序代码:
#include <stdio.h>
#include <malloc.h>

int main()
{
    int n, r, c, a, *m, i, j, e;

    scanf("%d%d%d", &n, &r, &c);
    a = r * c;
    if(!(m = (int *)malloc(a * sizeof(int))))
    {
        puts("Not Enough Memory!");
        goto RET;
    }
    for(i = 0; i < a; scanf("%d", &m[i++]));

    while(--n && scanf("%d%d", &i, &j) && i == r && j == c)
    for(i = 0; i < a; scanf("%d", &e), m[i++] += e);

    if(n)
    {
        puts("Matrix Can't Add!");
        goto RET;
    }

    for(e = i = 0; i < r; i++, puts(""))
    for(printf("%d", m[e++]), j = 1; j < c; j++)
        printf(" %d", m[e++]);
    
RET:
    free(m);
    return 0;
}

重剑无锋,大巧不工
2014-12-28 14:40
liuyawen44
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-11-30
得分:0 
回复 楼主 liuyawen44
3、矩阵累加
描述:编程计算k个整型矩阵的累加,并输出结果。若给定的矩阵不能相加,则直接终止程序并输出"Matrix Can't Add!"。若计算机内存不足以计算给定矩阵的累加,则直接终止程序并输出"Not Enough Memory!"。
输入:第1行输入1个整数k,表示待累加矩阵的个数。
第2行输入2个整数,表示第1个矩阵的行数m1和列数n1。
第3行到第m1+2行顺次输入 m1*n1个整数,表示第1个矩阵的内容。
第m1+3行输入2个整数,表示第2个矩阵的行数m2和列数n2。
第m1+4行到第m1+m2+3行顺次输入m2*n2个整数,表示第二个矩阵的内容。
依次类推输入k个矩阵。
输出:按行列顺序输出矩阵C中的所有数据。
输入样例:
2   <---待累加的矩阵个数
2 2  <---第1个矩阵的行数和列数
3 4
5 6
2 2  <---第2个矩阵的行数和列数
1 2
4 5
输出样例:
4 6
9 11


这是详细描述,我代码发完了,不知 if(p=NULL) 有何逻辑错误,,请大神指教
2014-12-28 18:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440449-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.176779 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved