char(字符串)到整数

时间:2012-11-12 02:00:32

标签: c++

我想知道如何将一个数组比较为两个数组,但有一些规则: 在我的代码中,我需要键入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);
    }
}

3 个答案:

答案 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;
}