从字符串中提取整数
Extract integer from string
我是C 字符串和向量的新手,想知道该代码的问题是什么,我获得了字符串的向量输入,形式为" A/B C/d",必须在" e/f"中打印一个向量,以a,b,c,d为整数,而e/f的分数形式减少。请提供帮助,因为我想正确地学习字符串的概念,然后从C
转移到C vector< string > reducedFractionSums(vector < string > expressions) { int a[4]={0,0,0,0}; vector < string > results;
vector < string > results;
for(int i=0;i<expressions.size();i++){
int tmp=0;
int count=0;
for(int j=0;j<expressions[i].length();j++){
if(isdigit(expressions[i][j])){
tmp=expressions[i][j];
tmp=tmp-48;
a[count]=a[count]*10 + tmp;
}
else
count++;
}
int min=a[0];
for(int i=1;i<4;i++){
if(a[i]<min){
min=a[i];
}
}
int e,f,g=1; //g for GreatestCommonDivisor
f=a[1]*a[3];
e=(a[0]*a[3])+(a[2]*a[1]);
for(int i=1;i<=min;i++){
if(e%i==0 && f%i==0){
g=i;
}
}
e=e/g;
f=f/g;
results.push_back(e + "/" + f);
}
return results;
}
int main(){
vector < string > input;
vector < string > output;
int t;
cin>>t;
while(t--){
string s;
cin>>s;
input.push_back(s);
}
output=reducedFractionSums(input);
for(int i = 0;i<output.size();i++){
cout<<output.at(i);
}
return 1;
}
使用 std::stoi
从字符串, std::to_string
转换单个整数以将整数转换为字符串和 __gcd
,以计算algorithm
标头文件中定义的GCD,以查找还原形式的形式分数。
#include <bits/stdc++.h>
using namespace std;
vector<int>reduced_fraction(vector<int>v) // Function to find reduced fraction form
{
int num = v[0]*v[3]+v[1]*v[2]; // numerator = a*d+b*c
int den = v[1]*v[3]; // denominator = b*d
int gcd = __gcd(num,den); // gcd = gcd(greatest common divisor) of numerator and denominator
num/=gcd; // num/den = e/f(reduced fraction)
den/=gcd;
vector<int>frac;
frac.push_back(num);
frac.push_back(den);
return frac;
}
int main() {
string s,st;
vector<string>fr; // vector to store strings of form a/b+c/d
int n=2; //Number of Strings
for(int i=0;i<n;i++)
{
cin>>s;
fr.push_back(s);
}
for(int i=0;i<n;i++)
{
s=fr[i];
vector <int>v,red_frac;
while(s.compare("")!=0)
{
if(s.at(0)=='/' || s.at(0)=='+')
s.erase(0,1);
else
{
st=to_string(stoi(s)); // fetch integer from string
v.push_back(stoi(s));
s=s.erase(0,st.length()); // remove integer from string
}
}
red_frac=reduced_fraction(v); // red_frac->reduced fraction
cout<<red_frac[0]<<"/"<<red_frac[1]<<endl;
}
return 0;
}
Input:
14/2+9/6
8/4+5/4
Output:
17/2
13/4
IDEONE链接
相关文章:
- 从字符串中提取整数并形成一个数组
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 从没有空格的字符串中提取整数
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 如何将ASCII数字转换为从文件中提取的整数
- 如何从字符串格式中提取 3 个整数"v%d.%d.%d"?
- C++从字符串中提取整数
- 从QString中提取整数
- 如何提取字符串中的整数?
- 从字符串中提取整数
- Systemc传输级建模从TLM_Generic_Payload提取两个整数
- 使用C 从定界线拆分字符串中提取整数数组
- 从用户输入中提取整数的枚举开关语句
- C++ 提取具有多个分隔符的字符串中的整数
- 如何从整数中提取缺失的数字
- 如何从两个字符之间的文件中提取整数
- C++ - 从整数数组中插入和提取字符
- 从字符串中提取整数
- C++,从字符数组中提取有符号的多位数整数
- 使用增强精神提取未阐明的字符串和整数