我想知道如何将一个数组比较为两个数组,但有一些规则:
在我的代码中,我需要键入8位数字来进行循环 - 好吧,我做到了。现在我需要将array = m[3]
与两个不同的数组进行比较:
第一个数组必须是(if m[i]%2==0) ...
第二个数组必须是(if m[i]%2!=0) ...
因此,如果我从键盘输入主数组(m[3])
中的那三行:
12345678
12345689
12344331
输入后,我需要设置这两个不同的数组,在这里我想我需要char(string)
到integer
来检查%
,或者不知怎的,只检查最后一个数字(它将以相同的方式工作)。
因此,在键入3行后,下一步是:
arrA=12345678
arrB=12345689 12344331
#include <iostream>
#include <conio.h>
#include <string>
#include <cstdlib>
#include <stdlib.h>
using namespace std;
int main()
{
int i,n;
char m[3];
for(i=1; i<=3; i++)
{
cout<<i<<". Fak nomer: "<<endl;
do
{
cin>>m[i];
gets(m);
}
while (strlen(m)!=7);
cout<<"As integer: "<<atoi(m);
}
}
答案 0 :(得分:1)
根据我的理解,您试图将三个正整数读入一个名为m
的数组中,但您要确保以下内容:
m[0]
)甚至是m[1]
)是奇数如果m
可以是整数数组,则会更容易,然后不需要从字符串到int的转换。要从控制台读取三个整数,请使用:
// m is now an array of integers
int m[3];
// loops from m[0] to m[2]
for(int i = 0; i < 3; i++)
{
cout<<i<<": "<<endl;
do
{
cin>>m[i];
}
while (!(m[i] >= 1e7 && m[i] < 1e8));
// m[i] must be greater than or equal to 10000000 and less than 100000000
// before continuing
}
通过使m
成为一个整数数组,检查偶数或奇数会变得更容易:
if (m[0] % 2 == 0)
cout << "m[0] is even" << endl;
if (m[1] % 2 != 0)
cout << "m[1] is odd" << endl;
答案 1 :(得分:0)
不确定我是否理解你的问题,但为什么不改变
char* m[3];
到
int m[3];
你可能想要重做循环
int m[3];
for(i=0; i<3; i++)
{
cout<<i+1<<". Fak nomer: "<<endl;
cin>>m[i];
while (m[i] < 1000000 || m[i] >9999999)
{
cout<<"number is less/more than 7 digits. Try again:"<<endl;
cin>>m[i];
}
cout<<"As integer: "<< m[i];
}
答案 2 :(得分:0)
很难准确理解你想要实现的目标。
如果我理解正确,你试图从用户那里获得3个7个字符的输入字符串(整数),然后依次检查第一个字符串的每个整数与其他2个字符串中的相同位置字符?
#include <iostream>
#include <string>
int main()
{
std::string m[3];
for(int i = 0; i < 3; ++i)
{
std::cout << i + 1 << ". Fak nomer: "<< std::endl;
do
{
std::cin >> m[i];
}
while (m[i].size() != 7);
}
// we have enforced each string to be 7 characters long, check each character in turn
for(int i = 0; i < 7; ++i)
{
// get the i'th character of each string, and subtract the ascii '0' character to convert to an integer
int a1 = m[0][i] - '0';
int a2 = m[1][i] - '0';
int a3 = m[2][i] - '0';
std::cout << "checking " << a1 << " against " << a2 << " and " << a3 << std::endl;
if (a1 % a2 == 0)
std::cout << a1 << " % " << a2 << " == 0" << std::endl;
if (a1 % a3 != 0)
std::cout << a1 << " % " << a3 << " != 0" << std::endl;
}
return 0;
}