C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
^ Ти треба еден бројач што ќе брои колку делители има тој број што го испитуваш( таму кај условот ќе ставиш бројач). после кога ќе заврши тоа ќе ставиш еден услов ако бројот на делители е поголем од max(променлива што од старт е 1 )тогаш во max зачувуваш тоа што има во бројачот, и во една променлива индексот на тој елемент..после условот бројачот го ресетираш и тоа е...на крај ќе го печатиш елементот со тој индекс што си зачувал во некоја променлива.
Пробај сам да решиш па ако закочиш ќе помогнеме :)
 
^ Ти треба еден бројач што ќе брои колку делители има тој број што го испитуваш( таму кај условот ќе ставиш бројач). после кога ќе заврши тоа ќе ставиш еден услов ако бројот на делители е поголем од max(променлива што од старт е 1 )тогаш во max зачувуваш тоа што има во бројачот, и во една променлива индексот на тој елемент..после условот бројачот го ресетираш и тоа е...на крај ќе го печатиш елементот со тој индекс што си зачувал во некоја променлива.
Пробај сам да решиш па ако закочиш ќе помогнеме :)


Код:
#include <iostream>
using namespace std;
int main()
{
    int P,K,c=0,max=1;
    cout<<"Na pocetokot se vnesuvaat broevite P i K koisto oznacuvaat pocetok i kraj na opsegot vo kojsto ke se baraat delitelite,pri toa treba da se ispolnuva uslovot (1<=P<=K<=5000, 0<=K-P<=500)"<<endl;
    cout<<"Vnesete go brojot P kojsto oznacuva pocetok na opsegot"<<endl;
    cin>>P;
    cout<<"Vnesete go brojot K kojsto oznacuva kraj na opsegot"<<endl;
    cin>>K;
    for (int i=P ; i<=K ;i++)
    for (int b=1;b<=i;b++)
        {
        if (i%b==0)
        {
        c++; 
        }
        if(c>max)
        max==c;
        }
        cout<<"Brojot kojsto ima najmnogu deliteли vo opsegot od "<<P<<" do "<<K<<" e "<<max<<endl;
        system("pause");
        return(0);
}

Направив нешто ,но на крајот нонстоп ми дава 1,грешката е ваљда у некоја испуштена заграда за да се затвори наредба или слично.....но неможам да ја откријам од преска се тупам.... :tapp:
 
Код:
#include <iostream>
using namespace std;
int main()
{
    int P,K,c=0,max=1,broj;
    cout<<"Na pocetokot se vnesuvaat broevite P i K koisto oznacuvaat pocetok i kraj na opsegot vo kojsto ke se baraat delitelite,pri toa treba da se ispolnuva uslovot (1<=P<=K<=5000, 0<=K-P<=500)"<<endl;
    cout<<"Vnesete go brojot P kojsto oznacuva pocetok na opsegot"<<endl;
    cin>>P;
    cout<<"Vnesete go brojot K kojsto oznacuva kraj na opsegot"<<endl;
    cin>>K;
    for (int i=P ; i<=K ;i++){
        for (int b=1;b<i/2;b++)
            if (i%b==0)
                c++;
 
        if(c>max)
        {
            max=c;
            broj=i;
        }
        c=0;
    }
    cout<<"Brojot kojsto ima najmnogu deliteли vo opsegot od "<<P<<" do "<<K<<" e "<<broj<<endl;
    system("pause");
    return(0);
}
Еве то го решението.
1. == е споредување а не доделување..имаш напишано c==max тоа е грешка.
2. Кога броиш нешто сакаш тоа да изброи до крај за тој случај па после да провери дали е поголем од предходните , дали е макс итн. Затоа циклусот каде броиш колку деливи има треба да заврши до крај и после да споредиш со макс.
И кога ќе споредиш вредноста на бројачот го доделуваш на макс, и го памтиш бројот 'i' бидејќи тој број е што ни треба и потоа не заборавај да ресетираш бројач во вакви случаи бидејќи за секоја цифра само ќе се зголемува од таму каде што застанал..па најверојатно секогаш ќе ти ја печати последната цифра од некоја низа итн.
 
многу благодарам за помошта

ке се трудам натаму да не правам вакви грешки
 
