Зачем вам getch, одумайтесь, люди! Есть же cin.get() который делает то же самое!!! Code: #include <iostream> using namespace std; int main() { cout << "Hello\n"; cin.get(); return 0; } И всё!
жжете) Code: #include <iostream> #include <windows.h> using namespace std; int main() { cout << "PreweDD\n"; system("PAUSE"); return 0; }
Положение курсора показывается в статусбаре внизу, там можно узнать номер строки. А так чтобы прямо нумерация - не знаю, скорее всего нельзя.
[D1mka] Tools -> Options -> Text Editor -> C/C++ -> General -> на вкладке Display поставь галочку у Line Numbers.
плохо искал Code: #include "proc.h" CIORedirection::CIORedirection() { ZeroFields(); wait = 60000; } CIORedirection::~CIORedirection() { Close(); } CIORedirection::CIORedirection(const CIORedirection&) { } void CIORedirection::operator = (const CIORedirection&) { } void CIORedirection::ZeroFields() { m_hNewStdIn = m_hNewStdOut = m_hReadStdOut = m_hWriteStdIn = NULL; ::ZeroMemory((void*)&m_processInfo, sizeof(PROCESS_INFORMATION)); ::ZeroMemory((void*)&m_startupInfo, sizeof(STARTUPINFO)); ::ZeroMemory((void*)&m_secAttributes, sizeof(SECURITY_ATTRIBUTES)); ::ZeroMemory((void*)&m_secDescriptor, sizeof(SECURITY_DESCRIPTOR)); } BOOL CIORedirection::IsWinNT() { OSVERSIONINFO osverinfo; osverinfo.dwOSVersionInfoSize = sizeof(osverinfo); ::GetVersionEx(&osverinfo); return (osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT); } void CIORedirection::InitSecurity() { if (IsWinNT()) { ::InitializeSecurityDescriptor(&m_secDescriptor, SECURITY_DESCRIPTOR_REVISION); ::SetSecurityDescriptorDacl(&m_secDescriptor, TRUE, NULL, FALSE); m_secAttributes.lpSecurityDescriptor = &m_secDescriptor; } else m_secAttributes.lpSecurityDescriptor = NULL; m_secAttributes.nLength = sizeof(SECURITY_ATTRIBUTES); m_secAttributes.bInheritHandle = TRUE; } void CIORedirection::Create(const char *pAppName, char *pCmdLine, char *CurrentDirectory) { if (m_processInfo.hProcess) return; InitSecurity(); if (!::CreatePipe(&m_hNewStdIn, &m_hWriteStdIn, &m_secAttributes, 0)) return; if (!::CreatePipe(&m_hReadStdOut, &m_hNewStdOut, &m_secAttributes, 0)) { CloseHandle(m_hNewStdIn); CloseHandle(m_hWriteStdIn); return; } ::GetStartupInfo(&m_startupInfo); m_startupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; m_startupInfo.wShowWindow = SW_HIDE; m_startupInfo.hStdOutput = m_hNewStdOut; m_startupInfo.hStdError = m_hNewStdOut; m_startupInfo.hStdInput = m_hNewStdIn; if (!::CreateProcess(pAppName, pCmdLine, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, CurrentDirectory, &m_startupInfo, &m_processInfo)) { Close(); return; } WaitForSingleObject(m_processInfo.hProcess, wait); } DWORD CIORedirection::GetExitCode() const { DWORD dwExitCode = 0; GetExitCodeProcess(m_processInfo.hProcess, &dwExitCode); return dwExitCode; } void CIORedirection::Terminate() { DWORD dwExitCode = GetExitCode(); TerminateProcess(m_processInfo.hProcess, dwExitCode); } void CIORedirection::Close() { if (GetExitCode() == STILL_ACTIVE) Terminate(); if (m_processInfo.hProcess) { ::CloseHandle(m_processInfo.hThread); ::CloseHandle(m_processInfo.hProcess); } if (m_hNewStdIn) ::CloseHandle(m_hNewStdIn); if (m_hNewStdOut) ::CloseHandle(m_hNewStdOut); if (m_hReadStdOut) ::CloseHandle(m_hReadStdOut); if (m_hWriteStdIn) ::CloseHandle(m_hWriteStdIn); ZeroFields(); } BOOL CIORedirection::Read(char *lpBuf, DWORD dwBufSize, DWORD *pBytesRead) { unsigned long avail; BOOL bRes = ::PeekNamedPipe(m_hReadStdOut,lpBuf,dwBufSize,pBytesRead,&avail,NULL); if (!bRes) return FALSE; if (*pBytesRead != 0) { bRes = ::ReadFile(m_hReadStdOut,lpBuf,dwBufSize,pBytesRead,NULL); } return bRes; } BOOL CIORedirection::Write(const char *lpBuf, DWORD dwBufSize, DWORD *pBytesRead) { WriteFile(m_hWriteStdIn, lpBuf, dwBufSize, pBytesRead, NULL); Read((char *)lpBuf, dwBufSize, pBytesRead); return (::WriteFile(m_hWriteStdIn, "\n", dwBufSize, pBytesRead, NULL)); } void CIORedirection::SetWait(int milliseconds) { wait = milliseconds; } int FileExists(char *directory, char *filename) { WIN32_FIND_DATAA dataFind; HANDLE hFind; hFind = FindFirstFileA(filename, &dataFind); if(hFind == INVALID_HANDLE_VALUE) { char abs_path[MAX_PATH]; if(directory[strlen(directory)-1] == '\\') sprintf(abs_path, "%s%s", directory, filename); else sprintf(abs_path, "%s\\%s", directory, filename); hFind = FindFirstFileA(abs_path, &dataFind); if(hFind == INVALID_HANDLE_VALUE) { if(strlen(filename) == 3 && filename[1] == ':') { DWORD uDrive = toupper(filename[0]) - 'A'; uDrive = 1 << uDrive; if(GetLogicalDrives() & uDrive) return 1; else return 0; } else return 0; } FindClose(hFind); return 2; } FindClose(hFind); return 1; } CMD::CMD() { GetCurrentDirectoryA(MAX_PATH, cur_dir); sys_env = (char *)malloc(2000); memset(sys_env, 0, 2000); GetEnvironmentVariableA("Path", sys_env, 2000); env_pos = strlen(sys_env); sys_env[env_pos] = ';'; memcpy(sys_env+env_pos+1, cur_dir, strlen(cur_dir)); SetEnvironmentVariableA("Path", sys_env); } void CMD::SetWait(int milliseconds) { console.SetWait(milliseconds); } void CMD::Exec(char *command, char *outbuf, int bufsize) { if(!memcmp(command, "cd ", 3)) { char buffer[MAX_PATH+3]; int offset = 0, len, res; strcpy(buffer, command); offset = 3; if(buffer[offset] == '"') offset++; len = strlen(buffer)-1; if(buffer[len] == '"') { buffer[len] = 0; len--; } if(buffer[len] == '\\' && buffer[len-1] != ':') buffer[len] = 0; res = FileExists(cur_dir, &buffer[offset]); if(!res) goto m1; if(res == 1) strcpy(cur_dir, &buffer[offset]); else if(res == 2) { strcat(cur_dir, "\\"); strcat(cur_dir, &buffer[offset]); } sys_env[env_pos+1] = 0; strcat(sys_env, cur_dir); SetEnvironmentVariableA("Path", sys_env); goto m1; } char filename[MAX_PATH]; GetSystemDirectory(filename, MAX_PATH); sprintf(filename, "%s\\cmd.exe /c %s", filename, command); console.Create(0, filename, cur_dir); console.Read(outbuf, bufsize, (DWORD *)&bufsize); console.Close(); outbuf += bufsize; m1: sprintf(outbuf, "%s>", cur_dir); } юзать примерно так: Code: char buffer[10000]; memset(buffer, 0, sizeof(buffer); cmd.Exec("dir", buffer, sizeof(buffer)); в buffer будет результат выполнения команды. собсна вставляешь вместо "dir" путь к консольной проге и в путь
Имеется символьный массив содержащий сточку "Иванов Иван Иванович" Пользователь вводит "Иван" и выполняется поиск этого слова в исходной фразе, и если слово там найдено об этом сообщается пользователю. Собственно как этот поиск реализовать? Может есть какая-нибудь функция для работы со строками подходящая под этот пример? Сделал на лабе все проверки в циклах - препод сказал мол сильно громоздко =(
Для символов есть стандартный контейнер - string, надо написать #include <string>. Потом просто используешь стандартный метод find для поиска подстроки. Подробности смотри тут
вот по быстрому набросал. Code: #include<stdio.h> #include<string.h> int main(int argc , char *argv[]) { char src[] = "Jack Test Ivanov Mihail"; char *pch; pch = strtok(src ," "); while(1) { pch = strtok( NULL , " " ); if(pch == NULL) { break; } if( !strcmp(pch , "Test") ) { printf("Found!\n"); break; } } return 0; }
Почему он не правильно вычисляет t1 и t2? Code: # include <stdio.h> # include <math.h> int main() { float a; float b; float c; float d; float t; float t1; float t2; float x1; float x2; float x1t1; float x2t1; float x1t2; float x2t2; printf("Enter a, please: "); scanf("%f", &a); printf("Enter b, please: "); scanf("%f", &b); printf("Enter c, please: "); scanf("%f", &c); d=pow(b,2)+4*a*c; if (d<0) { printf("D<0 => this equation has not radicals"); } else if (d=0) { t=-b/2*a; if (t<0) { printf("X^2 < 0 => this equation has not radicals"); } else { x1=pow(t,0.5); x2=-pow(t,0.5); printf("X1 = %f", x1); printf("X2 = %f", x2); } } else { t1=(-b+pow(d,0.5))/2*a; t2=(-b-pow(d,0.5))/2*a; if (t1>=0 and t2>=0) { x1t1=pow(t1,0.5); x2t1=-pow(t1,0.5); x1t2=pow(t2,0.5); x2t2=-pow(t2,0.5); printf("X1 = %f", x1t1); printf("X2 = %f", x2t1); printf("X3 = %f", x1t2); printf("X4 = %f", x2t2); } else if (t1>=0 and t2<0) { x1t1=pow(t1,0.5); x2t1=-pow(t1,0.5); printf("X1 = %f", x1t1); printf("X2 = %f", x2t1); } else if (t1<0 and t2>=0) { x1t2=pow(t2,0.5); x2t2=-pow(t2,0.5); printf("X1 = %f", x1t2); printf("X2 = %f", x2t2); } else if (t1<0 and t2<0) printf("This equation has not radicals"); } }
Vip1.Инициализируй переменные так Code: float a,b,c,d,t,t1,t2,x1,x2,x1t1,x2t1,x1t2,x2t2; 2.Надо условие задавать не так Code: else if (d=0) А так Code: else if (d==0) 3.Пишешь and в сях. Забудь про него. Есть оператор && (and) и || (or) и ^ (xor), а оператора ^^ нет, это смайлик. Code: else if (t1>=0 and t2<0) Замени на Code: else if ((t1>=0) && (t2<0)) 4.Ты не поверишь, но вместо Code: printf("X1 = %f", x1); printf("X2 = %f", x2); Можно написать Code: printf("X1 = %fX2 = %f", x1, x2); 5.И вообще, t=-b/(2*a) и t=-b/2*a это не одно и тоже. Когда ты пишешь t=-b/2*a это значит t=(-b/2)*a. Плюс не написал, что должна считать программа. Если это корни 4ст, метод Феррари тебе в руки.
траблы с MessageBox не получается скомпилить PHP: #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello, World!", "Example", MB_OK); return 1; } в результате я получаю 2 ошибки error C2872: 'MessageBoxA' : ambiguous symbol
http://en.allexperts.com/q/C-1040/message-box.htm http://www.makak.ru/2008/03/10/messagebox-%E2%80%94-kak-vyvesti-okoshko-s-soobshheniem-na-c/ http://msdn.microsoft.com/en-us/library/aa381915(VS.85).aspx
Можно как то узнать какие существуют корневые разделы реестра в системе(hkey_users,hkey_current_user и т.д.)?Или можно только методом тыка перебрать все возможные названия на предмет их существования в реестре?
Хм, ульи всегда стандартны.( Конечно же если ты имеешь в виду именно ульи. типо HKLM, HKCU,HKCC,HKCR, HKU)
Задача следующая: При вводе четырёхзначного числа, нужно выяснить есть ли там одинаковые цифры. В питоне я это сделал следующим образом: превратил вводимое число в список, а затем сравнил все элементы списка. А вот как разбить число по цифрам в С?