C/C++

Член од
18 јули 2017
Мислења
39
Поени од реакции
8
Еве од мене Нула Икс Нула игра у C++
За саат време ја направив,функционална е, ама може да се подобри и тоа како.

Код:
#include <iostream>
#include <windows.h>

using namespace std;

//GLOBAL

char grid[3][3]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
int width,height;
bool gameover=true;             //koga e true, programata raboti
char player;
unsigned int turn=1;
int trap=1;
char rez;

void setup();
void draw();
void input();
void math();

int main()
{
start:

setup();
while (gameover==true){
    draw();
    (turn%2==1)?player='X':player='O';
    input();
    system("cls");
    math();
    turn++;
}

cout<<"\nRestart(y/n)?";
            cin>>rez;
            if(rez=='y' || rez=='1' || rez=='Y'){
            system ("cls");
            goto start;
            }

    return 0;
}

void setup(){                           //Pocetni vrednosti(SAMO EDNAS)
char number='1';
for (int i=0;i<=2;i++){
for (int j=0;j<=2;j++){
    grid[i][j]=number;
    number++;
    }
}
gameover=true;
turn=1;
trap=1;
}

void draw(){                       //Crtanje
int incrsr1=0,incrsr2=0;       //Ne se potrebni, treba kako vo setup da go napravam ovoj del

cout<<"Tic Tac Toe! \n";

for (width=1;width<=7;width++){
        cout<<"#";
    }

    for (height=1;height<=6;height++){
        cout<<"\n";
        if(height==2 || height==4){
            incrsr1=0;
            incrsr2++;
        }
        if(height%2==1){
        for (width=1;width<8;width++){

            if(width==2 ||width==4 ||width==6){
                cout<<grid[incrsr2][incrsr1];
                incrsr1++;
            }
            else
                cout<<"#";

        }
        }
        else{

        for (width=1;width<8;width++){
                cout<<"#";

        }
        }
}

cout<<"\n";
(turn%2==1)?cout<<"Player 1's turn (X) \n" : cout<<"Player 2's turn (O)\n";

}

void input(){             //Vnesuvanje
    cout<<"\n";
    char inp;
    cin>>inp;
    switch (inp){
case '1':
    if(grid[0][0]!='X' && grid[0][0]!='O')
    grid[0][0]=player;
    else
    turn++;
        break;
case '2':if(grid[0][1]!='X' && grid[0][1]!='O')
    grid[0][1]=player;
    else
    turn++;
    break;
case '3':if(grid[0][2]!='X' && grid[0][2]!='O')
    grid[0][2]=player;
    else
    turn++;
        break;
case '4':if(grid[1][0]!='X' && grid[1][0]!='O')
    grid[1][0]=player;
    else
    turn++;
    break;
case '5':if(grid[1][1]!='X' && grid[1][1]!='O')
    grid[1][1]=player;
    else
    turn++;
        break;
case '6':if(grid[1][2]!='X' && grid[1][2]!='O')
    grid[1][2]=player;
    else
    turn++;
    break;
case '7':if(grid[2][0]!='X' && grid[2][0]!='O')
    grid[2][0]=player;
    else
    turn++;
        break;
case '8':if(grid[2][1]!='X' && grid[2][1]!='O')
    grid[2][1]=player;
    else
    turn++;
    break;
case '9':if(grid[2][2]!='X' && grid[2][2]!='O')
    grid[2][2]=player;
    else
    turn++;
    break;
    }
}

