gpt4 book ai didi

c++ - spoj STRHH,无法找到错误。为什么开头多了 "endl"

转载 作者:行者123 更新时间:2023-11-30 03:41:06 28 4
gpt4 key购买 nike

spoj question .unable to find error in solution. pls help

给定一个 2*k 个字符的序列,请从序列的前半部分开始每隔一个字符打印一次。从第一个字符开始打印。

输入在输入的第一行中,您将得到正整数 t (1<=t<=100) - 测试用例的数量。在接下来的 t 行中,你将得到一个 2*k (1<=k<=100) 个字符的序列。

输出对于每个测试用例,请打印给定序列前半部分的每隔一个字符(第一个字符应该出现)。

Input: 4 your progress is noticeable

Output: y po i ntc

my solution getting "extra space" hence wrong result

#include<iostream>
#include<string>
using namespace std;

void halfHalf(string ch){
int size=ch.size();
for(int i=0;i<size/2;i+=2){
cout<<ch[i];
}
cout<<endl;
}

int main() {
string name[50];
int numLine,i(0);
cin>>numLine;

while(i<=numLine){
getline(cin,name[i]);
halfHalf(name[i]);
i++;
}
return 0;
}

enter image description here enter image description here

最佳答案

你需要cin.ignore()读取第一个整数后。这对我有用

#include <bits/stdc++.h>
using namespace std;

int main() {
int T;
cin >> T;
cin.ignore();
while (T--) {
string s;
getline(cin, s);
for (int i = 0; i * 2 < s.size(); i += 2)
cout << s[i];
cout << endl;
}
return 0;
}

DEMO

This answer应该有用。它引用

If you're using getline after cin >> something, you need to flush the newline out of the buffer in between.

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

关于c++ - spoj STRHH,无法找到错误。为什么开头多了 "endl",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37539522/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com