C/C++

Spaski

Vita - Amore - Riso
Член од
31 јануари 2009
Мислења
263
Поени од реакции
11
А може еве да објасниш како работи таа твоја функција? Не ми е јасна. Btw кај мене не ги дава очекуваните резултати.
Функцијава:
Код:
int nzs(int x, int y)
{
 int i=2;
[INDENT] if(x==1) 
[/INDENT]        return y;
    if(y==1)
        return x;
    while(x%i && y%i)
        i++;
    if(x%i)
        x/=i;
    if(y%i)
        y/=i;
return i*nzs(x,y);
}
Каде:
Код:
   if(x==1)
     return y;
   if(y==1)
     return x;
ова е основен случај каде се прекинува ф-јата (ако х е 1 враќа у и обратно) затоа што нзс на 1 и било кој друг број е самиот број.

Потоа:
Код:
 while(x%i && y%i)
        i++;
овој дел проверува кој број е делител на х и у(пример ако 2 не е делител на х и у тогаш го зголемува бројачот се додека не го најде првиот број што е делител на х или на у)
кога ќе најде кој е делител барем еден од условите станува 0 и излегува од циклусот.

Овде проверува:
Код:
if(x%i)
        x/=i;
    if(y%i)
        y/=i;
чиј делител е бројачот и го дели целобројно ако е негов делител.

И на крај рекурзијата
Код:
return i*nzs(x,y);
бројот што е делител го множи со следниот делител(што го вреќа функцијата се додека не дојде до основниот случај).

Пример(броевите 12 и 15) НЗС(12,15)=60
12|2 15|3
6|2 5|5
3|3 1|
1|
2*2*3*5=60
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.106
Поени од реакции
5.771
Инаку да проверена е програмата и работи супер.
А за тоа дека мојата функција е итерација, да можеби е.
На крај поентата беше функцијата да се реши со рекурзија или, штом ти така викаш, со итерација.
Дали ти уствари знаеш дека итерација и рекурзија се 2 различни работи???
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.106
Поени од реакции
5.771
И, ако пишуваш рекурзија - пишуваш рекурзија, а не итерација. Ако во рекурзијата ставиш итерација тоа веќе не е рекурзија. Ама ќе си видиш сам наредна година по Алгоритми и структури на податоци. Ќе имаш функции кои ќе ти се бараат да се напишат и со 2те, ама ќе видиш дека има голема разлика од едното до другото, и во ниеден случај тие 2 не се мешаат.
 
Член од
14 јануари 2008
Мислења
1.341
Поени од реакции
162
И, ако пишуваш рекурзија - пишуваш рекурзија, а не итерација. Ако во рекурзијата ставиш итерација тоа веќе не е рекурзија. Ама ќе си видиш сам наредна година по Алгоритми и структури на податоци. Ќе имаш функции кои ќе ти се бараат да се напишат и со 2те, ама ќе видиш дека има голема разлика од едното до другото, и во ниеден случај тие 2 не се мешаат.
Не знам зашто упорно се инаетиш. Секоја функција (било математичка или програмска) која зависи од свои помали вредности е рекурзивна. Точка. Во контекст на програмски јазици, секоја функција која се повикува самата себе е рекурзивна. Крај.

--- надополнето ---

А може еве да објасниш како работи таа твоја функција? Не ми е јасна. Btw кај мене не ги дава очекуваните резултати.
Истото и за тебе важи.
 
A

apidrone

Гостин
И, ако пишуваш рекурзија - пишуваш рекурзија, а не итерација. Ако во рекурзијата ставиш итерација тоа веќе не е рекурзија. Ама ќе си видиш сам наредна година по Алгоритми и структури на податоци. Ќе имаш функции кои ќе ти се бараат да се напишат и со 2те, ама ќе видиш дека има голема разлика од едното до другото, и во ниеден случај тие 2 не се мешаат.
Батали, не можеш да им докажеш.
 

Spaski

Vita - Amore - Riso
Член од
31 јануари 2009
Мислења
263
Поени од реакции
11
И, ако пишуваш рекурзија - пишуваш рекурзија, а не итерација. Ако во рекурзијата ставиш итерација тоа веќе не е рекурзија. Ама ќе си видиш сам наредна година по Алгоритми и структури на податоци. Ќе имаш функции кои ќе ти се бараат да се напишат и со 2те, ама ќе видиш дека има голема разлика од едното до другото, и во ниеден случај тие 2 не се мешаат.
Ако кога ќе ставам во рекурзија итерација и, по твое, тоа нема да биде рекурзија, тогаш што ќе биде тоа?
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Еве ви рекурзија:

Код:
public bool inaet(bool del) {
return moderator.check() || administrator.check() ? false : inaet(true);
}
Или пак пробајте на гугл да пребарате под поимот „recursion“ и запазете што се дешава со „Did you mean: “ :icon_lol:
 
Член од
14 јануари 2008
Мислења
1.341
Поени од реакции
162
Еве ви рекурзија:

Код:
public bool inaet(bool del) {
return moderator.check() || administrator.check() ? false : inaet(true);
}
Или пак пробајте на гугл да пребарате под поимот „recursion“ и запазете што се дешава со „Did you mean: “ :icon_lol:
Лудница! :pos2:
 

Jax Rebel

