版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(522)
>
虫友互识
(79)
>
论文道贺祈福
(13)
>
考研
(12)
>
教师之家
(10)
>
博后之家
(9)
>
硕博家园
(9)
>
论文投稿
(9)
>
基金申请
(8)
>
公派出国
(7)
>
导师招生
(6)
>
休闲灌水
(6)
>
考博
(5)
>
找工作
(5)
>
招聘信息布告栏
(2)
>
文献求助
(2)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
C/C++
»
c++/c 求助关于多维数组里改变一个区域值
6
1/1
返回列表
查看: 1003 | 回复: 5
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
lbws328
新虫
(小有名气)
应助: 0
(幼儿园)
金币: 430.4
红花: 1
帖子: 134
在线: 58小时
虫号: 1729753
注册: 2012-03-31
专业: 金属材料的微观结构
[
求助
]
c++/c 求助关于多维数组里改变一个区域值
已有2人参与
如何用c++ 把数组里一个区域内得6个相邻的1变成0, 大于6个相邻的1不变。看图片
求大神给代码或思路,不要太难水平有限。。。
原始数据
相邻6个1变为0
回复此楼
» 猜你喜欢
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有6人回复
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
1楼
2017-08-18 09:32:43
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
Mr__Right
专家顾问
(著名写手)
专家经验: +31
应助: 317
(大学生)
金币: 14456.3
散金: 500
红花: 54
帖子: 2716
在线: 950.6小时
虫号: 1972612
注册: 2012-09-04
性别: GG
专业: 应用数学方法
管辖:
程序语言
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与
2017-08-18 12:59:26
lbws328: 金币+150,
★
有帮助
2017-08-23 10:09:46
首先你要识数,那是一共9个,相邻的是8个。
然后,找到中心位置指标,
[i,j]
然后,根据指标增减的2^3=8种排列组合,全部赋值为0
赞
一下
(2人)
回复此楼
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
2楼
2017-08-18 11:00:47
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
imyourkobe
铁杆木虫
(著名写手)
应助: 26
(小学生)
贵宾: 0.126
金币: 7471
散金: 6
红花: 9
沙发: 3
帖子: 1688
在线: 458.9小时
虫号: 183723
注册: 2006-02-13
专业: 计算机软件
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
lbws328: 金币+150,
★
有帮助
2017-08-23 10:09:58
很容易的。用二维数组或容器来存储数据,写一个简单的算法判断六个连续的数据为1的个数累加。满足则修改。不满足继续判断下一组。
赞
一下
(1人)
回复此楼
3楼
2017-08-18 21:50:25
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
lbws328
新虫
(小有名气)
应助: 0
(幼儿园)
金币: 430.4
红花: 1
帖子: 134
在线: 58小时
虫号: 1729753
注册: 2012-03-31
专业: 金属材料的微观结构
引用回帖:
2楼
:
Originally posted by
Mr__Right
at 2017-08-18 11:00:47
首先你要识数,那是一共9个,相邻的是8个。
然后,找到中心位置指标,
然后,根据指标增减的2^3=8种排列组合,全部赋值为0
抱歉是我没说明白,我想问得是这连续9个值 *(形状不规则有3*3 还有2*3 各种各样)
从第一个1开始计算为1 第二个1为2第三个1为3 换行然后是4,5,6,换行,7,8,9
这样 小于等于9的,前面1,2,3,4,5,6,7,8,9全为0,大于9的值不变,我现在是 小于等于9的,前面1,2,3,4,5,6,7,8,9全为0这里不知道怎么办,求解答
赞
一下
回复此楼
4楼
2017-08-23 10:15:38
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
lbws328
新虫
(小有名气)
应助: 0
(幼儿园)
金币: 430.4
红花: 1
帖子: 134
在线: 58小时
虫号: 1729753
注册: 2012-03-31
专业: 金属材料的微观结构
引用回帖:
3楼
:
Originally posted by
imyourkobe
at 2017-08-18 21:50:25
很容易的。用二维数组或容器来存储数据,写一个简单的算法判断六个连续的数据为1的个数累加。满足则修改。不满足继续判断下一组。
抱歉是我没说明白,我想问得是这连续9个值 *(形状不规则有3*3 还有2*3 各种各样)
从第一个1开始计算为1 第二个1为2第三个1为3 换行然后是4,5,6,换行,7,8,9
这样 小于等于9的,前面1,2,3,4,5,6,7,8,9全为0,大于9的值不变,我现在是 小于等于9的,前面1,2,3,4,5,6,7,8,9全为0这里不知道怎么办,
赞
一下
回复此楼
5楼
2017-08-23 10:18:52
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
lbws328
新虫
(小有名气)
应助: 0
(幼儿园)
金币: 430.4
红花: 1
帖子: 134
在线: 58小时
虫号: 1729753
注册: 2012-03-31
专业: 金属材料的微观结构
引用回帖:
2楼
:
Originally posted by
Mr__Right
at 2017-08-18 11:00:47
首先你要识数,那是一共9个,相邻的是8个。
然后,找到中心位置指标,
然后,根据指标增减的2^3=8种排列组合,全部赋值为0
CODE:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <fstream>
#include <string>
#include <iostream>
#include <vector>
using namespace std;
struct Location {
double fai;
int *grain_number;
}num[1000000];
#define seed 40000 //粒子个数
bool main(){
int grain_num[seed], correction_num[seed], grain_size[seed],
divided_grain_count[seed], div_area,
grain_count, grain_sum, divided_grain_sum, cut_off,
grain_size_distribution[seed], max_grain_size, div_distribution;
double boundary_line, boundary_line1, boundary_line2;
int count, count2, meshx, meshy, meshX, meshY;
char fname[100];
FILE *datin0;
// 初期化
grain_count = 0, count2 = 0, grain_sum = 0, divided_grain_sum = 0, count = 0;
max_grain_size = 0;
for (int i = 0; i < seed; i++){
grain_num[i] = i;
correction_num[i] = i;
grain_size[i] = -1;
divided_grain_count[i] = -1;
grain_size_distribution[i] = 0;
}
// 指定文件夹和保存
char* file_name("C:\\testp.loc");
ofstream fout1("save1.xls");
ofstream fout2("save2.xls");
ofstream fout3("save3.xls");
ofstream fout4("save4.xls");
ofstream fout5("save5.xls");
boundary_line = 0.4; // 判断数值大小
cut_off = 0; // cut_off以下的不计算
// 边界设定
meshx = 1200;
meshy = 150;
meshX = meshx + 2; meshY = meshy + 2;
// 打开文件夹
std::ifstream fin;
fin.open(file_name, std::ios::in);
// 文件夹确认
if (!fin){
std::cout << " file open error! " << "\n";
return false;
}
if (!fout1){
cerr << "open error!" << endl;
exit(1);
}
if (!fout2){
cerr << "open error!" << endl;
exit(1);
}
if (!fout3){
cerr << "open error!" << endl;
exit(1);
}
if (!fout4){
cerr << "open error!" << endl;
exit(1);
}
if (!fout5){
cerr << "open error!" << endl;
exit(1);
}
//读入粒子
for (int i = 0; i<meshY; i++){
for (int j = 0; j<meshX; j++){
if (i <= 0 || i >= meshY - 1 || j <= 0 || j >= meshX - 1){
num[count].fai = 0;
count++;
continue;
}
else{
fin >> num[count].fai;
count++;
}
}
}
// 判断数值大小大于0.4等于1小于0.4等于0
count = 0;
for (int i = 0; i<meshY; i++){
for (int j = 0; j<meshX; j++){
if (num[count].fai < boundary_line)
{
num[count].fai = 0;
}
else{
num[count].fai = 1;
}
fout1 << num[count].fai << " ";
count++;
}
fout1 << endl;
}
// grain_number
count = 0;
for (int i = 0; i<meshY; i++){
for (int j = 0; j<meshX; j++){
if (i == 0 || i == meshY - 1 || j == 0 || j == meshX - 1){
num[count].grain_number = &grain_num[0];
count++;
continue;
}
else{
if (j == 1){
grain_count++;
}
num[count].grain_number = &grain_num[grain_count];
if (i > 1 && num[count - meshX].fai == 1. && num[count].fai == 1.){
grain_num[grain_count] = *num[count - meshX].grain_number;
}
if (num[count].fai == 0){
num[count].grain_number = &grain_num[0];
if (num[count + 1].fai == 1 && j>2 && j<meshX - 2){
grain_count++;
}
}
count++;
}
fout2 << num[count].grain_number << " "; //号码赋值
//cout << grain_count << " ";
}
fout2 << endl;
}
count = 0;
for (int i = 0; i<10; i++){
for (int j = 0; j<meshX; j++){
if (i == 0 || i == meshY - 1 || j == 0 || j == meshX - 1){
count++;
continue;
}
else{
if (num[count - meshX].fai == 1 && num[count].fai == 1){ //上下值为1 有phase
if (*num[count].grain_number < *num[count - meshX].grain_number){ //如果下面番号小于上面的番号
correction_num[*num[count - meshX].grain_number] = *num[count].grain_number;//把*num[count].grain_number的值赋给correction_num[*num[count - meshX].grain_number]
}
else{
correction_num[*num[count].grain_number] = *num[count - meshX].grain_number;//否则*num[count - meshX].grain_number赋给correction_num[*num[count].grain_number]
}
}
count++;
}
fout3 << *num[count].grain_number << " ";
}
fout3 << endl;
}
// 计算grain_size粒径大小
count = 0;
for (int i = 0; i<meshY; i++){
for (int j = 0; j<meshX; j++){
if (i == 0 || i == meshY - 1 || j == 0 || j == meshX - 1){
count++;
continue;
}
else{
grain_size[*num[count].grain_number] += 1;
count++;
}
fout4 << grain_size[*num[count].grain_number] << " ";
}
fout4 << endl;
}
//这里插入粒径长度小于9的小于等于0 大于9的值不变
// grain_sum 计算个数
count = 1;
while (count<seed){
if (grain_size[count] > cut_off){
grain_sum++;
if (grain_size[count] > max_grain_size){
max_grain_size = grain_size[count];
std::cout << "max = " << max_grain_size << "\n";
}
}
count++;
}
}
赞
一下
回复此楼
6楼
2017-08-23 10:19:55
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
lbws328
的主题更新
6
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定