C#.NET

  • Креатор на темата Креатор на темата back_rest
  • Време на започнување Време на започнување
Аку може некој да ми ја направи задачава... фала ондпаред
smile.gif


Да се најдат сите природни броеви помали од природниот број nвнесен преку тастатура, кои што се деливи со сите свои цифри.

и плус да ги имаа овие работи..
3. Објаснување

Се дава детален опис за тоа како работи предложениот програм, и тоа генерално како е замислен алгоритамот, и линија по линија што прави програмот.


4. Комплексност

Се проценува времето на извршување на предложениот програм, и се дава проценка на редот на комплексноста на програмот.
void prime_num(long num){

// bool isPrime = true;
for(long i =0; i <= num; i++)
{
bool isPrime =true;// Move initialization to here
for(long j =2; j < i; j++)// you actually only need to check up to sqrt(i)
{
if(i % j ==0)// you don't need the first condition
{
isPrime =false;
break;
}
}
if(isPrime)
{
Console.WriteLine("Prime:"+ i );
}
// isPrime = true;
}}

--- надополнето: 1 јануари 2012 во 22:17 ---
Да бидам подетален , еве ти тука имаш неколку имплементации http://stackoverflow.com/questions/1510124/program-to-find-prime-numbers
 
void prime_num(long num){


// bool isPrime = true;
for(long i =0; i <= num; i++)
{
bool isPrime =true;// Move initialization to here
for(long j =2; j < i; j++)// you actually only need to check up to sqrt(i)
{
if(i % j ==0)// you don't need the first condition
{
isPrime =false;
break;
}
}
if(isPrime)
{
Console.WriteLine("Prime:"+ i );
}
// isPrime = true;
}}

--- надополнето: 1 јануари 2012 во 22:17 ---
Да бидам подетален , еве ти тука имаш неколку имплементации http://stackoverflow.com/questions/1510124/program-to-find-prime-numbers
Си ја утнал темава... друго се бара во задачата
 
Аку може некој да ми ја направи задачава... фала ондпаред
smile.gif


Да се најдат сите природни броеви помали од природниот број nвнесен преку тастатура, кои што се деливи со сите свои цифри.

и плус да ги имаа овие работи..
3. Објаснување

Се дава детален опис за тоа како работи предложениот програм, и тоа генерално како е замислен алгоритамот, и линија по линија што прави програмот.


4. Комплексност

Се проценува времето на извршување на предложениот програм, и се дава проценка на редот на комплексноста на програмот.

Еве ја ќе пробам да ја решам задачата, ама во C, ти после ќе си ја трансформираш во C#, треба да ти е piece of a cake тоа. ;) Одамна не сум решавал ваков тип на задачи, па ајде да се испробам. Само да знаеш вака не се учи програмирање. :D Без своја мака не бидува добар програмер. ;) Stay tuned за решението. :D
--- надополнето: 2 јануари 2012 во 18:30 ---
99% ти ја изработив програмата, да знаеш дека баш уживав да си ги тестирам способносите и добро е, не сум заборавил некои работи. :D


Код:
#include <stdio.h>
#define MAX 100
 
//By WildMan - from Kajgana :)))
 
int main()
{
int i, j=0, broj, m=0, cifra, temp;
int nizaCifri[MAX];
printf("Vnesi cel broj: ");
scanf("%d", &broj);
temp = broj;
while(broj>0)
{
    cifra = broj%10;
    nizaCifri[j]=cifra; j++;
    broj/=10;       
} 
 
for(i=0; i<j; i++)
{
int cifra2 = nizaCifri[i];
if(temp%cifra2==0) m++;
}
 
if(m==j)
printf("BROJOT %d E DELIV SO SITE SVOI CIFRI\n", temp);
else
printf("Brojot %d NE e deliv so site svoi cifri!\n", temp);
 
system("pause");
}

Задачава работи во Dev-C++. Не ја коментирав затоа што сметам дека треба да е јасна, како и да е, не е целосна, ти недостасува тој 1%. :D Задачата важи само за 1 број, значи внесуваш број и програмата ти кажува дали тој е делив со сите свои цифри или не е. Проблемот го решив така што ги оделував цифрите од бројот и ги сместив во помошна низа, која после ја користев за да проверувам дали првично внесениот бројот е делив со секоја цифра посебно. И ако е делив со сите цифри од низата, значи е делив со сите свои цифри. :) Во спротивен случај, не е делив. Ти треба само да вметнеш еден for циклус за да ги опфатиш сите броеви од 1 до n. Верувам ќе се снајдеш, во спротивен случај ќе го доправам и тоа, ама цената е 500 денари. :LOL: :P Задачава е 100% мој труд, каква е таква е, битно е дека имав идеја и еве ја реализирав во код. Мислам дека работи коректно, тестирав со повеќе броеви и добро излегува. Послужи се слободно со кодот и претстави го како свој труд, иако длабоко во себе ќе знаеш дека не е така. :)
Поздрав :cool:
 
Мала “грешка“ си најдов во задачата. Не е грешка, ама нешто на кое треба да се внимава. Со 0 не е дозволено делење, така што ако некој број завршува на цифра 0, треба да му се каже на програмот да ја прескокне цифрата и да проверува за други цифри. Ако внесеш на пр. број 20, 50, 1000, 350 или било кој број чија последна цифра е 0 (или воопшто ако содржи 0), ќе има crash. Затоа мала корекција треба. Е тоа сакав само да додадам. :D

Код:
for(i=0; i<j; i++)
{
int cifra2 = nizaCifri[i];
 
if(cifra2==0)
{
m++;
continue;
}
 
if(temp%cifra2==0) m++;
}
 
