Помош: Кратки програмки

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.144
Поени од реакции
1.102
Па да, и јас така ја разбрав, а ова е поставена задача за вежбање, текстот е баш ваков :/
Значи ти треба код за проверка дали матрицата е симетрична по хоризонтала? Па вака, нешто би било
for(int i = 0; i<n;i++)
for(int j=0; j<n;j++)
{
if(matrica[ i ][j] != matrica[n-1-i][j] ) {
//togas ne e simetrica
return false; }
}
return true;
Значи го земаш првиот ред и последниот, па вториот и претпоследниот итн..., и проверуваш дали се исти.
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Значи ти треба код за проверка дали матрицата е симетрична по хоризонтала? Па вака, нешто би било
for(int i = 0; i<n;i++)
for(int j=0; j<n;j++)
{
if(matrica[ i ][j] != matrica[n-1-i][j] ) {
//togas ne e simetrica
return false; }
}
return true;
Значи го земаш првиот ред и последниот, па вториот и претпоследниот итн..., и проверуваш дали се исти.
Благодарам колега :) Само јас цел ден се мислам за некое универзално решение кои би опфатило било каква матрица, не само квадратна, тоа беше проблемот :))
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.144
Поени од реакции
1.102
Благодарам колега :) Само јас цел ден се мислам за некое универзално решение кои би опфатило било каква матрица, не само квадратна, тоа беше проблемот :))
Па ова решение работи на било каква матрица, само во вториот for наместо да оди до n, ќе ставиш да оди до бројот на колони, да речеме m. И секако, сега можеш да го оптимизираш, да речеме првиот for да врти до n/2, за да не правиш иста проверка по 2 пати....
 
Член од
16 октомври 2013
Мислења
3
Поени од реакции
1
Ќе може да ги реши некој овие две задачи и ако може мало објаснување :)

1.Да се состави програма која ќе изврши замена на секој елемент на дадена матрица со разликата на сумата на елементите од редот и сумата на елементите од колоната на кои им припаѓа(сума на ред)-(сума на колона).Притоа вредноста на елементот кој го заменуваме не влегува во сумите.Почетната матрица се внесува преку тастатура.Резултатот се сместува во нова матрица, која се печати.Максимални димензии на матриците се 10x10.

2.Да се напише функција што како влезен аргумент прима низа од знаци.Функцијата треба да ги замени последователните исти цифри со една цифра.
Пример1:низата:
"Можну оценки на испитот се 6,77,888,9,10", се трансформира во
"Можни оценки на испитот се 6,7,8,9,10."
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.144
Поени од реакции
1.102
Ќе може да ги реши некој овие две задачи и ако може мало објаснување :)

1.Да се состави програма која ќе изврши замена на секој елемент на дадена матрица со разликата на сумата на елементите од редот и сумата на елементите од колоната на кои им припаѓа(сума на ред)-(сума на колона).Притоа вредноста на елементот кој го заменуваме не влегува во сумите.Почетната матрица се внесува преку тастатура.Резултатот се сместува во нова матрица, која се печати.Максимални димензии на матриците се 10x10.

2.Да се напише функција што како влезен аргумент прима низа од знаци.Функцијата треба да ги замени последователните исти цифри со една цифра.
Пример1:низата:
"Можну оценки на испитот се 6,77,888,9,10", се трансформира во
"Можни оценки на испитот се 6,7,8,9,10."
За првата задача.

HTML:
#include <iostream>

using namespace std;

