Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с кодом с++

dtn den Ученик (173), на голосовании 5 месяцев назад
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <string>
#include <unordered_map>
#include <cmath>
#include <unordered_set>
#include <bitset>
int main() {
fstream file("C:\\Users\\Home\\Downloads\\24.txt");
if (! file.is _open()) {
cerr << "Fail(" << endl;
}
string s;
int k = 0;
vector<int> y;
int count = 0;
getline(file, s);
for (int i = 0; i < s.length(); i++) {
if ((s[i] == 'D' && k == 0)) {
count++;
k++;
}
else if ((s[i] != 'D' && k == 1)) {
count++;
}
else if ((s[i] != 'D' && k == 0)) {
count++;
}
else if (s[i] == 'D' && k == 1) {
k = 0;
y.push_back(count);
count = 0;
}
}
sort(y.begin(), y.end());
cout << y.front() << "\t" << y.back();
return 0;
}
крч это код под эту задач:Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых не более одной буквы D. в ответе должно быть 354(это точно) но у меня код выдает 320. не могу найти ошибку. прошу попытаться найти ошибку в проге и пояснить что да как и не надо писать что питон лучше или что тебе это не надо и т.п...
кстати вот код на питоне к этой задаче: f = open('24.txt')
a = f.readline().split('D')
m = 0
for i in range(len(a) - 1):
m = max(m,len(a[i])+len(a[i+1])+1)
print(m)
Дополнен 6 месяцев назад
h ttps://inf-ege. sdamgia.ru/problem? id=39253 ссылка на источник
Голосование за лучший ответ
Александр Искусственный Интеллект (301732) 6 месяцев назад
у тебя какая-то проблема с кодом
файл 24.txt тоже нужен чтобы понять где ты косячишь...
dtn denУченик (173) 6 месяцев назад
прикрепила источнмк на файл
Chudo_Chudnoe Мастер (2185) 6 месяцев назад
Попробуй его исполнить так:

 #include   
#include
#include
#include
#include

int main() {
std::fstream file("C:\\Users\\Home\\Downloads\\24.txt");
if (!file.is_open()) {
std::cerr << "Fail" << std::endl;
return 1;
}

std::string s;
getline(file, s);
file.close(); // Закываем файл после чтения строки

std::vector y;
int count = 0;
int k = 0;

for (int i = 0; i < s.length(); i++) {
if (s[i] == 'D') {
k++;
if (k > 1) {
y.push_back(count);
count = 1; // Начинаем новый счетчик с текущей 'D'
k = 1; // Сбрасываем k, так как текущая 'D' может быть началом следующего сегмента
}
} else {
count++;
}
}
// Добавляем последний сегмент, если он не был добавлен
y.push_back(count);

// Находим максимальный элемент в векторе
auto max_element = std::max_element(y.begin(), y.end());
if (max_element != y.end()) {
std::cout << *max_element << std::endl;
} else {
std::cout << "No valid segments found." << std::endl;
}

return 0;
}
И попробуй вот с таким 24.txt

 AABCDABCDABCDABCDDDABCDA 
dtn denУченик (173) 6 месяцев назад
нет ответ не получился тот что правильный(
Chudo_Chudnoe Мастер (2185) dtn den, покажи свой 24.txt
dtn denУченик (173) 6 месяцев назад
я не могу тут прикрепить файл но вы можете перейти и скачать файл по ссылке что указана как дополнение к вопросу
Похожие вопросы