Войти

Показать полную графическую версию : [решено] Помогите решить задачу по С++


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16

Irina20
08-07-2011, 11:30
Помогите написать программу на С++ Дано предложение, слова в котором разделены пробелами, а в конце стоит точка. Заменить порядок слов в предложении на обратный.

lxa85
10-07-2011, 21:05
Irina20, Задайся ограничением на предложение, символов в 150-200. Встречаются конечно предложения в бОльшее количество символов, но сочинить, прочитать и понять такую мысль за раз сложно.
Сделай массив слов символов по 25 штук 150, что для предложении в 200 символов - хватит с избытком.
Сделай отдельную процедуру выделения слов в предложении. От текущего символа до первого пробела или знака препинания.
Вышеназванной процедурой "нарежь" предложение на слова и "сложи" в массив.
Как только дойдешь до точки, распечатай массив слов в обратном порядке.

Drongo
11-07-2011, 11:29
Для затравки, используйте функцию strtok

Здесь типовый учебный пример использования разбивки. Перепрофилируйте только сохранение лексем в массив и вывод этого массива в обратном порядке.
//Строки, использование strtok
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;

#include <cstring.h>

int main()
{
char string[]="ETO PREDLOGENIE SODERGIT PYAT LEKSEM";
char *tokenPtr;
int z;

cout<<"STROKA RAZBIVAETSYA NA LEKSEMI:\n"<<string
<<"\n\nLEKSEMI: \n\n";

tokenPtr=strtok(string, " ");

while(tokenPtr != NULL){
cout<<tokenPtr<<'\n'; // Вместо вывода на экран, сохраняйте в массив.
tokenPtr=strtok(NULL, " ");
}
cin>>z;
return 0;
}
//---------------------------------------------------------------------------

Glamod
04-10-2011, 17:04
Доброго времени суток. Я столкнулся с проблемой для зачета мне надо написать Программу для смены имен окон,но я со всем не понимаю и мне грозят отчислением. Я даже не знаю точно можноли написать такую программу на С++
Прошу добрых людей помочь мне с этим делом и написать программу полностью по стандартам которые мне задал препад.
Условия:
1. Программа должна переименовать любое выборное окно. пример "Мой компьютер" на М-ой компьютер" или любой игры Предположим "GTA" на "G-TA" или, что то похожие.
2.При запуски программы должно выскакивать подобное окно с таким же текстом: http://i058.radikal.ru/1110/bb/f14bcef79b2c.png
Текст в окне: Название программы "Many windows" "Создатель Еремычев В.А" "Madness"
3. Нажав на кнопку Установить окно должно менять имя.
4. У программы должна быть такая иконка : http://s53.radikal.ru/i140/1110/b9/df1a5a707d41.png
Это все.

