0

我想知道如何将一个数组与两个数组进行比较,但有一些规则:在我的代码中,我需要输入 8 位数字来进行循环 - 好的,我做到了。现在我需要比较array = m[3]两个不同的数组:

第一个数组必须与(if m[i]%2==0) ...

第二个数组必须与(if m[i]%2!=0) ...

因此,如果我从键盘键入 Main 数组中的那三行(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);
    }
}
4

3 回答 3

1

据我了解,您正在尝试将三个正整数读入一个名为 的数组m中,但您要确保以下内容:

  • 所有三个数字都有八位数字
  • 第一个数字 ( m[0]) 是偶数
  • 第二个数字 ( m[1]) 是奇数

如果m可以是整数数组会容易得多,那么不需要从字符串转换为整数。要从控制台读取三个整数,请使用以下命令:

// 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;
于 2012-11-12T02:35:13.287 回答
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];
}
于 2012-11-12T02:30:31.170 回答
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;
}
于 2012-11-12T02:33:10.477 回答