void math(){                   //Gleda dali nekoj pobedil ili ima uste potezi

if((grid[0][0]=='X'&&grid[0][1]=='X' &&grid[0][2]=='X') ||
   (grid[1][0]=='X'&&grid[1][1]=='X' &&grid[1][2]=='X') ||
   (grid[2][0]=='X'&&grid[2][1]=='X' &&grid[2][2]=='X') ||
   (grid[0][0]=='X'&&grid[1][0]=='X' &&grid[2][0]=='X') ||
   (grid[0][1]=='X'&&grid[1][1]=='X' &&grid[2][1]=='X') ||
   (grid[0][2]=='X'&&grid[1][2]=='X' &&grid[2][2]=='X') ||
   (grid[0][0]=='X'&&grid[1][1]=='X' &&grid[2][2]=='X') ||
   (grid[0][2]=='X'&&grid[1][1]=='X' &&grid[2][0]=='X')
){
    gameover=false;
    draw();
    cout<<"\nPlayer 1 Win!\n";

}

if((grid[0][0]=='O'&&grid[0][1]=='O' &&grid[0][2]=='O') ||
   (grid[1][0]=='O'&&grid[1][1]=='O' &&grid[1][2]=='O') ||
   (grid[2][0]=='O'&&grid[2][1]=='O' &&grid[2][2]=='O') ||
   (grid[0][0]=='O'&&grid[1][0]=='O' &&grid[2][0]=='O') ||
   (grid[0][1]=='O'&&grid[1][1]=='O' &&grid[2][1]=='O') ||
   (grid[0][2]=='O'&&grid[1][2]=='O' &&grid[2][2]=='O') ||
   (grid[0][0]=='O'&&grid[1][1]=='O' &&grid[2][2]=='O') ||
   (grid[0][2]=='O'&&grid[1][1]=='O' &&grid[2][0]=='O')
){
    gameover=false;
    draw();
    cout<<"\nPlayer 2 Win!\n";
}

//proverka dali e TIE
int trap=0;
for (int i=0;i<=2;i++){
    for (int j=0;j<=2;j++){
        if (grid[j][i]=='O' || grid[j][i]=='X'){
            trap++;
            }
            }
            }
if (trap==9){
            gameover=false;
            draw();
            cout<<"\nTIE!\n";
            }
}
 
Последно уредено:
Член од
10 март 2014
Мислења
832
Поени од реакции
749
Место 9 if и else можеше да искористеш switch.
Вака:
Код:
switch (input){
    case 1 :
cout<<"Dividing... "<<divideNumbers(num1,num2)<<endl;
break;
    case 2 :
cout<<"Adding..."<<addNumbers(num1,num2)<<endl;
break;
    case 3 :
cout<<"Substracting..."<<substractNumbers(num1,num2)<<endl;
break;
    case 4 :
cout<<"Multiplicating..."<<multiplicateNumbers(num1,num2)<<endl;
break;
    default:
cout<<"No such operation.Please enter a valid number."<<endl;
goto again;
 }
Не би користел <<endl; на крај. "\n" е поефикасен. Endl , не само нов ред, тој прави и flush на стримот. Исто така можеше се да ставиш во едно cout.
Вака:
Код:
    cout<<"Choose an operation. \n1.Division \n2.Addition \n3.Substraction \n4.Multiplication \n ";
Функциите ги правиш покомплексни беспотреба, пробај ова:
Код:
int divideNumbers(int num1,int num2){
     return num1/num2;
}
Брат пробувам се и сешто едноставно така испадна овде.
 
Член од
11 јуни 2012
Мислења
126
Поени од реакции
23
prasanje za delce od zadaca ne mi e jasno sto pravi forot so k , znaci 3ot for vo matricata ... i-odi po redici,j-po koloni aaa k? eve primer:
/*Да се состави програма која ќе изврши замена на секој елемент на дадената матрица со сумата на
елементите од редот и колоната на кои им припаѓа. Притоа вредноста на елементот кој го заменуваме не влегува во сумита.
Почетната матрица се внесува преку тастатура. Резултатот се сместува во нова матрица која притоа се печати.
Максималните димензии на матриците се 10x10.
Пример:
1 2 4 5 14 19 20 16
2 3 4 6 --> 15 20 23 17
1 6 8 3 20 16 18 26 */
#include <stdio.h>
#define MAX 100
int main ()
{
int mat[MAX][MAX],new_mat[MAX][MAX],i,j,m,n,suma_red=0,suma_kol=0,suma_kraj=0,k,p;
printf("Vnesi broj na redici:\n");
scanf("%d",&n);
printf("Vnesi broj na koloni:\n");
scanf("%d",&m);
printf("POLNI:\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&mat[j]);
printf("CITANJE:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ",mat[j]);
printf("\n");
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
new_mat[j]=mat[j];
}
}
printf("CITANJE-NEW_MAT:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ",new_mat[j]);
printf("\n");
}


for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
suma_kol=suma_red=0;
for(k=0;k<m;k++)
{
if(k==j)
{

}
else
suma_red+=mat[k];
}
for(p=0;p<n;p++)
{
if(p==i)
{

}
else
suma_kol+=mat[p][j];
}
suma_kraj=suma_kol+suma_red;
new_mat[j]=suma_kraj;

}
}

printf("CITANJE NEW_MAT-KRAJ:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ",new_mat[j]);
printf("\n");
}









}
 
Член од
20 септември 2017
Мислења
173
Поени од реакции
230
Помош како би си решила задачава со рекурзија?
#include <algorithm>
#include <iostream>
#include <math.h>
#include <vector>