Може некој во Ц да ја напише програмава ?

Да се напише програма која ја проверува и печати аритметичката средина само на непарните броеви поголеми од 50 а помали од 100.
Да се изброи и отпечати колку од внесените броеви не влегле во аритметичката средина поради неисполнетите услови
 
Може некој во Ц да ја напише програмава ?

Да се напише програма која ја проверува и печати аритметичката средина само на непарните броеви поголеми од 50 а помали од 100.
Да се изброи и отпечати колку од внесените броеви не влегле во аритметичката средина поради неисполнетите услови
Може во ц++?
--- надополнето: 9 април 2012 во 21:51 ---
Ми треба една вежба во CodeBlocks

Збир на средни цифри треба... Може помош до вечер пошто за утре ми е за испрашување? :(
Дали сакаш да ја решавам со интови или со стрингови?
 
Може во ц++?
--- надополнето: 9 април 2012 во 21:51 ---

Дали сакаш да ја решавам со интови или со стрингови?


Да ти кажам баш не се разбирам многу... ама мислам дека треба со int main () :)
 
Код:
#include <stdio.h>
 
int main()
{
    float suma = 0;
    int site = 0, isp = 0, pom;
    printf("Vnesi niza od broevi: \nVnesi nekoj znak za kraj\n");
    while(scanf("%d", &pom))
    {
        if(( pom > 50 && pom < 100 ) && pom % 2)
        {
            suma += pom;
            isp++;
        }
        site++;
    }
    if(suma==0)
        printf("Aritmeticka sredina: 0");
    else
        printf("\nAritmeticka sredina:  %.2f\n",suma/isp*1.0f);
 
    printf("Vkupno %d od vnesenite broevi ne go ispolnuvaat uslovot",(site-isp));
}
Се надевам другиот член нема да се измачи џабе :icon_lol:

А за таа со збир на средни цифри, мислам дека во средно не учат за низи ..сега за сега.
Едит:
Ај и оваа:
Код:
#include <stdio.h>
 
int main(){
    int suma = 0, broj, pom;
    printf("Vnesi nekoj broj: "); scanf("%d",&broj);
    pom = broj / 10;
    while(pom > 9){
        suma += pom % 10;
        pom /= 10;
    }
    printf("Zbir na sredni cifri:  %d",suma);
}
 
Код:
#include <stdio.h>
 
int main()
{
int n, reverse = 0, temp;
 
printf("Enter a number to check if it is a palindrome or not\n");
scanf("%d",&n);
 
temp = n;
 
while( temp != 0 )
{
reverse = reverse * 10; // 0 ,2*10=20 ,2*10=20 , 0,10,20
reverse = reverse + temp%10; //0+322 mod 10 = 2 ,20+32 mod 10=2 ,20+3 mod 10=3 0+121 mod 10 =1 ,10+12 mod 10=2 ,20+1 mod 10=1
temp = temp/10; // 322/10=32 , 32/10=3 ,0 121/10=12 ,12/10=1 ,0
// temp==0 kraj
}
 
if ( n == reverse )
printf("%d is a palindrome number.\n", n);
else
printf("%d is not a palindrome number.\n", n);
 
return 0;
}



Сам го пишував кодов и работи и се е во ред само имам нешто што не ми е баш јасно.
Кај променливата reverse ако не сум разбрал погрешно кога се пишува нова вредност старата се брише ,а во овој случај ги зема сите 3 вредности(пример коментарот 1,2,1=121)
Дали има врска што е во While па поинаку се однесува?
Ќе бидам благодарен ако ми објасни некој.
 
Ми треба една вежба во CodeBlocks