int main()
{
    int m;//koloni
    int n;//redici
    m=2;//davanje vrednosti za testiranje za m,n;
    n=3;
int mat[m][n];
for(int i=0;i<n;i++)        //polnenje na matricata
    for(int j=0;j<m;j++)
    cin>>mat[i][j];

for(int i=0;i<n;i++) {      //pecatanje na vnesenata matrica;
        cout<<endl;
for(int j=0;j<m;j++) {

    cout<<mat[i][j]<<" ";
}
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) {
     int sumaRed=0,sumaKolona=0;
for(int k=0;k<m;k++) {      //presmetuvanje na sumata na redot vo koj se naogjame
if(k!=j)  //izbeguvanje na samiot clen bidejki spored uslovot ne smee da vleze vo sumata
    sumaRed+=mat[i][k];
}
for(int q=0;q<n;q++) {   //presmetuvanje na sumata na kolonata vo koja se naogjame
    if(q!=i)              //izbeguvanje na samiot clen bidejki spored uslovot ne smee da vleze vo sumata
    sumaKolona+=mat[q][j];
}
int rezultat = sumaRed - sumaKolona; //presmetuvanje na razlikata i menuvanje na vrednosta na clenot
mat[i][j]=rezultat;
}
  for(int i=0;i<n;i++) {    //pecatenje na izmenetata matrica
        cout<<endl;
for(int j=0;j<m;j++) {

    cout<<mat[i][j]<<" ";
}
}
}
E сега, во ова решение замените се прават веднаш, т.е. кога ќе го измениме првиот член, во пресметките за вториот член ќе се користи новата (изменета) вредност на првиот член а не старата. Ако сакаш да се користи старата вредност тогаш ќе направиш нова матрица и резултатите ќе ги запишуваш во неа, па на крај само ќе ги изедначиш двете матрици.


За втората задача нема да ти дадам код, немам време сега да пишувам, ама еве две идеи што ми доаѓаат.
1.
Стави ги сите елементи во една низа. Почни да ја изминуваш низата и секогаш памти го последниот член кој си го поминал. Ако наидеш на дупликат, тогаш помести ја целата низа за едно место во лево.
2.
Стави ги сите елементи во една низа. Направи уште една дупликат низа со иста должина. Почни да ја изминуваш првата и секогаш памти го последниот член кој си го изминал. Ако новиот елемент е еднаков со последниот кој си го изминал тогаш не прави ништо, ако е различен тогаш запиши го во новата низа и стави го сега тој да биде последен.

Е сега гледам дека дека ти се бара само цифри да заменуваш, ама има и за тоа функција, isDigit или како и да беше таму.
 
Член од
16 октомври 2013
Мислења
3
Поени од реакции
1
За првата задача.

HTML:
#include <iostream>

using namespace std;

int main()
{
    int m;//koloni
    int n;//redici
    m=2;//davanje vrednosti za testiranje za m,n;
    n=3;
int mat[m][n];
for(int i=0;i<n;i++)        //polnenje na matricata
    for(int j=0;j<m;j++)
    cin>>mat[i][j];

for(int i=0;i<n;i++) {      //pecatanje na vnesenata matrica;
        cout<<endl;
for(int j=0;j<m;j++) {

    cout<<mat[i][j]<<" ";
}
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) {
     int sumaRed=0,sumaKolona=0;
for(int k=0;k<m;k++) {      //presmetuvanje na sumata na redot vo koj se naogjame
if(k!=j)  //izbeguvanje na samiot clen bidejki spored uslovot ne smee da vleze vo sumata
    sumaRed+=mat[i][k];
}
for(int q=0;q<n;q++) {   //presmetuvanje na sumata na kolonata vo koja se naogjame
    if(q!=i)              //izbeguvanje na samiot clen bidejki spored uslovot ne smee da vleze vo sumata
    sumaKolona+=mat[q][j];
}
int rezultat = sumaRed - sumaKolona; //presmetuvanje na razlikata i menuvanje na vrednosta na clenot
mat[i][j]=rezultat;
}
  for(int i=0;i<n;i++) {    //pecatenje na izmenetata matrica
        cout<<endl;
for(int j=0;j<m;j++) {

    cout<<mat[i][j]<<" ";
}
}
}
E сега, во ова решение замените се прават веднаш, т.е. кога ќе го измениме првиот член, во пресметките за вториот член ќе се користи новата (изменета) вредност на првиот член а не старата. Ако сакаш да се користи старата вредност тогаш ќе направиш нова матрица и резултатите ќе ги запишуваш во неа, па на крај само ќе ги изедначиш двете матрици.


За втората задача нема да ти дадам код, немам време сега да пишувам, ама еве две идеи што ми доаѓаат.
1.
Стави ги сите елементи во една низа. Почни да ја изминуваш низата и секогаш памти го последниот член кој си го поминал. Ако наидеш на дупликат, тогаш помести ја целата низа за едно место во лево.
2.
Стави ги сите елементи во една низа. Направи уште една дупликат низа со иста должина. Почни да ја изминуваш првата и секогаш памти го последниот член кој си го изминал. Ако новиот елемент е еднаков со последниот кој си го изминал тогаш не прави ништо, ако е различен тогаш запиши го во новата низа и стави го сега тој да биде последен.

