C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Еве од мене Нула Икс Нула игра у 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";
            }
}
 
Последно уредено:
Место 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;
}
Брат пробувам се и сешто едноставно така испадна овде.
 
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");
}









}
 
Помош како би си решила задачава со рекурзија?
recursion.png
 
Помош како би си решила задачава со рекурзија?
recursion.png
#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:
Ако можиш и ако смееш пушти ми линк.
Се надевам че го разбериш кодот. Ако не, слободно прашај.
 
А задачиве од кај ги најдуваш ако не е тања? :icon_mrgr:
Ако можиш и ако смееш пушти ми линк.
Се надевам че го разбериш кодот. Ако не, слободно прашај.
Од финки ми се, по структурно програмирање, иначе рекурзивно треба, не со обична функција. Сепак фала.
 
Дечки ми трба помош за утре: Напиши програма со која че се внесат 10 члена со cout наместо CIN. Тој шо се разбира нека помага. Знам да дојдам само до int main () и од тука надолу дибидус.
 
Ми треба мало појаснување за еден краток код со for циклус, т.е. за излезот од кодот. Ако може некој да помогне ПП.
 
Што ќе се деси?

Код:
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;
}
 
Ај ве молам помош

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

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

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

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

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

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

Kajgana Shop

Back
На врв Bottom