Думаю, не выйдет ничего, тут уж либо рисование полосочками, либо русский язык. Прочитай про OEM-кодировки.
Не получается откомпилировать Смотрю видео по программированию на С++ В видео пример, пользователь вводит строчку, программа считывает и выводит её ещё раз пишу на VS 2010 Express Edition RUS http://www.youtube.com/watch?v=4fDMpQ0i6Io сам код ---------------------------------------------------------------- #include "stdafx.h" #include "iostream" #include "conio.h" using namespace std; int main() { string x; getline( cin, x); //компилятор пишет что идентификатор getline не определен cout<<x;//и ещё ругается на <<, пишет что отсутствует оператор getch (); } --------------------------------------- что я делаю не правильно? помогите)
В VS вроде надо использовать std::cout std::endl И добавить в инклюдах #include <string> З.Ы. Dev C++ - полет нормальный.
Спасибо, теперь работает! Учимся дальше) Про std они объявлены using namespace std;, можно не писать много раз
Есть двунаправленный список, нужно вставить данные после первого элемента в списке. PHP: // Функция добавления в список void CList::Add(CData * pNext) { CData * pCurr = m_pFirst; // Указатель на первый элемент CData * temp; while(pCurr->m_pNext != NULL) { // Проходим по всему списку if(pCurr->a == 1) { // Если номер элемента первый /* Тут нужно вставить новый элемент pNext */ } // Перераспределяем список temp = pCurr; temp->m_pPrev = temp; pCurr = pCurr->m_pNext; } } Не пойму как вставить новый элемент
Посчитать количество слов hello! Посчитать сколько раз в файлу написано слово hello! (не обязательно на разных строках). Пробовал этот код: Code: #include <string> #include <iostream> #include <fstream> #include <iterator> void main() { std::ifstream file; file.open("file.txt", std::ifstream::in); if(!file) { std::cout << "Error opening file" << std::endl; return; } std::string buf; std::copy(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(), std::back_inserter(buf)); file.close(); std::string::size_type pos = 0; unsigned int count = 0; while((pos = buf.find("hello!", pos)) != std::string::npos) { count++; pos++; } std::cout << "\"hello!\" found " << count << " time(s)." << std::endl; } Не работает в Dev C++ Как эту же программу написать в Dev C++? Помогите пожалуйста!
Code: #include <string> #include <iostream> #include <fstream> #include <iterator> int main() { std::ifstream file; file.open("file.txt", std::ifstream::in); if(!file) { std::cout << "Error opening file" << std::endl; } std::string buf; std::copy(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(), std::back_inserter(buf)); file.close(); std::string::size_type pos = 0; unsigned int count = 0; while((pos = buf.find("hello!", pos)) != std::string::npos) { count++; pos++; } std::cout << "\"hello!\" found " << count << " time(s)." << std::endl; } Держи.
Унификация функций Написал программку, выполняющие некоторые основные операции с массивами. Вот код: HTML: //--------------------------------------------------------------------------- #include <cstdlib> #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused main () { int size,i,j,number,min,max; int mas[100]; int cash=0; printf("Please, enter size of array: "); scanf("%d",&size); printf("Size of array= %d\n\n",size); srand(time(0)); for (i=0;i<size;i++) mas[i]=rand()%200-100; printf("Array:\n"); for (i=0;i<size;i++) printf("mas[%d]=%d \n",i,mas[i]); printf("\n\n"); min=mas[0]; for (i=0;i<size;i++) if (mas[i]<min) min=mas[i]; max=mas[0]; for (i=0;i<size;i++) if (mas[i]>max) max=mas[i]; for (i=1; i<=size ; i++) for (j=1; j<=size-i; j++) if (mas[j]>mas[j+1]) { cash=mas[j]; mas[j]=mas[j+1]; mas[j+1]=cash; } printf("Case of number operation:\n"); printf("1. Find min\n 2. Find max\n 3. First nozero element\n"); printf("4. Sorting algoritm Bubble\n\n"); printf("Selected number: "); scanf("%d",&number); printf("\n\n"); switch (number) { case 1: printf("1. 'Find MIN'\n min=%d \n",min); break; case 2: printf("2. 'Find MAX'\n max=%d \n",max); break; case 3: printf("3. 'First nozero element'\n"); for (i=0;i<size;i++) if (mas[i]) printf("First nozero(arr[%d])=%d \n",i,mas[i]); break; case 4: printf("4. 'Sorting algoritm Bubble'\n\n Array was sorted:\n\t"); for (i=0;i<size;i++) printf("mas[%d]=%d \n\t",i,mas[i]); break; default: printf("\n\nNumber operation no selected.\n Press any key for exit!"); getch(); break; } //switch getch(); } //--------------------------------------------------------------------------- Читал где то, что можно сделать массив из указателей на функции, а не использовать case как здесь. Но пример, который там приведен почему то не срабатывает! там было что то типа этого: PHP: Type pf(float*) (int); pf func Arr[4]; func Arr[0]=max; func Arr[0]=min; ... char resp=getch(); func Arr[resp="1"](x); Вообщем, покажите пожалуйста как вместо элемента case использовать массив на указатели функций. Хотя бы для 1-й операции с массивами!
Dimon32 я тебя не очен понил, но вот простой пример ис пользования массива указателей. char * mas= (char*)malloc(/*длина массива*/); mas[/*элемент массива*/]="что ныт"
или так если дух велосипедостроения у вас в крови ))) Code: class ReadOnlyMap{ HANDLE hFile, hMap; PVOID hBase; DWORD fSize; ReadOnlyMap(const ReadOnlyMap&); ReadOnlyMap& operator=(const ReadOnlyMap&); void init(){ hBase = hFile = hMap = NULL; fSize = 0; } public: ReadOnlyMap(){init();} ~ReadOnlyMap(){ if (hBase) UnmapViewOfFile(hBase); if (hMap) CloseHandle(hMap); if (hFile) CloseHandle(hFile); } DWORD size(){return fSize;} bool map(PCTSTR file){ hFile = CreateFile(file, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (INVALID_HANDLE_VALUE != hFile){ fSize = GetFileSize(hFile, NULL); if (INVALID_FILE_SIZE != fSize){ hMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); if (hMap){ hBase = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0); if (hBase) return true; CloseHandle(hMap); } } CloseHandle(hFile); } init(); return false; } struct basetype{ PVOID base; basetype(PVOID p):base(p){} template <class t> operator t(){return (t)base;} }; basetype base(){return basetype(this->hBase);} operator bool(){return !!hBase;} }; #ifdef __cplusplus PCTSTR strnstr(PCTSTR s1, PCTSTR s2, size_t n){ PCTSTR fw, bw; size_t t; while (n && *s1){ fw = s1, bw = s2, t = n; while (t && *fw && *bw && *fw == *bw) fw++, bw++, t--; if (!*bw) return s1; s1++, n--; } return NULL; } PTSTR strnstr(PTSTR s1, PCTSTR s2, size_t n){ PCTSTR fw, bw; size_t t; while (n && *s1){ fw = s1, bw = s2, t = n; while (t && *fw && *bw && *fw == *bw) fw++, bw++, t--; if (!*bw) return s1; s1++, n--; } return NULL; } #else /* !__cplusplus */ PTSTR strnstr(PCTSTR s1, PCTSTR s2, size_t n){ PCTSTR fw, bw; size_t t; while (n && *s1){ fw = s1, bw = s2, t = n; while (t && *fw && *bw && *fw == *bw) fw++, bw++, t--; if (!*bw) return (PTSTR)s1; s1++, n--; } return NULL; } #endif int main(){ ReadOnlyMap mm; DWORD c = 0; mm.map("test.txt"); if (mm){ DWORD cb = mm.size(); PCSTR b = mm.base(), e; while (e = strnstr(b, "hello", cb)) cb -= ++e - b, b = e, c++; } printf("%lu\n", c); }
PHP: void CList::saveTofile(string fileName) { int fh = _open(fileName,_O_RDWR | _O_BINARY); } Ошибка Как передать string в функцию для записи в файл ?
Lee_fx, снова выручил, спасибо Продолжаю вопрос) Запись списка в файл всё работает, в файл пишется PHP: void CList::saveTofile(string fileName) { CData * pCurr = m_pFirst; int fh = _open(fileName.c_str(),_O_RDWR | _O_BINARY); if (fh == -1) fh = _creat(fileName.c_str(), _S_IREAD | _S_IWRITE); if (fh != -1) { _lseek(fh,0,SEEK_END); while(pCurr->m_pNext != NULL){ _write(fh,pCurr,sizeof pCurr); pCurr = pCurr->m_pNext; } cout << "\nСписок сохранён в " << fileName << endl; }else{ cout << "\nНе получилось создать файл " << endl; } } PHP: void CList::readFromfile(string fileName) { CData * pCurr = m_pFirst; int i = 0; int fh = _open(fileName.c_str(),_O_RDWR | _O_BINARY); if (fh != -1){ do { _lseek(fh,i,SEEK_END); _read(fh,&pCurr,sizeof pCurr); pCurr = pCurr->m_pNext; // Нарушение прав доступа при чтении "0x00000008". i++; }while(pCurr->m_pNext != NULL); }else{ cout << "\nУказанного файла не существует!" << endl; } } Нарушение прав доступа при чтении "0x00000008". Как прочитать из файла в список ?
Ты в файл пишешь адреса, на которые указывают указатели(pCurr), соответственно когда читаешь, в памяти созданных при сохранении объектов уже нет, вот и ошибка. Я так понял ты хотишь весь список в файл загнать а при следующем запуске его восстановить, если да, то перед записью объекты CData нужно как-либо сериализовать, чтобы потом можно было восстановить связи.
помогите плз с проблемой на с++ создаю windows form application и кидаю туда 2 кнопки, и хочу чтобы при нажатии на 1 она у меня создавала поток и вызывала функцию MyThread , но студия ругаеться и я ничего не могу с ней поделать помогите плз вот ошибка если в коде написать просто HANDLE hThread = CreateThread(NULL, 0, MyThread, NULL, NULL, &ThreadID); то ошибка такая а на HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyThread, NULL, NULL, &ThreadID); Code: Warning 1 warning C4441: calling convention of '__stdcall ' ignored; '__clrcall ' used instead d:\backup=)\kyrsach\vse ewe lazha\num1\num1\Form1.h 102 num1 Error 2 error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTHREAD_START_ROUTINE' d:\backup=)\kyrsach\vse ewe lazha\num1\num1\Form1.h 108 num1 заставил я её компилироваться таким финтом ушами Code: public: static DWORD WINAPI MyThread() { MessageBox::Show("da da da"); return 0; } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { DWORD ThreadID ; HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyThread, NULL, NULL, &ThreadID); но осталось Code: Warning 1 warning C4441: calling convention of '__stdcall ' ignored; '__clrcall ' used instead d:\backup=)\kyrsach\vse ewe lazha\num1\num1\Form1.h 102 num1 и во время мыволнения при нажатии на кнопку вылетает офибка Code: инструкци по адресу "0x00361eea" обратилась к памяти по адресу "0x0000000c". Память не может быть read что делать? помогите!!!
#include <stdio.h> #include <conio.h> int main() { const int n=3; const int m=5; double M[n]; double D[m]; double srm, srd; double sumM, sumD; printf("mal'chiki\n"); for (int i=0;i<n;i++) { printf("\n%d-i ",i+1); scanf("%d", &M); } for (int i=0;i<n;i++) { sumM+=M; } srm=sumM/n; printf("devochiki\n"); for (int i=0;i<m;i++) { printf("\n%d-ya ", i+1); scanf("%d", &D); } for (int i=0;i<m;i++) { sumD+=D; } srd=sumD/m; printf("\n%d - srednii rost malchikov", srm); printf("\n%d - srednii rost devochek", srd); getch(); return 0; } 08.12.10 Ростислав: пишет что i=0 ошибка,почему?
2 kitysik покачену. ни один компилятор не пишет только слово ОШИБКА. Все ще добавляют что за ошибка. Вот не поленись и почитай что за ошибка. А вообще если это Си а не С++ то незя так переменные объявлять. т.е. int i в начала объяви, а в циклах уже юзай