Е сега гледам дека дека ти се бара само цифри да заменуваш, ама има и за тоа функција, isDigit или како и да беше таму.

Fala mnogu za pomosta :)
 

DarkoG

Better then ever before.
Член од
19 август 2008
Мислења
701
Поени од реакции
81
Некој да ми помогне, како би можело рекурзивно да се пресмета сума на цифрите кои се наоѓаат на парни позиции од даден број почнуваќи од лево кон десно?

Пример: 1234 = 6 (2+4 = 6)

Благодарам
 
Член од
16 февруари 2006
Мислења
459
Поени од реакции
48
Некој да ми помогне, како би можело рекурзивно да се пресмета сума на цифрите кои се наоѓаат на парни позиции од даден број почнуваќи од лево кон десно?

Пример: 1234 = 6 (2+4 = 6)

Благодарам
Еве ти ја во јава
Код:
int sumaParniRekurzivno(int[] broevi, int i, int rezultat) {
        if (i == broevi.length)
            return rezultat;

        if (broevi[i] % 2 == 0)
            rezultat+= broevi[i];
    
        return sumaParniRekurzivno(broevi, ++i, rezultat);
    }
 
Член од
21 октомври 2009
Мислења
1.529
Поени од реакции
2.394
луѓе помагајте.
ми треба код за пресметување на инверзна матрица во C#
или пак ако има готова база или класа за симнување која го можи ова пишете. 3 дена се тупам и ќе пукнам више.
 
Член од
16 февруари 2006
Мислења
459
Поени од реакции
48
луѓе помагајте.
ми треба код за пресметување на инверзна матрица во C#
или пак ако има готова база или класа за симнување која го можи ова пишете. 3 дена се тупам и ќе пукнам више.
Пробај сам , ако заглавиш пиши кај си заглавил , пушти код и ќе помогнеме.
 
Член од
21 октомври 2009
Мислења
1.529
Поени од реакции
2.394
Пробај сам , ако заглавиш пиши кај си заглавил , пушти код и ќе помогнеме.
се откажав од барање на алгоритам за пресметка на инверзна матрица..
се решив да го куцам амалски ( за секој член од матрицата соодветниот производ)
Направив за 3х3, а на ист начин ќе го направам за 4х4. Ако некој му текни некаков алгоритам нека постира, ќе се најде некогаш за некого, јас се откажав од алгоритмот. Ќе одам пешки:icon_lol:
Еве за 3х3

Код:
public static double[,] InverseMatrix(double[,] d)
        {
            double[,] m = d;
            double detA = m[0, 0] * (m[1, 1] * m[2, 2] - m[2, 1] * m[1, 2]) - m[0, 1] * (m[1, 0] * m[2, 2] - m[2, 0] * m[1, 2]) + m[0, 2] * (m[1, 0] * m[2, 1] - m[2, 0] * m[1, 1]);
            double det = 1 / (detA);
            double[,] fin = new double[3, 3];
            fin[0, 0] = det * (m[1, 1] * m[2, 2] - m[2, 1] * m[1, 2]);
            fin[0, 1] = det * (m[0, 2] * m[2, 1] - m[0, 1] * m[2, 2]);
            fin[0, 2] = det * (m[0, 1] * m[1, 2] - m[0, 2] * m[1, 1]);

            fin[1, 0] = det * (m[1, 2] * m[2, 0] - m[1, 0] * m[2, 2]);
            fin[1, 1] = det * (m[0, 0] * m[2, 2] - m[0, 2] * m[2, 0]);
            fin[1, 2] = det * (m[0, 2] * m[1, 0] - m[0, 0] * m[1, 2]);

            fin[2, 0] = det * (m[1, 0] * m[2, 1] - m[1, 1] * m[2, 0]);
            fin[2, 1] = det * (m[0, 1] * m[2, 0] - m[0, 0] * m[2, 1]);
            fin[2, 2] = det * (m[0, 0] * m[1, 1] - m[0, 1] * m[1, 0]);
            return fin;

        }
за 4х4 еве ги пресметките, треба да ги откуцам вечер.:coffee:

каде

и



Дипломска иначе работам:). Очигледно гадно сум се заебал.
Правам софтверско решение (апликација) во C# за управување на роботска рака со 6DOF преку компјутер.
 
