Помогите, я не могу найти ошибку уже очень давно!
#include "head.h"
void main(){
setlocale(LC_ALL,"rus");
TCHAR str[100];
int n, len, k, kol, kolStrok = 0;
do{
cout << L"Номер строки, которую нужно преобразовать: ";
cin >> k;
cout << L"Введите строку: ";
wcin >> str;
cout << L"Количество буквенных латинских подстрок, которые удалось переставить в обратном порядке: " << kol
<< endl
<< L"Адрес строки: " << reversK(str, k, kol) << endl;
if (kol > 0)
kolStrok++;
cout << L"Количество измененных строк: " << kolStrok << endl;
cout << endl << L"Повторить решение? (1 - да, 0 - нет): ";
cin >> n;
}while(n != 0);
}
#include "head.h"
void revers(TCHAR* str, int n){
TCHAR hold;
int i, j;
TCHAR* p1 = str;
for (i=0, j = n - 1; i < j; i++, j--){
hold = *(str + j);
*(str + j) = *(str + i);
*(str + i) = hold;
}
}
TCHAR* strAlfa(TCHAR* str, int& len) {
len=0;
//Поиск начала первой буквенной подстроки
for (;!isAlfa(*str) && *str; str++);
// Проверка на наличие буквенной подстроки
if (*str==0)
return 0;
TCHAR* p = str;
//Вычисление длины первой буквенной подстроки
for (; isAlfa(*str); str++, len++);
return p;
}
int isAlfa (TCHAR s){
if (s>='a' && s<='z' || s>='A' && s<='Z'|| s>='а' && s<='я' || s>='А' && s<='Я')
return 1;
return 0;
}
TCHAR* reversK(TCHAR* str, int k , int& kol){
int len;
TCHAR* nextPart = str;
kol = 0;
int i = 1;
for(int i = 1; nextPart = (strAlfa(nextPart, len)); i++, nextPart+=len){
if(i % k == 0){
revers(nextPart, len);
kol++;
}
}
return ((kol > 0) ? nextPart : 0);
}
#ifndef head_H
#define head_H
#include <iostream>
#include<string.h>
using namespace std;
#ifdef UNICODE
#define TCHAR wchar_t
#define TEXT(p) L##p
#define ostream wostream
#define fstream wfstream
#define cout wcout
#define cin wcin
#define setlocale _wsetlocale
#define strcpy wcscpy
#define strcmp wcscmp
#else
#define TCHARchar
#define TEXT(p) p
#endif
int isAlfa (TCHAR s);
TCHAR* strAlfa(TCHAR* str, int& len);
void revers(TCHAR* str, int n);
TCHAR* reversK(TCHAR* str, int k , int& kol);
#endif
я точно сказать не могу, но очень настораживает следующее:
TCHAR* strAlfa(TCHAR* str, int& len) {
...
if (*str==0)
return 0; // может вернуть 0
...
}
TCHAR* reversK(TCHAR* str, int k , int& kol){
...
for(int i = 1; nextPart = (strAlfa(nextPart, len)); i++, nextPart+=len){
...
return ((kol > 0) ? nextPart : 0); // т.е. тоже может вернуть 0!
}
и наконец в main()
cout << L"Количество буквенных латинских подстрок, которые удалось переставить в обратном порядке: " << kol
<< endl
<< L"Адрес строки: " << reversK(str, k, kol) << endl;
я не уверен что << reversK(str, k, kol)
адекватно сможет вывести строку с адреса "0". Возможно тут бага порылась.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не знаю как решить ? Можете сказать как можно решить эту задачу ?
В своем проекте пытаюсь реализовать подобие механизма async/await операций на Qt c использование QEventLoopПриведу простейший пример окна с одной кнопкой,...
Разработать метод-член класса для нового файла, содержащего
Доброго дня! Есть где-нибудь в доступе готовый натренированный, например на twitter или дрсоцсетях, файл word2vec с векторами?