Как-то так Code: #include <iostream.h> #include <vector> using namespace std; typedef struct{ int x,y; }twoint; typedef vector<twoint> myvec; myvec myvector; void add_values(int x, int y) { twoint temp; temp.x = x; temp.y = y; myvector.push_back(temp); } twoint find_by_x(int x) { myvec::iterator i; for(i = myvector.begin(); i!=myvector.end(); ++i) { if(i->x == x) return *i; } } twoint find_by_y(int y) { myvec::iterator i; for(i = myvector.begin(); i!=myvector.end(); ++i) { if(i->y == y) return *i; } } twoint find_by_indx(int index) { return myvector[index]; } void set_to_indx(int index, twoint newvalue) { myvector[index] = newvalue; } int main() { int x,y; cout<<"Vvedite paru x,y: \n";cin>>x>>y; add_values(x,y); }
PHP: #include <iostream> #include <iterator> #include <vector> #include <utility> void main() { std::vector<std::pair<int,int>> vec; vec.push_back(std::make_pair(1, 2)); //добавление в вектор элементов vec.push_back(std::make_pair(1, 8)); vec.push_back(std::make_pair(2, 6)); vec.push_back(std::make_pair(2, 3)); //поиск элемента по первому значению for(std::vector<std::pair<int,int>>::const_iterator i = vec.cbegin(); i != vec.cend(); i++) { if((*i).first == 2) std::cout << "found pair: " << (*i).first << ", " << (*i).second << std::endl; } vec.erase(vec.cbegin()); //удалили первый элемент std::cout << "First pair: " << (*vec.cbegin()).first << ", " << (*vec.cbegin()).second << std::endl; }
Code: #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <tchar.h> // --------------------------------------------------------------------------- #pragma argsused int _tmain(int argc, _TCHAR* argv[]) { std::cout << "Учимся программировать на языке С++!"; return 0; } Тип проекта Console Application. Чтобы выводились русские буквы нужно подключать локаль(setlocale).
парсер ищет int main(), а ты ему void main(void) тем более конструкция main(void), если не изменяет память, не выйдет в C++(только в С). Следовательно компилятор не знал куда вставить функции(они служебные) InitVCL и ExitVCL и тупо их выкинул, а линкер их ищет и не может найти. Короче, там когда создаёшь консольный проект, студия спрашивает тип(там стоит С++) и что использовать9сними галочки Use VCL, Multithreaded). дальше замени код который сгенерируется, на PHP: #pragma hdrstop #include <iostream.h> #include <windows.h> void main() { cout << "Олололо!" << endl; system("pause"); ExitProcess(0); }
А индексы автоматически каждой паре присваиваются или нет? Чтобы несколько пар вводить, нужно массив данных определить для них?
Какие индексы? Порядковый номер?! Да. v.push_back(что-то); v.push_back(ещё что-то); v[0] - что-то v[1] - ещё что-то Возьми почитай книгу Скотт Мейерс - Эффективное использование STL. Оно того стоит.
вот такой код уродец делает это одной строкой ) если хочеш кому то отомстить напиши ему так ))) Code: char b[]="hello my dear friend Max, How are you?"; char f[128], *p, *q; *f = '\0', p=strstr(b, "Max"), strncat(f, p , p && (q=strstr(p, ",")) ? q - p < sizeof(f) ? q - p : 0 : 0); rudi GRRL Power вообще да поржал с вами ))))))))
Существует какая ни будь библиотека для C++ чтоб обменивать информацию по сокету было примерно так же легко как это делается в php?
Сразу два вопроса во первых где в этом коде ошибка, просто делал и ошибка была забил, сейчас решил к ней вернутся .. Code: #include <iostream> using namespace std; int Area (int length, int width); int main() { int lengthOfYard; int widthOfYard; int areaOfYard; cout << "\ nHow wide is your yard? "; cin >> widthOfYard; cout << "\ nHow long is your yard? "; cin >> lengthOfYard; areaOfYard= Area(lengthOfYard, widthOfYard); cout << "\nYour yard is "; cout << areaOfYard; cout << " square feet\n\n"; return 0; } int Area (yardLength; yardWidth) { return yardLength*yardWidth; } А во вторых ест вот такой код авторитизации это с++ или с# если C# не могли бы вы его переписать на с++.. За ранее благодарен. Данный код мне нужен на будущее.. Code: public static int TryLogin(string login, string password, string server) { login = login.ToLower(); TcpClient client = new TcpClient(server, 29000); Socket socket = client.Client; byte[] serverData = new byte[1024]; socket.Receive(serverData); if (serverData[0] != 0x1) return -1; byte[] ServerKey = serverData.Skip(3).Take(16).ToArray(); byte[] bytesLogin = Encoding.ASCII.GetBytes(login); byte[] bytesPassword = Encoding.ASCII.GetBytes(password); MD5 H1 = MD5.Create(); byte[] LoginPlusPass = bytesLogin.Concat(bytesPassword).ToArray(); byte[] LoginPlusPassMD5 = H1.ComputeHash(LoginPlusPass); HMACMD5 H2 = new HMACMD5(LoginPlusPassMD5); byte[] PassHash = H2.ComputeHash(ServerKey); byte loginLength = (byte)login.Length; List<byte> PacketC03 = new List<byte>(); PacketC03.AddRange(new byte[] { 0x03, (byte)(loginLength + 18), loginLength }); PacketC03.AddRange(bytesLogin); PacketC03.Add(0x10); PacketC03.AddRange(PassHash); socket.Send(PacketC03.ToArray()); serverData = new byte[1024]; socket.Receive(serverData); socket.Disconnect(false); if (serverData[0] == 0x5) return -1; else if (serverData[0] == 0x2) return 1; else return 0; }
Code: int Area (yardLength; yardWidth) это чеза вротебический синтаксиси ?) ты наверно все таки это имел в виду ? Code: int Area (const int yardLength, const int yardWidth)
Вопрос по C++Builder 6: Нужно ввести размерность матрицы. Делаю два Edit и кнопку. Матрицу объявляю в классе формы как глобальную переменную int **m .Но потом в методе кнопки пытаюсь создать динамический двумерный массив: Code: void __fastcall TForm1::Button1Click(TObject *Sender) { x=StrToInt(Edit1->Text); y=StrToInt(Edit2->Text); int i; **m=new int *[x]; for(i=0;i<x;i++) m[i]=new int [y]; ... } но оно ругается на строку **m=new int *[x]; - Cannot convert 'int * *' to 'int' Я то понимаю что правильно нужно int **m=new int *[x]; но это уже переопределение переменной и соответственно в **m в классе будет пустота. В общем как мне разрулить эту схемку?
записью **m равносильна m[0][0], ты получаешь объект на который указывает m. Для того чтобы присвоить значение указателю не нужно писать ** Code: m=new int *[x]; ты говоришь m что бы он хранил указатель на массив указателей.
Вопрос. Использую builder 6 имею ListView как изменить цвет отдельных строк, тех что caption я хочу вывести список данных в ListView и там в зависимости от некого значения хочу менять цвет шрифта
Нужно считать матрицу с тхт файла на C++ Builder 6 .Вот придумал такой код: Code: void __fastcall TForm1::Button3Click(TObject *Sender) { OpenDialog1->Filter = "Text files (*.txt)|*.TXT"; if(OpenDialog1->Execute()) { AnsiString name=OpenDialog1->Files->CommaText; TFileStream *tfile=new TFileStream(name,fmOpenRead); tfile->Seek(0,0); char *buf; int x=tfile->Size; buf=new char [x]; tfile->Read(buf,x); //StringGrid2->Visible=true; m2=new int [x]; char *probel; char *enter; int i=0; enter=strtok(buf,"\r\n"); while(enter !=NULL) { probel=strtok(enter," "); if(enter!="\r\n") while(probel !=NULL) { if(probel!=" ") { m2[i]=StrToInt(probel); i++; } probel=strtok(NULL," "); } enter=strtok(NULL,"\r\n"); } } } Но записывает только первую строку. Делал отладку то после строки enter=strtok(buf,"\r\n") buf как бы перезаписуется и там уже не весь файл а только первая строка.
Слишком неконкретное условие. Вот конкретно для цифр: PHP: #include <string> #include <iostream> #include <iterator> #include <vector> #include <stdlib.h> std::vector<unsigned int> split_numbers(const std::string& str, const std::string& delim) { std::vector<unsigned int> ret; std::string::size_type pos = 0; while((pos = str.find(delim, pos)) != std::string::npos) { pos += delim.length(); ret.push_back(std::atoi(str.c_str() + pos)); } return ret; } void main() { std::string numbers = "0 1 2 5 10 100500"; std::vector<unsigned int> res = split_numbers(numbers, " "); for(std::vector<unsigned int>::const_iterator i = res.cbegin(); i != res.cend(); i++) std::cout << *i << std::endl; }