Премини към съдържанието

boy1

Потребител
  • Публикации

    17
  • Регистрация

  • Последно онлайн

Харесвания

3 Неутрална репутация

Всичко за boy1

  • Титла
    Потребител
  1. boy1

    Съвместимост на процесори с дънна платка

    Ясно. Мерси за помощта
  2. boy1

    Съвместимост на процесори с дънна платка

    Единственото допълнително нещо, което AIDA64 ми показва е ето това: Motherboard Name: Epox EP-MF4-J3 Значи примерния процесор, който съм дал се поддържа, така ли? И може ли да ми кажете дали е трудно да се смени процесора или няма да имам нужда от експерт?
  3. boy1

    Съвместимост на процесори с дънна платка

    Manufacturer: EPoX COMPUTER CO., LTDModel: nForce4 DDR2: MF4-J3, MF4-J3/G, AF4-J3, AF4-J Series (Socket M2 )Chipset Vendor: NVIDIAChipset Model: nForce4Chipset Revision: A3Southbridge Vendor: NVIDIASouthbridge Model: nForce4 MCPSouthbridge Revision: A3 Това ми показва Speccy.
  4. Здравейте! Не разбирам почти нищо от хардуер . Само съм си сменял RAM паметта. Но ми се иска да сменя и процесора, защото е много слаб - AMD Athlon 3200+ 2.01GHz. Като вляза да погледна модела на дънната ми платка пише: Производител: NVIDIA Модел на системата: AWRDACPI Проблемът ми е, че не мога да разбера какви процесори поддържа. На кутията пише NVIDIA nForce4 Series designed for AMD Athlon 64. Тоест разбирам, че поддържа само AMD Athlon. Но те са много видове. Например ето този поддържа ли го? http://www.cpu-world.com/CPUs/K8/AMD-Athlon%2064%20X2%205600+%20-%20ADA5600IAA6CZ%20(ADA5600CZBOX).html Как мога да проверя? П.С. А дали ще мога да си го сложа сам? Трябва ли да се правят някакви магически неща, за да тръгне?
  5. Поразрових се и намерих този алгоритъм: void List::Deliteli(long long m) { int t = 0; while(m%2 == 0) { cout << 2 << " "; m = m/2; } for(int i = 3; m > 1;) { if(m%i > 0) i = i+2; //Ето тук в един момент не става ли 9, което не е просто число? else { cout << i << " "; m = m/i; } } }Наистина се забелязва още по-бърза скорост. Мислех си да направя същото и аз, но като видях този алгоритъм забелязах нещо: На първия ред от втория цикъл, в даден момент, числото не става ли 9? А 9 не е просто число. Въпреки това всичко си е нормално. И само да спомена, че съм на 32 битова платформа и ползвам Dev-C++ 4.9.9.2. Иначе и аз нямам проблем с числа до 19 цифри, ако ползвам long long.
  6. Мерси за съвета. Преработих алгоритъма малко и сега наистина се забелязва подобрение в скоростта. Ето това направих водейки се по съветите Ви. void List::Deliteli(long long m) { int t = 0; for(long long i = 2; i <= sqrt(m); i++) { if(m%i == 0) { cout << i << " "; cout << m/i << endl; t = 1; } } if(t == 0) cout << "Prime number!" << endl; } Сега ще опитам да напиша и този алгоритъм. Дано да нямам ядове с намирането на простите множители . И доколкото схванах, после просто комбинирам всеки с всеки нали? Примерно намерил съм 5, 7, 11 и умножовам 5*7, 5*11, 7*11?
  7. Здравейте! Опитвам се да намеря всички делители на дадено число, но проблемът ми е, че се налага да използвам число с 15 цифри. Сигурно се досещате, че отнема доста време, ако използваме стандартния начин за търсене, който съм приложил: void List::Deliteli(long long m) { int t = 0; for(long long i = 2; i <= m/2; i++) { if(m%i == 0) { cout << i << endl; t = 1; } } if(t == 0) cout << "Prime number!" << endl; }Бих искал да Ви попитам дали има по-оптимален алгоритъм? Търсих в Гугъл, но не успях да намеря нищо :/.
  8. boy1

    Задача на C++ функции и динамичен масив

    Бих ти предложил да пробваш това - не гарантирам, че ще се получи... float genmas (float p[],int n){ //първо си направи променривите глобални - това е най-мързеливият начин. Иначе може да си направиш още параметри към функциите int br = broichetni(p, n); //Тук запазваш правилния размер на масива, който трябва да създадеш int * dp = new int [br]; int j = 0; //правиш си променлива j и й задаваш стойност 0 for (int i=0;i<n;i++) { if (p[i]%2==0) { dp[j]=p[i]; j++; } }return br;//А тук не мога да схвана какво искаш да върнеш - броя на четните числа ли?}
  9. boy1

    Програма за ришаване на Судоку 9x9

    Цяла нощ търсих и най-накрая успях да намеря решение в Интернет. Сега всичко си работи. Само едно нещо не успях да схвана и ако може да Ви помоля да ми го обясните(ако имате желание разбира се). Ако не се намери число в интервала 1-9 програмата не трябва ли да приключи? Как се осъществява връщането назад? Ето и кода: П.С. В main() имам само Game.Help_Solve(1, 1) и функцията за извеждане. bool Sudoku::Help_Solve(int i, int j) { int nextrow, nextcol; while(change[i][j] == 1) //намираме първата клетка, { //която позволява на числото в нея да се изменя j++; if(j > 9) { j = 1; i++; } if(i > 9) return true; } for(int p = 1; p <= 9; p++) { if(Game.Check_Conflicts(p, i, j)) //Проверяваме за конфликти { board[i][j] = p; nextrow = i; nextcol = j+1; if(nextcol > 9) { nextcol = 1; nextrow++; } if(nextcol == 1 && nextrow == 10) return true; if(Game.Help_Solve(nextrow, nextcol)) return true; } } board[i][j] = 0; return false; }
  10. boy1

    Програма за ришаване на Судоку 9x9

    Днес размишлявах още над алгоритъма и намерих грешка в една от проверките за това дали числото се среща в малкото си квадратче 3х3. Но намяше кой знае какъв ефект. Също установих, че дори да няма предварително зададени стойности, тоест в началото дъската да е напълно празна, пак накрая доста от квадратчета са със стойност 0. Също премахнах board[j] = 0 от последния ред на Help_Solve(...) и броя на нулевите стойности намаля. А на доста места където има стойности по-големи от нула числата не са вярни (само на 6-7 места е както трябва). Значи грешката ще е някъде във Help_Solve(...). Само че не мога да разбера къде точно... Оправих грешката с проверката в първия си пост.
  11. boy1

    Програма за ришаване на Судоку 9x9

    Е не видяхте ли, че съм се поправил после. Какво да правя... В бързината просто съм натиснал съседния бутон....
  12. Понеже предишната тема, която пуснах беше заключена поради неясно заглавие, се надявам, че сега всичко ще е наред. П.С. Е сега пък съм допуснал правописна грешка в заглавието.... Реших да направя програмка, която решава судоку, но нещо не се справям добре. Потърсих в Гугъл информация какъв алгоритъм мога да използвам и на много места срещнах идеята за рекурсия: Опитах се да го съставя, но нещо кода ми куца. От всичките 81 места на таблото само 6-7 места ми се запълват с вярни стойности (ако не броим предварително зададените). Може би нещо самата рекурсия не е наред. Използвам за тестване ето това судоку: http://bg.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Sudoku-by-L2G-20050714.gif Та въпросът ми е дали виждате някаква видима грешка, защото от няколко дни се мъча и не се получава. Ето и кода. Малко е дълъг, но се надявам да не Ви затрудни, защото не е много сложен. #include <iostream> #include <iomanip> #include <time.h> #include <cstdlib> #include <windows.h> using namespace std; class Sudoku { private: int board[9][9]; int change[9][9]; public: Sudoku(); void Print_Board(); void Add_First_Cord(); void Solve(); void Help_Solve(int i, int j); bool Check_Conflicts(int p, int i, int j); }; Sudoku Game; void setcolor(unsigned short color) //The function that you'll use to { //set the colour HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hcon,color); } Sudoku::Sudoku() { for(int i = 0; i <= 9; i++) for(int j = 0; j <= 9; j++) board[i][j] = 0; } void Sudoku::Print_Board() { for(int i = 1; i <= 9; i++) { for(int j = 1; j <= 9; j++) { if(change[i][j] == 1) { setcolor(12); cout << board[i][j] << " "; setcolor(7); } else cout << board[i][j] << " "; if(j%3 == 0) cout << "| "; } cout << endl; if(i%3 == 0) cout << "------+-------+--------" << endl; } } void Sudoku::Add_First_Cord() { board[1][1] = 5; change[1][1] = 1; board[1][2] = 3; change[1][2] = 1; board[1][5] = 7; change[1][5] = 1; board[2][1] = 6; change[2][1] = 1; board[2][4] = 1; change[2][4] = 1; board[2][5] = 9; change[2][5] = 1; board[2][6] = 5; change[2][6] = 1; board[3][2] = 9; change[3][2] = 1; board[3][3] = 8; change[3][3] = 1; board[3][8] = 6; change[3][8] = 1; board[4][1] = 8; change[4][1] = 1; board[4][5] = 6; change[4][5] = 1; board[4][9] = 3; change[4][9] = 1; board[5][1] = 4; change[5][1] = 1; board[5][4] = 8; change[5][4] = 1; board[5][6] = 3; change[5][6] = 1; board[5][9] = 1; change[5][9] = 1; board[6][1] = 7; change[6][1] = 1; board[6][5] = 2; change[6][5] = 1; board[6][9] = 6; change[6][9] = 1; board[7][2] = 6; change[7][2] = 1; board[7][7] = 2; change[7][7] = 1; board[7][8] = 8; change[7][8] = 1; board[8][4] = 4; change[8][4] = 1; board[8][5] = 1; change[8][5] = 1; board[8][6] = 9; change[8][6] = 1; board[8][9] = 5; change[8][9] = 1; board[9][5] = 8; change[9][5] = 1; board[9][8] = 7; change[9][8] = 1; board[9][9] = 9; change[9][9] = 1; } bool Sudoku::Check_Conflicts(int p, int i, int j) { for(int k = 1; k <= 9; k++) if(board[i][k] == p) return false; for(int q = 1; q <= 9; q++) if(board[q][j] == p) return false; /* *00 000 000 */ if((j == 1 || j == 4 || j == 7) && (i == 1 || i == 4 || i == 7)) { if(board[i][j+1] == p || board[i][j+2] == p || board[i+1][j] == p || board[i+2][j] == p || board[i+1][j+1] == p || board[i+1][j+2] == p || board[i+2][j+1] == p || board[i+2][j+2] == p)return false; } /* 000 000 *00 */ if((j == 1 || j == 4 || j == 7) && (i == 3 || i == 6 || i == 9)) { if(board[i-1][j] == p || board[i-2][j] == p || board[i][j+1] == p || board[i][j+2] == p || board[i-1][j+1] == p || board[i-1][j+2] == p || board[i-2][j+1] == p || board[i-2][j+2] == p)return false; } /* 000 *00 000 */ if((j == 1 || j == 4 || j == 7) && (i == 2 || i == 5 || i == 8)) { if(board[i-1][j] == p || board[i-1][j+1] == p || board[i-1][j+2] == p || board[i][j+1] == p || board[i][j+2] == p || board[i+1][j] == p || board[i+1][j+1] == p || board[i][j+2] == p)return false; } /* 0*0 000 000 */ if((j == 2 || j == 5 || j == 8) && (i == 1 || i == 5 || i == 7)) { if(board[i][j-1] == p || board[i][j+1] == p || board[i+1][j+1] == p || board[i+1][j-1] == p || board[i+1][j] == p || board[i+2][j-1] == p || board[i+2][j] == p || board[i+2][j+2] == p)return false; } /* 000 0*0 000 */ if((j == 2 || j == 5 || j == 8) && (i == 2 || i == 5 || i == 8)) { if(board[i-1][j] == p || board[i-1][j-1] == p || board[i-1][j+1] == p || board[i][j+1] == p || board[i][j-1] == p || board[i+1][j+1] == p || board[i+1][j] == p || board[i+1][j-1] == p)return false; } /* 000 000 0*0 */ if((j == 2 || j == 5 || j == 8) && (i == 3 || i == 6 || i == 9)) { if(board[i][j-1] == p || board[i][j+1] == p || board[i-1][j] == p || board[i-1][j+1] == p || board[i-1][j-1] == p || board[i-2][j] == p || board[i-2][j+1] == p || board[i-2][j-1] == p) return false; } /* 00* 000 000 */ if((j == 3 || j == 6 || j == 9) && (i == 1 || i == 4 || i == 7)) { if(board[i][j-1] == p || board[i][j-2] == p || board[i+1][j] == p || board[i+1][j-1] == p || board[i+1][j-2] == p || board[i+2][j] == p || board[i+2][j-1] == p || board[i+2][j-2] == p) return false; } /* 000 00* 000 */ if((j == 3 || j == 6 || j == 9) && (i == 2 || i == 5 || i == 8)) { if(board[i-1][j] == p || board[i-1][j-1] == p || board[i-1][j-2] == p || board[i][j-1] == p || board[i][j-2] == p || board[i+1][j] == p || board[i+1][j-1] == p || board[i+1][j-2] == p) return false; } /* 000 000 00* */ if((j == 3 || j == 6 || j == 9) && (i == 3 || i == 6 || i == 9)) { if(board[i][j-1] == p || board[i][j-2] == p || board[i-1][j] == p || board[i-1][j-1] == p || board[i-1][j-2] == p || board[i-2][j] == p || board[i-2][j-1] == p || board[i-2][j-2] == p) return false; } return true; } void Sudoku::Help_Solve(int i, int j) { if(j > 9) { i = i+1; j = 9; } if(j == 0) { i = i-1; j = 9; } int k = board[i][j]; for(int p = 1; p <= 9; p++) if(Game.Check_Conflicts(p, i, j) && change[i][j] == 0 && p != k) { board[i][j] = p; return; } if(change[i][j-1] == 1) { while(change[i][j-1] == 1) { j--; if(j == 0) { i = i-1; j = 9; } if(change[i][j-1] == 0) return Game.Help_Solve(i, j-1); } } return board[i][j] = 0, Game.Help_Solve(i, j-1); //Тук махнах board[i][j] = 0 } void Sudoku::Solve() { for(int i = 1; i <= 9; i++) { for(int j = 1; j <= 9; j++) { if(board[i][j] == 0 && change[i][j] == 0) { Game.Help_Solve(i, j); } } } } int main() { Game.Add_First_Cord(); Game.Solve(); Game.Print_Board(); system("pause"); return 0; }
  13. boy1

    Судоку

    Здравейте! Реших да направя програмка, която решава судоку, но нещо не се справям добре. Потърсих в Гугъл информация какъв алгоритъм мога да използвам и на много места срещнах идеята за рекурсия: Опитах се да го съставя, но нещо кода ми куца. От всичките 81 места на таблото само 4-5 места ми се запълват с вярни стойности (ако не броим предварително зададените). Може би нещо самата рекурсия не е наред. Използвам за тестване ето това судоку: http://bg.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Sudoku-by-L2G-20050714.gif . Та въпросът ми е дали виждате някакво видима грешка, защото от няколко дни се мъча и не се получава. Ето и кода. Малко е дълъг, но се надявам да не Ви затрудни, защото не е много сложен. П.С. Забравих да спомена, че ако във функцията Check_Conflicts(...) махна проверките за това дали дадено чесло се среща в малките квадратчета 3x3, ми извежда повече вярни стойности отколкото ако ги има(проверките)... #include <iostream> #include <iomanip> #include <time.h> #include <cstdlib> #include <windows.h> using namespace std; class Sudoku { private: int board[9][9]; int change[9][9]; public: Sudoku(); void Print_Board(); void Add_First_Cord(); void Solve(); void Help_Solve(int i, int j); bool Check_Conflicts(int p, int i, int j); }; Sudoku Game; void setcolor(unsigned short color) //The function that you'll use to { //set the colour HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hcon,color); } Sudoku::Sudoku() { for(int i = 0; i <= 9; i++) for(int j = 0; j <= 9; j++) board[i][j] = 0; } void Sudoku::Print_Board() { for(int i = 1; i <= 9; i++) { for(int j = 1; j <= 9; j++) { if(change[i][j] == 1) { setcolor(12); cout << board[i][j] << " "; setcolor(7); } else cout << board[i][j] << " "; if(j%3 == 0) cout << "| "; } cout << endl; if(i%3 == 0) cout << "------+-------+--------" << endl; } } void Sudoku::Add_First_Cord() { board[1][1] = 5; change[1][1] = 1; board[1][2] = 3; change[1][2] = 1; board[1][5] = 7; change[1][5] = 1; board[2][1] = 6; change[2][1] = 1; board[2][4] = 1; change[2][4] = 1; board[2][5] = 9; change[2][5] = 1; board[2][6] = 5; change[2][6] = 1; board[3][2] = 9; change[3][2] = 1; board[3][3] = 8; change[3][3] = 1; board[3][8] = 6; change[3][8] = 1; board[4][1] = 8; change[4][1] = 1; board[4][5] = 6; change[4][5] = 1; board[4][9] = 3; change[4][9] = 1; board[5][1] = 4; change[5][1] = 1; board[5][4] = 8; change[5][4] = 1; board[5][6] = 3; change[5][6] = 1; board[5][9] = 1; change[5][9] = 1; board[6][1] = 7; change[6][1] = 1; board[6][5] = 2; change[6][5] = 1; board[6][9] = 6; change[6][9] = 1; board[7][2] = 6; change[7][2] = 1; board[7][7] = 2; change[7][7] = 1; board[7][8] = 8; change[7][8] = 1; board[8][4] = 4; change[8][4] = 1; board[8][5] = 1; change[8][5] = 1; board[8][6] = 9; change[8][6] = 1; board[8][9] = 5; change[8][9] = 1; board[9][5] = 8; change[9][5] = 1; board[9][8] = 7; change[9][8] = 1; board[9][9] = 9; change[9][9] = 1; } bool Sudoku::Check_Conflicts(int p, int i, int j) { for(int k = 1; k <= 9; k++) if(board[i][k] == p) return false; for(int q = 1; q <= 9; q++) if(board[q][j] == p) return false; //Tuk zapochvam da proverqvam malkite kvadratcheta 3x3 /* *00 000 000 */ if((j == 1 || j == 4 || j == 7) && (i == 1 || i == 4 || i == 7)) { if(board[i][j+1] == p || board[i][j+2] == p || board[i+1][j] == p || board[i+2][j] == p || board[i+1][j+1] == p || board[i+1][j+2] == p || board[i+2][j+1] == p || board[i+2][j+2] == p)return false; } /* 000 000 *00 */ if((j == 1 || j == 4 || j == 7) && (i == 3 || i == 6 || i == 9)) { if(board[i-1][j] == p || board[i-2][j] == p || board[i][j+1] == p || board[i][j+2] == p || board[i-1][j+1] == p || board[i-1][j+2] == p || board[i-2][j+1] == p || board[i-2][j+2] == p)return false; } /* 000 *00 000 */ if((j == 1 || j == 4 || j == 7) && (i == 2 || i == 5 || i == 8)) { if(board[i-1][j] == p || board[i+1][j] == p || board[i-1][j+1] == p || board[i][j+1] == p || board[i+1][j+1] == p || board[i+1][j+2] == p || board[i][j+2] == p || board[i+1][j+2] == p)return false; } /* 0*0 000 000 */ if((j == 2 || j == 5 || j == 8) && (i == 1 || i == 5 || i == 7)) { if(board[i][j-1] == p || board[i][j+1] == p || board[i+1][j+1] == p || board[i+1][j-1] == p || board[i+1][j] == p || board[i+2][j-1] == p || board[i+2][j] == p || board[i+2][j+2] == p)return false; } /* 000 0*0 000 */ if((j == 2 || j == 5 || j == 8) && (i == 2 || i == 5 || i == 8)) { if(board[i-1][j] == p || board[i-1][j-1] == p || board[i-1][j+1] == p || board[i][j+1] == p || board[i][j-1] == p || board[i+1][j+1] == p || board[i+1][j] == p || board[i+1][j-1] == p)return false; } /* 000 000 0*0 */ if((j == 2 || j == 5 || j == 8) && (i == 3 || i == 6 || i == 9)) { if(board[i][j-1] == p || board[i][j+1] == p || board[i-1][j] == p || board[i-1][j+1] == p || board[i-1][j-1] == p || board[i-2][j] == p || board[i-2][j+1] == p || board[i-2][j-1] == p) return false; } /* 00* 000 000 */ if((j == 3 || j == 6 || j == 9) && (i == 1 || i == 4 || i == 7)) { if(board[i][j-1] == p || board[i][j-2] == p || board[i+1][j] == p || board[i+1][j-1] == p || board[i+1][j-2] == p || board[i+2][j] == p || board[i+2][j-1] == p || board[i+2][j-2] == p) return false; } /* 000 00* 000 */ if((j == 3 || j == 6 || j == 9) && (i == 2 || i == 5 || i == 8)) { if(board[i-1][j] == p || board[i-1][j-1] == p || board[i-1][j-2] == p || board[i][j-1] == p || board[i][j-2] == p || board[i+1][j] == p || board[i+1][j-1] == p || board[i+1][j-2] == p) return false; } /* 000 000 00* */ if((j == 3 || j == 6 || j == 9) && (i == 3 || i == 6 || i == 9)) { if(board[i][j-1] == p || board[i][j-2] == p || board[i-1][j] == p || board[i-1][j-1] == p || board[i-1][j-2] == p || board[i-2][j] == p || board[i-2][j-1] == p || board[i-2][j-2] == p) return false; } return true; } void Sudoku::Help_Solve(int i, int j) { if(j <= 0) { i = i-1; j = 9; } if(change[i][j] == 1) Game.Help_Solve(i, j-1); for(int p = 1; p <= 9; p++) if(Game.Check_Conflicts(p, i, j) && change[i][j] == 0) { board[i][j] = p; return; } return Game.Help_Solve(i, j-1); } void Sudoku::Solve() { for(int i = 1; i <= 9; i++) { for(int j = 1; j <= 9; j++) { if(board[i][j] == 0 && change[i][j] == 0) { Game.Help_Solve(i, j); } } } } int main() { Game.Add_First_Cord(); Game.Solve(); Game.Print_Board(); system("pause"); return 0; }
  14. boy1

    Какво е нужно за да си програмист

    Ясно! Благодаря много на всички за съветите
  15. boy1

    Какво е нужно за да си програмист

    За алгоритми ще свърши ли работа тази книга: Програмиране=++алгоритми /Съдържание/
  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.