C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
Да се напише програма која даден цел број ќе го транформира така што нулите ќе ги смести како најмалку значајни цифри во бројот. На екран да се отпечати новодобиениот број.
Пример: 10220340 ------12234000

Помош некој?
 
Да се напише програма која даден цел број ќе го транформира така што нулите ќе ги смести како најмалку значајни цифри во бројот. На екран да се отпечати новодобиениот број.
Пример: 10220340 ------12234000

Помош некој?
Пробај да изброиш колку нули има бројот. На пример, 10230450 има три нули. Сега избриши си ги сите нули од бројот. Треба да го добиеш бројот 12345. Сега додади три нули на крајот.
За вадење на цифри од број, прво правиш модул(%) 10 на бројот, со што ја добиваш последната цифра. Потоа го делиш бројот со 10 и повторно го повторуваш истото.
Пример: 12345
12345%10 = 5.
12345/ 10 = 1234
1234 % 10 = 4
1234 / 10 = 123
...
 
Пробај да изброиш колку нули има бројот. На пример, 10230450 има три нули. Сега избриши си ги сите нули од бројот. Треба да го добиеш бројот 12345. Сега додади три нули на крајот.
За вадење на цифри од број, прво правиш модул(%) 10 на бројот, со што ја добиваш последната цифра. Потоа го делиш бројот со 10 и повторно го повторуваш истото.
Пример: 12345
12345%10 = 5.
12345/ 10 = 1234
1234 % 10 = 4
1234 / 10 = 123
...
Нема да му биде сложено ако има уште поголеми броеви ? Јас мислам со стринг да се проба ?
 
Нема да му биде сложено ако има уште поголеми броеви ? Јас мислам со стринг да се проба ?
Зошто би било сложено ? Решението со string би имало иста комплексност. Треба да да ја изминеш низата/бројот и да ги избришеш сите нули. Истото го правиш и тука, го изминуваш бројот и ги бришеш нулите. Откако ќе ги избришеш нулите само го додаваш бројот на нули на крај.
 
Зошто би било сложено ? Решението со string би имало иста комплексност. Треба да да ја изминеш низата/бројот и да ги избришеш сите нули. Истото го правиш и тука, го изминуваш бројот и ги бришеш нулите. Откако ќе ги избришеш нулите само го додаваш бројот на нули на крај.
Не сум доволно стручен па незнам многу само знам за стринг дека може бит оператор нешто како беше и на пример ако тој е 0 го носи последен во низата и на крај го печати бројот. Ако некој знае нешто повеќе може и да напише ..
 
Не сум доволно стручен па незнам многу само знам за стринг дека може бит оператор нешто како беше и на пример ако тој е 0 го носи последен во низата и на крај го печати бројот. Ако некој знае нешто повеќе може и да напише ..
Според прашањето кое е поставено погоре, јас претпоставив дека членот сака да решава со број(int), бидејќи задачата е типична почетничка задача. Моја претпоставка е дека тој никогаш не користел стринг, а па уште помалце знае за готови функции кои ги поседува таа библиотека. Искрено не сум користел таква функција каква што спомнуваш, но бит операторите работат врз бинарни броеви (од таму и произлегува нивното име) а не врз декадни броеви какви што членот користи во задачата. Поради тоа постои разлика помеѓу бројот 101 во декаден систем и бројот 101 во бинарен систем (5 во декаден), па и нулите имаат различно значење во овие два системи.
 
Да се напише програма која даден цел број ќе го транформира така што нулите ќе ги смести како најмалку значајни цифри во бројот. На екран да се отпечати новодобиениот број.
Пример: 10220340 ------12234000

Помош некој?
Идејата на задачата е да го изминеш цел број цифра по цифра, доколку цифрата не е 0 да ја додаваш на почетокот од некој новоформиран број, а доколку е 0 само да го броиш бројот на нули, и на крај да помножиш со 10 на степен бројот на нулите.

Нека n е оригиналниот број, brNuli е бројот на нули (иницијализиран на 0 на почеток), novBroj е новиот број, иницијализиран на 0 на почеток, и stepen нека е бројот на моментални цифри во новиот број (иницијализиран на 1 на почеток).

Псевдокод:
while n != 0:
cifra <- n mod 10
if cifra != 0:
novBroj <- novBroj + stepen * cifra
stepen <- stepen * 10
else:
brNuli <- brNuli + 1
n <- n div 10
end while
novBroj <- novBroj * pow(10, brNuli)