int poramnet(int);

int main() {

std::vector<int> vecPoramnetiBroevi;

std::cout << "Vnesi broj na broevi za vnes: ";
int n;
std::cin >> n;

for (int i = 0; i < n; i++) {
std::cout << "Vnesi broj: ";
int broj;
std::cin >> broj;

int poramnetBroj = poramnet(broj);
vecPoramnetiBroevi.push_back(poramnetBroj);
}

std::sort(std::begin(vecPoramnetiBroevi), std::end(vecPoramnetiBroevi));

std::cout << "Broevite poramneti:\n";
if (vecPoramnetiBroevi.size() >= 5) {
for (std::vector<int>::size_type i = 0; i < 5; i++)
std::cout << vecPoramnetiBroevi << " ";
}
else {
for (std::vector<int>::size_type i = 0; i < vecPoramnetiBroevi.size(); i++)
std::cout << vecPoramnetiBroevi << " ";
}
std::cout << '\n';

return 0;
}

int poramnet(int a) {
int poramnetBroj = 0;
int vkupnoCifri = 0;

while (a > 0) {
int cifra = a % 10;
if (cifra == 9)
cifra = 7;

poramnetBroj += cifra * pow(10, vkupnoCifri);

vkupnoCifri++;
a /= 10;
}

return poramnetBroj;
}

А задачиве од кај ги најдуваш ако не е тања? :icon_mrgr:
Ако можиш и ако смееш пушти ми линк.
Се надевам че го разбериш кодот. Ако не, слободно прашај.
 
Член од
17 септември 2012
Мислења
882
Поени од реакции
494
А задачиве од кај ги најдуваш ако не е тања? :icon_mrgr:
Ако можиш и ако смееш пушти ми линк.
Се надевам че го разбериш кодот. Ако не, слободно прашај.
Од финки ми се, по структурно програмирање, иначе рекурзивно треба, не со обична функција. Сепак фала.
 
Член од
14 октомври 2017
Мислења
154
Поени од реакции
63
Дечки ми трба помош за утре: Напиши програма со која че се внесат 10 члена со cout наместо CIN. Тој шо се разбира нека помага. Знам да дојдам само до int main () и од тука надолу дибидус.
 
S

staycalm

Гостин
Ми треба мало појаснување за еден краток код со for циклус, т.е. за излезот од кодот. Ако може некој да помогне ПП.
 

VOLK2234

еврофоб и хомоскептик
Член од
16 септември 2008
Мислења
5.517
Поени од реакции
4.386
Што ќе се деси?

Код:
void isOne(int i) {
    if (i == 1) printf("One\n");
    else printf("Launching nuclear missles! \n");
}

int main() {
    struct { int a:1; }s;
    s.a = 1;
    isOne(s.a);
    return 0;
}
 
Член од
1 ноември 2017
Мислења
44
Поени од реакции
34
Ај ве молам помош

· Напиши програма за наоѓање на најголем заеднички делител на два цели броја.

· Напиши програма за наоѓање на сите делители на природниот број n, n се внесува преку тастатура.

· Испитај дали даден природен број n е прост или сложен.

· Напиши програма за наоѓање на збирот на сите негативни броеви од n произволни броеви кои се внесуваат во циклусот , n се внесува преку тастатура .
 
Член од
1 јуни 2011
Мислења
24.467
Поени од реакции
39.194
Не знам дали се за тебе ама ова се почетнички вежби и не треба друг ти пишува код. Пробај сам прво.
 
Член од
1 ноември 2017
Мислења
44
Поени од реакции
34
Ова ми треба за тест. Прв пат почнувам со програмирање па ми треба помош.

Знам дека прост е оној кој се дели сам со себе и со еден. А сложен кој има најмалку еден делител. Знам се од ова фактички, но како во код?
 
Член од
1 јуни 2011
Мислења
24.467
Поени од реакции
39.194
Ова ми треба за тест. Прв пат почнувам со програмирање па ми треба помош.

Знам дека прост е оној кој се дели сам со себе и со еден. А сложен кој има најмалку еден делител. Знам се од ова фактички, но како во код?
Ти ги пишав кодовите во порака и линкови од вакви почетнички програми за вежбање.
 
Член од
4 септември 2018
Мислења
1
Поени од реакции
0
Здраво на сите!
Нов сум на форумов, гледам дека има доста теми кои би ми помогнале околу школо со програмирањево.
Да предложите некој сајтови или нешто слично што би ми помогнало?
 

Kajgana Shop

На врв Bottom