Ако внесеш на пр. број 20, 50, 1000, 350 или било кој број чија последна цифра е 0 (или воопшто ако содржи 0), ќе има crash.
Попаметно ќе ти биди делењето да го туриш во try catch делче... и ако има 0 ќе се изврши catch делот. Нејќум да ти солам памет, кратно и едноставно со try се минимизира (оптимизира) кодот.
 
Попаметно ќе ти биди делењето да го туриш во try catch делче... и ако има 0 ќе се изврши catch делот. Нејќум да ти солам памет, кратно и едноставно со try се минимизира (оптимизира) кодот.

Знам дека кодот не ми е најоптимизиран, ама барем среќен сум што целосно е моја реализација. :) Исто и не мораше цифрите да ги оделувам во низа, можев да проверувам за секоја цифра и ако е делив со таа цифра продолжувам (со continue) со наредната цифра, ако не е делив правак break и пишувам дека бројот не е делив со сите свои цифри. Да не ситничариме сега, ако не е битна оптимизацијата на кодот, тогаш програмата работи перфектно. :D
 
Попаметно ќе ти биди делењето да го туриш во try catch делче... и ако има 0 ќе се изврши catch делот. Нејќум да ти солам памет, кратно и едноставно со try се минимизира (оптимизира) кодот.

Колку што знам try catch throw се користат вака. Пример имаш некој метод во слојот за бизнис и ако методов прими неочекуван влез фрла грешка.
Па после во метод од слојот за ГУИ имаш try catch и ако корисников внеси да речиме брока надвор од границите бизнис методот ќе фрли а ГУИ методот ќе ја фати грешката и ќе извести.

Е сеа ако спец. вика ако бројот има нули сметај го за делив или за неделив тогаш треба едноставна проверка дали делителот е нула. А да има try catch внатре во форот не ефикасно оти една грешка е креирање на цел објект што не е оптимизација.

Ако спец вика броеви со нули не се дефинирани тогаш методот би имал само throw ако сретни 0. A дури и тоа немора оти кога ќе делиш со 0 c# автоматски ќе исфрли.
 
  1. Здраво! Дечки јас не ја разбирам задачава. Ќе замолам некој по професионалец да издвои малку време и да ми помогне. Се надевам не е толку страшна. . инаку за домашна ми е . Грчко-латински квадрат од ред n е поле G со димензии nxn од броеви:
Ако има некој кој му фаќа око овој ти на задача со квадрат нека ми пише.--- надополнето: 15 јануари 2012 во 22:51 ---
Ова е нејасната задачка :(
 

Attachments

Повели!
Код:
             int br = 5;
            int[,] k = new int[br, br];
            int[,] l = new int[br, br];
            int[,] g = new int[br, br]; //grcko-latinskiot kvadrat
            int[] redica = new int[br * br];
            int d = 0;
            Random s=new Random(20);//za random popolnuvanje na matrici
 
            //popolnuvanje so random broevi dvete matrici so dimenzii brxbr (5x5)
            for (int i = 0; i < br; i++)
                for (int j = 0; j < br; j++)
                {
                    k[i, j] = s.Next(20);
                    l[i, j] = s.Next(20);
                }
 
            //izvlekuvanje na matricata k vo redica za da moze da gi izmnozis so l-matricata
            for (int i = 0; i < br; i++)
                for (int j = 0; j < br; j++)
                {
                    redica[d] = k[i, j];
                    d++;
                }
            d = 0;
            //mnozenje na l-matricata so elementi od redicata za da se dobie g-matricata
            for (int i = 0; i < br; i++)
                for (int j = 0; j < br; j++)
                {
                    g[i, j] = redica[d] * l[i, j]; //baraniot grcko-latinski kvadrat
                    d++;
                }
Проверете го кодот мислам дека е ок :)
 
  1. Здраво! Дечки јас не ја разбирам задачава. Ќе замолам некој по професионалец да издвои малку време и да ми помогне. Се надевам не е толку страшна. . инаку за домашна ми е . Грчко-латински квадрат од ред n е поле G со димензии nxn од броеви:
Ако има некој кој му фаќа око овој ти на задача со квадрат нека ми пише.--- надополнето: 15 јануари 2012 во 22:51 ---
Ова е нејасната задачка :(
Кодов погоре работи ама има непотребни пресметки. Задачава е едностана имаш две квардатни матрици од ист ред и ги множиш соодветните елементи (елементите на иста позиција) и се ставаат во трета.

Код:
            int br = 5;
            int[,] k = new int[br, br];
            int[,] l = new int[br, br];
            int[,] g = new int[br, br]; //grcko-latinskiot kvadrat
 
           //ги пополнуваме некако
 
 
            for (int i = 0; i < br; i++)
                for (int j = 0; j < br; j++)
                {
                    g[i, j] = k[i, j] * l[i, j]; //baraniot grcko-latinski kvadrat
                    d++;
                }
 
Кодов погоре работи ама има непотребни пресметки. Задачава е едностана имаш две квардатни матрици од ист ред и ги множиш соодветните елементи (елементите на иста позиција) и се ставаат во трета.

Точно, има + една листа :) Бидејќи сите вака ги решаваат, школски задачките... па да смениме малку :)
Не се бара брзина или мал број пресметки, може да се игра со кодот ...
 
Некој некакво искуство со апликација за пуштање интернет радио? Да кликнам на баттон и да се поврзи пример на антена 5 и да си стримува?
 
Некој некакво искуство со апликација за пуштање интернет радио? Да кликнам на баттон и да се поврзи пример на антена 5 и да си стримува?

Сакаш тоа да го изведеш во C# или може VB?
 

Kajgana Shop

Back
На врв Bottom