Мислам дека не е проблем да се претвори во C код одовде. Ако има нешто нејасно со кодот прашај.

Време им е на електро да ги сменат задачиве ПиА1, 3 години врти оваа :vrtioci:
 
Идејата на задачата е да го изминеш цел број цифра по цифра, доколку цифрата не е 0 да ја додаваш на почетокот од некој новоформиран број, а доколку е 0 само да го броиш бројот на нули, и на крај да помножиш со 10 на степен бројот на нулите.

Нека n е оригиналниот број, brNuli е бројот на нули (иницијализиран на 0 на почеток), novBroj е новиот број, иницијализиран на 0 на почеток, и stepen нека е бројот на моментални цифри во новиот број (иницијализиран на 1 на почеток).

Псевдокод:
while n != 0:
cifra <- n mod 10
if cifra != 0:
novBroj <- novBroj + stepen * cifra
stepen <- stepen * 10
else:
brNuli <- brNuli + 1
n <- n div 10
end while
novBroj <- novBroj * pow(10, brNuli)

Мислам дека не е проблем да се претвори во C код одовде. Ако има нешто нејасно со кодот прашај.

Време им е на електро да ги сменат задачиве ПиА1, 3 години врти оваа :vrtioci:
фала, работи таман
 
12650399_1055470897837946_2047953409_n.jpg


ако може некој да ми помогне со задачиве ке ви бидам многу благодарен :)
 
12650399_1055470897837946_2047953409_n.jpg


ако може некој да ми помогне со задачиве ке ви бидам многу благодарен :)
Многу лошо е да очекуваш дека некој целосно ќе ти ги реши сите задачи тука. Дури и некој да ти ги реши, нема никакво добро да ти направи. Ако сакаш да научиш програмирање, тогаш ќе треба да седнеш и да пробаш да ги решиш. Ќе почнеш, ќе пишуваш до кај што знаеш, ќе заглавиш, па ќе се мачиш едно 5-6 саати па после ќе прашаш за совет. Еве да речеме првата задача. Прво декларирај низа од 13 елементи. После пробај да ја исполниш низата со елементи. Потоа пробај да ги испечатиш елементите, да видиш дали добро си ги внел. Кога ќе го направиш тоа, во еден фор циклус изминувај ја низата и проверувај дали моменталниот елемент е тој што го бараш. Ако е, тогаш break. Ако овие работи што ти ги кажав ти се нејасни, тогаш прочитај ја теоријата уште неколку пати па пробај пак да решиш. Уште еднаш ќе кажам, програмирање не се учи од туѓи кодови, треба да седнеш и да работиш, да изградиш свој стил.
Btw од кој факултет се овие задачи?
 
Pisuvav na mob ako ima greska kazi ne mi se provereni.
Zad
1.
int main()
{
int niza[100];
int i,n,a;

printf("vnesi golemina na nizata");
scanf("%d",&n);
printf("vnesi elementi na nizata");
for(i=0;i<n;i++)
scanf("%d",&niza);
printf("vnesi broj za proverka");
scanf("%d",&a);

for(i=0;i<n;i++)
if(a==niza)
{ printf("brojot a e clen na nizata"); break;}
else
printf("brojot a ne e clen na nizata");

return o;
}

2.
Koristi bubble sort
3.Vo funkcijata funk potocno vo while cif ja zema poslednata cifra od brojot n i ja sobira vo sum, pa posle brojot n se krati.
int funk(int n)
{
int br=0;
int cif,sum=0;
while(n>0)
{cif=n%10;
++br;
sum=sum+cif;
n=n/10;
}
printf("sumata na cifrite e %d",sum);
printf("brojot ima %d cifri",br);

}
int main()
{
int n;

printf("vnesi cel broj");
scanf("%d",&n);
funk( n) ;

return o;
}

4.
Ovoj cod pravi razlika pomegu golema i mala bukva. "oto"e palindrom ama "Oto" ne e palindrom.
int palindrom(char *str)
{
int i,len;
len=strlen(str);

for(i=0;i<len/2;i++)
if(str!=str[len-1-i]) return 0;
else return 1;
}

int main()
{
char str[100];
printf("Vnesi niza\n");
gets(str);

if(palindrom(str)) printf("Nizata e palindrom");
else printf("Nizata ne e palindrom");

return 0;
}
 