Я даже не могу предположить трудно написать данную программу или легко так как совсем не понимаю ничего.
Надеюсь на ваше понимание и доброту буду премного благодарен если вы сделаете данную программу и выложите ее сюда.
Народ правда нужна помощь =(

ferget
04-10-2011, 22:58
Я даже не знаю точно можноли написать такую программу на С++ »
можно

с помощью EnumWindows перебираете все окна

GetWindowText получаете заголовок

SetWindowText меняете заголовок

Glamod
04-10-2011, 23:11
Я ноль в C++ =(

Delirium
05-10-2011, 00:48
Spl1t, перед прочтением - съесть (http://forum.oszone.net/post-1608065-3.html). Для решения задач с нуля есть фрилансерские форумы.

Titanium
22-10-2011, 12:56
#include<windows.h>
#include<windef.h>
#include<winbase.h>
LRESULT WINAPI WindowProc(HWND, UINT message, WPARAM WParam, LPARAM LPARAM);
int WINAPI;
WinMain (HINSTSNCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine);
int nCmdShow;
{WNDCLASSEX WindowClass; //Структура для хранения отрибутов окна//
static LPCTSTR szApp Name=L"OFWin";//определяет класс окна//
HWND hWnd;//дискриптор окна//
MSG msg;//структура сообщения окна//
Window Size=sizeof(WNDCLASSEX);
WindowClass.style=CS_HREDRAW|CS_VREDRAW;//определить функцию обработчика окна//
Window Class.lpfn WndProc=Window Proc;
Window Class.cbClsExtra=0;//ни каких дополнительных байт в структуре//
Window Class.cbWndExtra=0;
Window Class.hInstance=hInstance;//установить пиктограмму приложения по умолчанию//
Window Class.hIcon=LoadIcon(0, IDI_APPLICATION);
//устанавливаем стандартный курсор вид стрелочки//
Window Class.hCursor=LoadCursor(0, IDC_ARROW);
//устанавливаем серую кистоку по умолчанию//
Window Class.hbrBackground=static..cast<HBrush>(GetStockObject(CRAY_BRUSH));
Window Class.lpszMenu Name=0;//нет меню//
Window Class.lpszClass Name=szAppName;
Window Class.hIconSm=0;//маленькая пиктограмма по умолчанию//
//регистрация класса окна//
Register ClassEx(&Window Class);
//создаем окно//
hWnd=Create Window;
szAppName,//имя класса окна//
"A Basic Window the Hard Way",
WS_OVERLAPPEDWINDOW,//cтиль окна перекрываемого//
CW_USEDEFAULT,//позиция окна по умолчанию//
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,//нет родительского окна//
0,//нет меню//
hInstance,//дискриптор экземпляра программ//
0
);//нет данных//
Show Window(hWnd,nCmd Show);
Update Window(hWnd);
//цикл сообщения//
while(GetMessage(&msg,0,0,0)==TRUE);
{
Translate Message(&msg)//трансляция сообщения//
Dicpatch Message(&msg);
}
return static_cast <int>(msg.wParam);
LRESULT WINAPI Window Proc(HWND, hWnd, UINT, message, WPARAM wParam, LPARAM lParam)
{
HDC hDS;//дискриптор экранного контекста//
PAINTSTRUCT Paint St;//структура рисования//
RECT aRect;
switch (message)
{
case WM_PAINT://сообщение для перерисовки окна//
hDC=Begin Panit(hWnd, &Panit St);//подготовка к перерисовки окна//
//получит верхнее левое и правое нижнее углы клиентской области//
Get Client Rect(hWnd, &fRect);
SetBkMode(hWnd, TRANSPARENT);
//отображение текста в клиентской области окна//
Draw Text(hDC; L"But, Soft! What light trough yonder Window breaks?",
-1,
&aRect,
DT_SINGLELINE|
DT_CENTER|
DT_VCENTER|//центрирование по высоте// aRect
);
End Paint(hWnd; &PaintSt)//завершение перерисовки окна//
return 0;
case WM_DESTORY;
Post Quit Nessage(0);
return 0;
default;
return Def Winndow Proc(hWnd, message, wParan, lParam);
}
}
}



Помогите, пожалуйста, найти здесь ошибки

lxa85
22-10-2011, 13:14
Помогите, пожалуйста, найти здесь ошибки »
В чем они заключаются?
Что пишет отладчик?
Что изначально хотелось получить?
Код принято оформлять тегом CODE - # и табуляцией. А то читать практически невозможно.

Titanium
22-10-2011, 15:28
Вообще преподаватель хотел сделать MFC без шаблона, когда набрали этот листинг он оказался нерабочим. Писали в Visual studio 2008, отладчик пишет, что не могу мол прочитать iostream.h, а если писать без него, то он выдает 37 ошибок.

LilLoco
22-10-2011, 15:41
Писали в Visual studio 2008, отладчик пишет, что не могу мол прочитать iostream.h »

После всех include написать нужно, вроде бы:
using namespace std;

Titanium
22-10-2011, 16:06
using namespace std;
Это тоже не помогает

LilLoco
22-10-2011, 16:15
А если так :

#include "iostream"
using namespace std;
???

Titanium
22-10-2011, 16:28
пишет 7 ошибок

ferget
23-10-2011, 22:23
что делать??? :help:

выложите код в нормальном виде

Titanium
24-10-2011, 13:33
#include<windows.h>
#include<windef.h>
#include<winbase.h>
LRESULT WINAPI WindowProc(HWND, UINT message, WPARAM WParam, LPARAM LPARAM);
int WINAPI;
WinMain (HINSTSNCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine);
int nCmdShow;
{WNDCLASSEX WindowClass; //Структура для хранения отрибутов окна//
static LPCTSTR szApp Name=L"OFWin";//определяет класс окна//
HWND hWnd;//дискриптор окна//
MSG msg;//структура сообщения окна//
Window Size=sizeof(WNDCLASSEX);
WindowClass.style=CS_HREDRAW|CS_VREDRAW;//определить функцию обработчика окна//
Window Class.lpfn WndProc=Window Proc;
Window Class.cbClsExtra=0;//ни каких дополнительных байт в структуре//
Window Class.cbWndExtra=0;
Window Class.hInstance=hInstance;//установить пиктограмму приложения по умолчанию//
Window Class.hIcon=LoadIcon(0, IDI_APPLICATION);
//устанавливаем стандартный курсор вид стрелочки//
Window Class.hCursor=LoadCursor(0, IDC_ARROW);
//устанавливаем серую кистоку по умолчанию//
Window Class.hbrBackground=static..cast<HBrush>(GetStockObject(CRAY_BRUSH));
Window Class.lpszMenu Name=0;//нет меню//
Window Class.lpszClass Name=szAppName;
Window Class.hIconSm=0;//маленькая пиктограмма по умолчанию//
//регистрация класса окна//
Register ClassEx(&Window Class);
//создаем окно//
hWnd=Create Window;
szAppName,//имя класса окна//
"A Basic Window the Hard Way",
WS_OVERLAPPEDWINDOW,//cтиль окна перекрываемого//
CW_USEDEFAULT,//позиция окна по умолчанию//
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,//нет родительского окна//
0,//нет меню//
hInstance,//дискриптор экземпляра программ//
0
);//нет данных//
Show Window(hWnd,nCmd Show);
Update Window(hWnd);
//цикл сообщения//
while(GetMessage(&msg,0,0,0)==TRUE);
{
Translate Message(&msg)//трансляция сообщения//
Dicpatch Message(&msg);
}
return static_cast <int>(msg.wParam);
LRESULT WINAPI Window Proc(HWND, hWnd, UINT, message, WPARAM wParam, LPARAM lParam)
{
HDC hDS;//дискриптор экранного контекста//
PAINTSTRUCT Paint St;//структура рисования//
RECT aRect;
switch (message)
{
case WM_PAINT://сообщение для перерисовки окна//
hDC=Begin Panit(hWnd, &Panit St);//подготовка к перерисовки окна//
//получит верхнее левое и правое нижнее углы клиентской области//
Get Client Rect(hWnd, &fRect);
SetBkMode(hWnd, TRANSPARENT);
//отображение текста в клиентской области окна//
Draw Text(hDC; L"But, Soft! What light trough yonder Window breaks?",
-1,
&aRect,
DT_SINGLELINE|
DT_CENTER|
DT_VCENTER|//центрирование по высоте// aRect
);
End Paint(hWnd; &PaintSt)//завершение перерисовки окна//
return 0;
case WM_DESTORY;
Post Quit Nessage(0);
return 0;
default;
return Def Winndow Proc(hWnd, message, wParan, lParam);
}
}
}

ferget
24-10-2011, 14:52
нормальный вид это тот который выдает 7 ошибок

а то, что вы написали выдаст намного больше

что это?


WindowClass.style=CS_HREDRAW|CS_VREDRAW;//определить функцию обработчика окна//
Window Class.lpfn WndProc=Window Proc;
Window Class.cbClsExtra=0;//ни каких дополнительных байт в структуре//
Window Class.cbWndExtra=0;

Titanium
24-10-2011, 14:56
это не я писал, я списывал с доски то, что написал преподаватель, а он писал именно так. Препод хотел типа как построить MFC без шаблона., просто чтобы окошко открылось

ferget
24-10-2011, 15:40
#include <windows.h>
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS w;
memset(&w,0,sizeof(WNDCLASS));
w.style = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc = WndProc;
w.hInstance = hInstance;
w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
w.lpszClassName = "My Class";
RegisterClass(&w);
hwnd = CreateWindow("My Class", "My title", WS_OVERLAPPEDWINDOW,
300, 200, 200, 180, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
switch (Message){
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wparam, lparam);
}
return 0;
}

Titanium
24-10-2011, 15:43
users\user\documents\visual studio 2008\projects\fdg\fdg\ghfg.cpp(17) : error C2440: =: невозможно преобразовать 'const char [9]' в 'LPCWSTR'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\user\documents\visual studio 2008\projects\fdg\fdg\ghfg.cpp(20) : error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из 'const char [9]' в 'LPCWSTR'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>Журнал построения был сохранен в "file://c:\Users\user\Documents\Visual Studio 2008\Projects\fdg\fdg\Debug\BuildLog.htm"
1>fdg - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Отладчик пишет это




© OSzone.net 2001-2012