Збир на средни цифри треба... Може помош до вечер пошто за утре ми е за испрашување? :(
Код:
#include <iostream>

using namespace std;

int main()
{
    cout<<"Vnesi go brojot:"<<endl;
    long long n;
    cin>>n;
    int k=0;
    while(n>0)
    {
          k+=n%10;
          n/=10;
    }
    cout<<"Zbirot na cifrite e: "<<k<<endl;
    return 0;
}
--- надополнето: 10 април 2012 во 09:59 ---
Може некој во Ц да ја напише програмава ?

Да се напише програма која ја проверува и печати аритметичката средина само на непарните броеви поголеми од 50 а помали од 100.
Да се изброи и отпечати колку од внесените броеви не влегле во аритметичката средина поради неисполнетите услови
Код:
#include <iostream>

using namespace std;

int main()
{
    long long n=0,k=0,s=0;
    for(int i=50;i<=100;i++)
    {
      if(i%2==1)
      {
            n+=i;
            s++;
      }
      else k++;
    }
    cout<<"Aritmetickata sredina e: "<<double(n/s)<<endl;
    cout<<"Broj na broevi koi ne vleguvaat vo uslovot: "<<k<<endl;
    return 0;
}

Izvolte
 
Код:
#include <stdio.h>
 
int main()
{
    float suma = 0;
    int site = 0, isp = 0, pom;
    printf("Vnesi niza od broevi: \nVnesi nekoj znak za kraj\n");
    while(scanf("%d", &pom))
    {
        if(( pom > 50 && pom < 100 ) && pom % 2)
        {
            suma += pom;
            isp++;
        }
        site++;
    }
    if(suma==0)
        printf("Aritmeticka sredina: 0");
    else
        printf("\nAritmeticka sredina:  %.2f\n",suma/isp*1.0f);
 
    printf("Vkupno %d od vnesenite broevi ne go ispolnuvaat uslovot",(site-isp));
}
Се надевам другиот член нема да се измачи џабе :icon_lol:

А за таа со збир на средни цифри, мислам дека во средно не учат за низи ..сега за сега.
Едит:
Ај и оваа:
Код:
#include <stdio.h>
 
int main(){
    int suma = 0, broj, pom;
    printf("Vnesi nekoj broj: "); scanf("%d",&broj);
    pom = broj / 10;
    while(pom > 9){
        suma += pom % 10;
        pom /= 10;
    }
    printf("Zbir na sredni cifri:  %d",suma);
}

Учиме за кубови, збирови, низи, квадрати и се остало :(
 
Код:
#include <stdio.h>
 
int main()
{
int n, reverse = 0, temp;
 
printf("Enter a number to check if it is a palindrome or not\n");
scanf("%d",&n);
 
temp = n;
 
while( temp != 0 )
{
reverse = reverse * 10; // 0 ,2*10=20 ,2*10=20 , 0,10,20
reverse = reverse + temp%10; //0+322 mod 10 = 2 ,20+32 mod 10=2 ,20+3 mod 10=3 0+121 mod 10 =1 ,10+12 mod 10=2 ,20+1 mod 10=1
temp = temp/10; // 322/10=32 , 32/10=3 ,0 121/10=12 ,12/10=1 ,0
// temp==0 kraj
}
 
if ( n == reverse )
printf("%d is a palindrome number.\n", n);
else
printf("%d is not a palindrome number.\n", n);
 
return 0;
}



Сам го пишував кодов и работи и се е во ред само имам нешто што не ми е баш јасно.
Кај променливата reverse ако не сум разбрал погрешно кога се пишува нова вредност старата се брише ,а во овој случај ги зема сите 3 вредности(пример коментарот 1,2,1=121)
Дали има врска што е во While па поинаку се однесува?
Ќе бидам благодарен ако ми објасни некој.
Па да, точно е дека кога се пишува нова вредност во reverse се брише старото.
Ете reverse нека е 0 и бројот што си внесол да е 121 и вака иде кодот:

reverse=reverse*10 === 0=0*10
reverse=reverse+temp%10 === 0=0+121%10
(tmp)121=(tmp)121/10 === 121=121/10;

втор циклус:

reverse=reverse*10 === 1=1*10
reverse=reverse+temp%10 === 10=10+12%10
(tmp)121=(tmp)121/10 === 12=12/10;

трет циклус:

reverse=reverse*10 === 12=12*10
reverse=reverse+temp%10 === 120=120+1%10
(tmp)121=(tmp)121/10 === 1=1/10;

и ке заврши програмата..reverse ќе стане 121.
Фактички се брише старата вредност но пред да се избрише старата вредност се множи со 10 па тој резултат се доделува на reverse и веќе е сменет вредноста на reverse. После се додава остатокот од делењето tmp%10 на reverse и тоа е новата вредност на reverse.:icon_lol:
 

Kajgana Shop

Back
На врв Bottom