Pisuvav na mob ako ima greska kazi ne mi se provereni.
Zad
1.
int main()
{
int niza[100];
int i,n,a;

printf("vnesi golemina na nizata");
scanf("%d",&n);
printf("vnesi elementi na nizata");
for(i=0;i<n;i++)
scanf("%d",&niza);
printf("vnesi broj za proverka");
scanf("%d",&a);

for(i=0;i<n;i++)
if(a==niza)
{ printf("brojot a e clen na nizata"); break;}
else
printf("brojot a ne e clen na nizata");

return o;
}

2.
Koristi bubble sort
3.Vo funkcijata funk potocno vo while cif ja zema poslednata cifra od brojot n i ja sobira vo sum, pa posle brojot n se krati.
int funk(int n)
{
int br=0;
int cif,sum=0;
while(n>0)
{cif=n%10;
++br;
sum=sum+cif;
n=n/10;
}
printf("sumata na cifrite e %d",sum);
printf("brojot ima %d cifri",br);

}
int main()
{
int n;

printf("vnesi cel broj");
scanf("%d",&n);
funk( n) ;

return o;
}

4.
Ovoj cod pravi razlika pomegu golema i mala bukva. "oto"e palindrom ama "Oto" ne e palindrom.
int palindrom(char *str)
{
int i,len;
len=strlen(str);

for(i=0;i<len/2;i++)
if(str!=str[len-1-i]) return 0;
else return 1;
}

int main()
{
char str[100];
printf("Vnesi niza\n");
gets(str);

if(palindrom(str)) printf("Nizata e palindrom");
else printf("Nizata ne e palindrom");

return 0;
}
фала многу о//
 
Код:
#include <iostream>
using namespace std;
int main(){
int x,ve,br=0,m=0,p;
cin >> x ;
for(int i=0;i<x;i++){
    cin >> ve;
   if(ve!=2){
        br++ ;
        }
        p=br;
          if(ve==2){
                m=br;
            br=0;
    }
}
if(m>p)
cout << m ;
else
    cout << p ;
return 0;
}
Помош ми дава 11/20 не знам што не работи во програма може некој да помогне ?
http://mendo.mk/Task.do?id=130
 
Код:
#include <iostream>
using namespace std;
int main(){
int x,ve,br=0,m=0,p;
cin >> x ;
for(int i=0;i<x;i++){
    cin >> ve;
   if(ve!=2){
        br++ ;
        }
        p=br;
          if(ve==2){
                m=br;
            br=0;
    }
}
if(m>p)
cout << m ;
else
    cout << p ;
return 0;
}
Помош ми дава 11/20 не знам што не работи во програма може некој да помогне ?
http://mendo.mk/Task.do?id=130

Прво, гледај да ти е посреден кодот, многу ќе ти помогне. Второ, користи низи.
 
Pisuvav na mob ako ima greska kazi ne mi se provereni.
Zad
1.
int main()
{
int niza[100];
int i,n,a;

printf("vnesi golemina na nizata");
scanf("%d",&n);
printf("vnesi elementi na nizata");
for(i=0;i<n;i++)
scanf("%d",&niza);
printf("vnesi broj za proverka");
scanf("%d",&a);

for(i=0;i<n;i++)
if(a==niza)
{ printf("brojot a e clen na nizata"); break;}
else
printf("brojot a ne e clen na nizata");

return o;
}

2.
Koristi bubble sort
3.Vo funkcijata funk potocno vo while cif ja zema poslednata cifra od brojot n i ja sobira vo sum, pa posle brojot n se krati.
int funk(int n)
{
int br=0;
int cif,sum=0;
while(n>0)
{cif=n%10;
++br;
sum=sum+cif;
n=n/10;
}
printf("sumata na cifrite e %d",sum);
printf("brojot ima %d cifri",br);

}
int main()
{
int n;

printf("vnesi cel broj");
scanf("%d",&n);
funk( n) ;

return o;
}

4.
Ovoj cod pravi razlika pomegu golema i mala bukva. "oto"e palindrom ama "Oto" ne e palindrom.
int palindrom(char *str)
{
int i,len;
len=strlen(str);

for(i=0;i<len/2;i++)
if(str!=str[len-1-i]) return 0;
else return 1;
}

int main()
{
char str[100];
printf("Vnesi niza\n");
gets(str);

if(palindrom(str)) printf("Nizata e palindrom");
else printf("Nizata ne e palindrom");

return 0;
}

Имаш грешки, и логички и синтаксички.
 

Kajgana Shop

Back
На врв Bottom