Navajo Rider
Член од
6 јули 2008
Мислења
5.255
Поени од реакции
2.241
Пишав програма која ќе менува позиција на минимален и максимален елемент во една низа, но не знам како да направам форматиран излез(па ако може и влез), значи да не биде ако внесам 3х3 да ми печати:

а[00] a[01] a[02]
a[10] a[11] a[12]
a[20] a[21] a[22],

а не како сега што ми е:

а[00]
a[01]
.
.
.


п.с. еве ја програмата изменете ја ако може да се направи ова:

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[100][100],i,j,n,m,iMax,jMax,iMin,jMin,min,max,pom;
    printf("Vnesi broj na redici:"); scanf("%d",&n);
    printf("Vnesi broj na koloni:"); scanf("%d",&m);
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
                    printf("a[%d][%d]=",i,j);
                    scanf("%d",&a[i][j]);
    }
    min=a[0][0]; iMin=0; jMin=0;
    max=a[0][0]; iMax=0; jMax=0;
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
                    if(a[i][j]<min)
                    {
                                   min=a[i][j];
                                   iMin=i; jMin=j;
                    }
                    if(a[i][j]>max)
                    {
                                   max=a[i][j];
                                   iMax=i; jMax=j;
                    }
    }
    pom=a[iMin][jMin];
    a[iMin][jMin]=a[iMax][jMax];
    a[iMax][jMax]=pom;
    for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    printf("a[%d][%d]=%d\n",i,j,a[i][j]);
    system("pause");
    return 0;
}
 
A

apidrone

Гостин
Пишав програма која ќе менува позиција на минимален и максимален елемент во една низа, но не знам како да направам форматиран излез(па ако може и влез), значи да не биде ако внесам 3х3 да ми печати:

а[00] a[01] a[02]
a[10] a[11] a[12]
a[20] a[21] a[22],
Еве ти за излез (не знам за влез, а и мислам дека нема потреба). П.С. ова е од последните for циклуси надоле, да не пастирам цел код:
Код:
for(i=0;i<n;i++)
            {
               for(j=0;j<m;j++)
                 {
                               printf("a[%d][%d]=%d\t",i,j,a[i][j]);
                 }
            printf("\n");
            }
            system("pause");
            return 0;
        }
 

Jax Rebel

Navajo Rider
Член од
6 јули 2008
Мислења
5.255
Поени од реакции
2.241
Ај помош со лабораториските за утре.

Вака пробувам со втората, но не знам како да продолжам до крај, а 1 и 3 пробував нешто, но не е за тука.

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[10][10],n,i,j,s=0;
    printf("Vnesi broj na redovi i koloni:\t");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
                    printf("a[%d][%d]=",i,j);
                    scanf("%d",&a[i][j]);
    }
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    if(i+j=n-1)
    a[i][j]=
 

Attachments

Spaski

Vita - Amore - Riso
Член од
31 јануари 2009
Мислења
263
Поени од реакции
11
Ај помош со лабораториските за утре.

Вака пробувам со втората, но не знам како да продолжам до крај, а 1 и 3 пробував нешто, но не е за тука.

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[10][10],n,i,j,s=0;
    printf("Vnesi broj na redovi i koloni:\t");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
                    printf("a[%d][%d]=",i,j);
                    scanf("%d",&a[i][j]);
    }
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    if(i+j=n-1)
    a[i][j]=
Погрешно ти се декларирани сумата и низата
треба како флоат да ги ставиш.
Еве ти ја втората, а ако ги сакаш првата и третата пиши ми ПП, ќе ти ги пратам.
Код:
// lab7.2
#include<stdio.h>
#define MAX 10
int main()
{
    float a[MAX][MAX],ars; int n,m,i,j;
    
    printf("Vnesi dimenzii na matrica: ");
    scanf("%d %d",&m,&n);
    printf("\nVnesi elementi vo matricata:\n");
    for(i=0;i<m;++i)
        for(j=0;j<n;++j)
        {
            printf("a[%d,%d]=",i,j);
            scanf("%f",&a[i][j]);
        }
    printf("\n\n");
    for(i=0;i<m;++i)
    {
        printf("\n\t");
        for(j=0;j<n;++j)
            printf("%6.1f",a[i][j]);
    }
    printf("\n\n");
    
    for(i=0;i<m;++i)
    {
        ars=0.0;
        for(j=0;j<n;++j)
            ars+=a[i][j];
        ars=ars/(n*1.0);
        a[i][n-1-i]=ars;
    }
    
    for(i=0;i<m;++i)
    {
        printf("\n\t");
        for(j=0;j<n;++j)
            printf("%6.1f",a[i][j]);
    }
return 0;
}
 
Член од
9 декември 2010
Мислења
9
Поени од реакции
0
POMOS mi treba programski kod za zadacava HITNO vo C++

Kako otkupna cena pronaogacot na sahot na Carot mu pobaral pcenica spored slednata sema
-Za prvoto pole pobaral ednp zrno pcenica
-Za sekoe naredno pole pobaral duplo od vkupniot broj na veke postavenite zrna za site polinja (2-ro duplo od prvo, za 3to pole duplo poveke od vkupniot zbir na 1oto i 2roto pole)
Da se napravi programa koja ke go presmeta i ispise vkupniot broj na zrna so koj treba da se otkupat site polinja
 

Kajgana Shop

На врв Bottom