| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:请教一下大家。。。
只看楼主 加入收藏
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
请教一下大家。。。
我现在需要建立10*10以内的二维数组,里面的元素只有-1和1,并把这些二维数组存入文件中,并可以从该文件中读取出任意一个数组,请大家帮帮忙!例如2*2,2*3...2*10,3*2,3*3....3*10......10*2,10*3,....10*10,的二维数组。我并不是求作业,我也在写程序,但是在当中遇到的问题很多,我找不到解决方案,我写出了一部分程序,后面没办法写了,请计算机专业的大神们帮帮忙!谢谢了!忘了说了,我需要用c语言实现。
这是我的部分代码:#include<stdio.h>
#define M 2                        
#define N 2
int fun(int n,int a[])
{
int i, j, d;
int k=0;

    for(i = 0; i < (1<<n); i++)
{
    for(j = 1<<(n-1); j > 0; j /= 2)
a[k++]=!!(i&j);
}     
for(d = 0; d <k; d++)
{
    if(a[d]==0)
     a[d]=-1;
}
   
    return 0;
}

void main()
{ int s[64];
int j=0;
int n=100;
int  c[M][N];
FILE *fp = fopen("file4.txt", "a");
   
fun(n,s);
      
 for(int k=0; k<16; k++)
    {     
    for(int u=0; u<M; u++)
        {
            for(int v=0; v<N; v++)   
            {
                c[u][v]=s[j++];
                fprintf(fp,"%d ",c[u][v]);
            }
            fprintf(fp,"\n");
        }
    fprintf(fp,"\n");
 }
   fclose(fp);
}

[ 本帖最后由 风的飞扬0102 于 2014-5-1 11:00 编辑 ]
搜索更多相关主题的帖子: 计算机专业 解决方案 include c语言 
2014-05-01 10:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以前不是回复过你  关于2x2的有16组数据
使用了全排列   同理也可实现其他的维数

不知你还想问什么

DO IT YOURSELF !
2014-05-01 16:21
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 2 楼 wp231957
我想把她们写入文件,然后读出任意一个二维数组,我试了一下其他维数的,但不知道是不是数太大了,后面的数组写入不了文件,或者不全,或者程序终止。所以不知道怎么实现,我现在最想解决的是从txt文件中读出任意一个数组,希望可以得到大家的帮助,不好意思麻烦大家了,谢谢大家!
2014-05-01 16:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:15 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

#define SUBLEN 10
int idx=0;
/*
* 加1后进位操作
* 用字符串模拟数字的进位操作
*/
void add_one(int *array, int array_len, int radio, int *flow)
{
        int i;
        for ( i=array_len-1; i>=0; i-- )
        {
                array[i] += 1;
                //没有进位就退出
                if (array[i] < radio) return; else array[i] = 0;                       
        }
        // 最高位溢出 - 标志进位操作已经结束
        (*flow) = 1;
}

/*
* 获取全排列
*/
int get_pailie(int set[], int set_len, int sub_len, int out_len,int iout[])
{
        int  end_flag = 0;
        int *array    = NULL;
        int  i = 0;
        if ( NULL==set || out_len<sub_len ) return -1;
        if ( (array=(int *)malloc(sub_len * sizeof(int))) == NULL ) return -2;
        // 初始化整数集合为0
        for( i=0; i<sub_len; i++ )  array[i] = 0;
        while( 1 != end_flag )
        {
            for(i=0; i<sub_len; i++) iout[i+idx]=set[array[i]];// 输出结果的每一位与它对应的数的每一位相同
            idx+=SUBLEN;
            // 下标+1
            add_one(array, sub_len, set_len, &end_flag);
        }
        free(array);
        return 0;
}



int main()
{
    int   set[]={1,-1};
    int   set_len = 2;
    int   sub_len = SUBLEN;
    int   iout[1024*SUBLEN];   //把生成的1024*10组数据保存在一个一维数组中,你以后可以随意调用该数组的
    get_pailie(set, set_len, sub_len,sub_len,iout);
    //以下是输出这1024组数据至文件
    FILE* pfile = fopen ("d:\\123.txt", "w+" );    //新建一个文件 用于存放二维数组的
    char buf[5]={'\0'};
    for(int i=0;i<1024*SUBLEN;i++)
    {
        if(i>0 && i%SUBLEN==0)
        {
            sprintf(buf,"\n");
            fwrite(buf,sizeof(char),strlen(buf),pfile);
        }
        sprintf(buf,"%4d",iout[i]);
        fwrite(buf,sizeof(char),strlen(buf),pfile);
    }
    fclose(pfile);
    printf("\n");
    return 0;
}
这个是10维的例子,但是应该是1024*10  而不是10*10吧
这个是样例文件
123.rar (2.25 KB)

DO IT YOURSELF !
2014-05-01 17:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
至于读文件 我觉得怎么也比写文件要简单一些

DO IT YOURSELF !
2014-05-01 17:41
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:5 
例如2*2,2*3...2*10,3*2,3*3....3*10......10*2,10*3,....10*10,的二维数组。

这里,取出来的数据都是从原来二维数组的 [0][0]开始吗?
还是任意取一个矩形块,块是连在一起的,还是随意取数?
例如:
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

这里面取出来2x2的数组,是:
1 2
6 7

还是:
7  8   OR   14 15  OR  8  9
12 13       19 20      13 14
这样的矩形块

还是 随意抽出来不重复的四个数据?

哪一种情况?

未知令人期待!
2014-05-01 19:04
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 6 楼 神机军师
按块取出,例如txt文件里面存的是
-1 1
1  1
1  1
1  1
-1-1
-1-1
。。。。
-1-1-1
111

-1-11
11-1
。。。基本就是这样存储的
我想取出
-1 1
1  1或
-1-1
-1-1
这样相连在一起的两行。怎么任意取出两个二维数组呢?请帮忙想想,谢谢了!
2014-05-01 22:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
課題是不錯,可惜沒有說出自己的思考過程就求救。

授人以渔,不授人以鱼。
2014-05-01 23:13
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 7 楼 风的飞扬 0102
如果是按块取出来
如果就是想随机取出来,,就用rand函数。。。
如果是想找全排列 正好块都是紧挨着的 只需要想想左上的那个数据会取到哪个就好了~~
关于c语言文件的读写,有控制文件当前读写位置指针的函数~~你可以网上找找资料神马的

未知令人期待!
2014-05-03 00:01
风的飞扬0102
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-22
收藏
得分:0 
回复 9 楼 神机军师
谢谢了,我看看其他资料,非常感谢!
2014-05-03 12:59
快速回复:请教一下大家。。。
数据加载中...
 
   



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

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