Член од
16 февруари 2006
Мислења
459
Поени од реакции
48
Дипломска иначе работам:). Очигледно гадно сум се заебал.
Правам софтверско решение (апликација) во C# за управување на роботска рака со 6DOF преку компјутер.
Не работам C#, но како што гледам има Matrix класа ,и во неа има invert метода , не гледам причина зашто не би ја искористил неа ?
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.invert(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

Доколку не ти заврши ова работа , еве ти и алгоритам за инверзна
Код:
public static double[][] InvertMatrix(double[][] A)
{
    int n = A.Length;
    //e will represent each column in the identity matrix
    double[] e;
    //x will hold the inverse matrix to be returned
    double[][] x = new double[n][];
    for (int i = 0; i < n; i++)
    {
        x[i] = new double[A[i].Length];
    }
    /*
    * solve will contain the vector solution for the LUP decomposition as we solve
    * for each vector of x.  We will combine the solutions into the double[][] array x.
    * */
    double[] solve;

    //Get the LU matrix and P matrix (as an array)
    Tuple<double[][], int[]> results = LUPDecomposition(A);

    double[][] LU = results.Item1;
    int[] P = results.Item2;

    /*
    * Solve AX = e for each column ei of the identity matrix using LUP decomposition
    * */
    for (int i = 0; i < n; i++)
    {
        e = new double[A[i].Length];
        e[i] = 1;
        solve = LUPSolve(LU, P, e);
        for (int j = 0; j < solve.Length; j++)
        {
            x[j][i] = solve[j];
        }
    }
    return x;
}
 
Член од
21 јануари 2013
Мислења
231
Поени од реакции
144
Има некој што работел java во play framework? Имам една бабачко форма ама никако и никако не можам со submit да ги извадам податоците од неа. Со bindFormfromRequest data ми е празно. Request.body() ми е null. Живци искинав 3 дена немам спиено. Може некој да ми објасни како да извлечам податоци од форма која има променлив број на полиња во play framework, да видам дали исто правам. Исто, ако некој има идеја кај би можела да грешам, бујрум. Ептен ми е итно
 
Член од
16 февруари 2006
Мислења
459
Поени од реакции
48
Има некој што работел java во play framework? Имам една бабачко форма ама никако и никако не можам со submit да ги извадам податоците од неа. Со bindFormfromRequest data ми е празно. Request.body() ми е null. Живци искинав 3 дена немам спиено. Може некој да ми објасни како да извлечам податоци од форма која има променлив број на полиња во play framework, да видам дали исто правам. Исто, ако некој има идеја кај би можела да грешам, бујрум. Ептен ми е итно
Без код ништо не правиме, пушти го кодот прво :)
 
Член од
20 август 2014
Мислења
5
Поени од реакции
0
Ве молам за помош ... Ако некој ги знае решенијата на овие 2 задачи го молам да помогне :)

1. Денес на страната на една авионска компанија се направени N резервации на авионски билети. Секој патник при резервација го пишува своето име, презиме, број на пасош и државата во која живее (сите одвоени со по едно празно место). Администраторите во авионската компанија во својата база на градови внесуваат M броеви на пасоши и информација дали истите истекуваат за помалку од три месеци (одвоени со празно место). На крај се внесува број на пасош на еден човек. Треба да се провери дали тој човек денес направил резервација во авионската компанија. Доколку денес не направил резервација, на екран да се испечати “<ime prezime> ne rezerviral”. Доколку направил резервација, но пасошот му истекува за помалку од три месеци, на екран да се испечати порака “Ne smee da leta <ime prezime>”, во спротивно да се ипечати порака “Prijaten let <ime prezime>”.

Пример: 2

Petko Petkov A11111 Makedonija

Nikola Nikolov A55555 Makedonija

3

A11111 true

A55555 false

A33333 true

А55555

Prijaten let Nikola Nikolov


2.На мапата не една држава се претставени N градови, заедно со патните врските помеѓу нив. За секој пат кој поврзува два града се знае должината изразена во километри. Еден патник сака да ги посети сите градови и се знае градот од кој тргнува. Треба да му погнете да ја минимизира вкупната патека, при што вкупната помината километража да биде што е можно најмала.
ВИ БЛАГОДАРАМ МНОГУ :)
 

Kajgana Shop

На врв Bottom