C/C++

  • Креатор на темата Креатор на темата Драган
  • Време на започнување Време на започнување
За првата можеш да користиш најразлични алгоритми за сортирање (bubble sort, quick sort..) но бидејќи ти се бара со if-else наредби, мислам дека вака би било едно решение:


#define MAX_INTS 4

int main()
{
int min = INT_MAX;
int max = INT_MIN;
int a[MAX_INTS];
int i;

for (i = 0; i < MAX_INTS; i++)
{
printf( "Vnesi broj %d od %d : ", (i + 1), MAX_INTS);
scanf( "%d", &a );

if ( a < min) min = a;
if ( a > max) max = a;
}

printf("%d Najmal e \n", min);
printf("%d Najgolem e \n", max);

return 0;
}
првата ја знам, нема потреба со фор, со помошна променлива ја имам решено, и само со иф, лесна е таа ама другите две o_O
 
првата ја знам, нема потреба со фор, со помошна променлива ја имам решено, и само со иф, лесна е таа ама другите две o_O

За втората
int n - вкупен број на броевите што ќе ги внесеш (n го задаваш преку тастатура)
int a[n] - низа во која ќе ги внесеш броевите
int posleden - променлива каде ќе го запишеше последниот број

Код:
if ( a[n] % 2 == 0 ) // uslov za parnost
{
posleden = a[n];
}
cout<<"Posledniot tricifren e: "<<posleden;

Со ова ќе најдеш дали бројот е парен и последниот од тие броеви ќе го испечатиш на екран, но ова ќе работи само ако внесуваш трицифрени броеви. Е сега како да го преправиш кодот за да пронаоѓаш дали внесениот број е трицифрен па да пристапиш кон горенапишаниот if циклус, во моментов не ми текнува...
 
Ајде програмеришта

Од четири цели броеви кои се читаат од СВ да се отпечати бројот со максимална вредност. Задачата да се реши со помош на if наредбата.

Да се напише програма која од непознат број на цели броеви кои се вчитуваат од СВ ќе го отпечати последно внесениот трицифрен парен број.

Од СВ се вчитуваат n цели броеви и еден број m во опсегот од 0 до 9. Да се напише програма, која од n-те броеви внесени од тастатура ќе го исфрли бројот m и ќе испечати колку вкупно пати тој е исфрлен.

Од каде се овие задачи ? пример за колоквиум или што , и на кој факс и смер ако воопшто се пример за задаци од колоквиум . Ме интересира зошто и мене ми претстојат колоквиумите.
By the way еве мои ршенија на задачите :
Првата вејќе си ја знаел па продолжуваме

Втората :

Код:
#include<stdio.h>
 
int main () {
 
int a;
 
while (scanf("%d",&a))
{
    if ((a>99&&a<1000)&&(a%2==0)) printf ("%d",a);
}
return 0;
}

Третата :

Код:
#include<stdio.h>
 
int main () {
 
int n,m,tmp,tmp2,cif,nb=0,nb2,cif2,br=0;
 
printf("Cifra za isfrluvanje m\n");
 
scanf("%d",&m);
 
printf("Vnesuvajte broevi ... \n");
 
if (m>0&&m<10)
{
while (scanf("%d",&n))
{
    tmp=n;
 
    while (tmp>0)
    {
        cif=tmp%10;
 
        tmp2=tmp;
            if ( tmp2>99999 && tmp2 <1000000 ) nb=nb+cif*100000;
            else if ( tmp2>9999 && tmp2 <100000  ) nb=nb+cif*10000;
            else if ( tmp2>999 && tmp2 <10000 )  nb=nb+cif*1000;
            else if ( tmp2>99 && tmp2 <1000 ) nb=nb+cif*100;
            else if ( tmp2>9 && tmp2 <100 ) nb=nb+cif*10;
            else if (  tmp2 <10  ) nb=nb+cif;
 
        tmp=tmp/10;
 
    }
 
    nb2=nb;
 
    while (nb2>0)
    {
        cif2=nb2%10;
 
        if (cif2!=m) printf("%d",cif2);
 
        else br++;
 
        nb2=nb2/10;
 
    }
 
    printf ("\nCifrata %d e isfrlena %d pati\n",m,br);
}
 
 
}
 
else printf("Pogresno, za m treba da vnesite cifra od 0 do 9");
 
return 0;
}
 
Ace-Snake old_School_mk
Да направиш двојна поврзана листа, и да не е кружна е најголемата глупост што може еден програмер да направи.
Зошто? Затоа што буквално сите елементи освен првиот и последниот иркористуваат можностите да се иде напред, назад, буквално ист код ..а баш таа операција што е најскапа т.е да се иде до крајот на листата..со кружна листа ти е брзо....и ти да го оневозможиш тоа е fail..
 
Ace-Snake old_School_mk
Да направиш двојна поврзана листа, и да не е кружна е најголемата глупост што може еден програмер да направи.
Зошто? Затоа што буквално сите елементи освен првиот и последниот иркористуваат можностите да се иде напред, назад, буквално ист код ..а баш таа операција што е најскапа т.е да се иде до крајот на листата..со кружна листа ти е брзо....и ти да го оневозможиш тоа е fail..
Не се нервирај, chill :)

Јас само пишав како по дефиниција функционираат листите, иначе нормално дека е подобро да се направи кружна.
 
Ај ако не му е тешко на некој нека ја ѕирне задачава, не знам зошто не работи, а вака ми изгледа точно, што не мора да значи дека e. Кога ќе и напраам run, го извршува printf-от, па после внесувам колку броеви ќе внесувам (пример 2), после тоа чека број, и откако ќе го внесам бројот којшто сакам да го трансформирам, еве пример внесувам 712, како во примерот, чекам некои 5 секунди, и ми принта некој огромен број, 230948230948, нешто такво...

Да се напише програма со која се вчитуваат N броеви од тастатура. За секој од броевите се печатат бројот на трансформации после кои оригиналниот број станува едноцифрен, како и новодобиениот трансформиран број. Со секоја трансформација на оригиналниот број, тој се заменува со збирот на неговите цифри.
Пр. 712 -> 10 -> 1
Broj na transformacii: 3, tranformiran broj: 1.


Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int N, i, n, pom, pom1, suma = 0, brtran=1, cifra;
    printf("Kolku broevi kje vnesuvash? :\n");
    scanf("%d", &N);
    for(i=1;i<=N;i++)
    {
        scanf("%d", &n);
        pom=n;
        while(pom>9)
        {
            pom1=pom;
            while(pom1)
            {
                cifra=pom1%10;
                suma+=cifra;
                pom1/=10;
            }
            pom = suma;
            brtran++;
        }
        printf("Transformiran broj: %d. Broj na transformacii: %d\n", pom, brtran);
        pom=0;
        suma=0;
        brtran=1;
    }
    system("PAUSE");
    return 0;
}
 
Ми треба програма која ќе ми ги испечати сите трицифрени броеви и нивните делители во формат
100:1,2....;
101:1..;
итн. Ги знам кодовите за наоѓање делители на број и печатење на сите трицифрени броеви, се обидов да ги искомбинирам, ама никако не ми излегува. Фала за помошта однапред :)
 
@Boomerang - Не треба да го ограничуваш бројот на внесувања , според задачата треба бесконечно да можеш да внесуваш бореви
Така да scanf(%d,&n) while условот вака while(scanf(%d,&n)) , и така бесконечно можеш да внесуваш броеви и да ги проверуваш.
Но доколку сакаш да ја решиш на тој начин како што имаш почнато , неможам да најдам грешка во кодот, вака набрзина видено.
--- надополнето: 30 октомври 2012 во 12:57 ---
Ми треба програма која ќе ми ги испечати сите трицифрени броеви и нивните делители во формат
100:1,2....;
101:1..;
итн. Ги знам кодовите за наоѓање делители на број и печатење на сите трицифрени броеви, се обидов да ги искомбинирам, ама никако не ми излегува. Фала за помошта однапред :)

Ова треба да е поедноставна задача, потруди се да ги решаваш сам. Иначе од каде е оваа задача , која збирка ?

еве море решение за задачата:

Код:
#include<stdio.h>

int main () {

int i=100;


while (i<1000)
{
    printf("%d:",i);
    if (i%1==0) printf("1");
    if (i%2==0) printf("2");
    if (i%3==0) printf("3");
    if (i%4==0) printf("4");
    if (i%5==0) printf("5");
    if (i%6==0) printf("6");
    if (i%7==0) printf("7");
    if (i%8==0) printf("8");
    if (i%9==0) printf("9");
    printf ("\t,");  // vnesi \n na mestoto od \t ako sakas vo nov red da e sekoj broj , no taka ne gi pokazuva site broevi zosto se mnogu.
    i++;
}

return 0;
}
 
...чекам некои 5 секунди, и ми принта некој огромен број, 230948230948, нешто такво...


Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int N, i, n, pom, pom1, suma = 0, brtran=1, cifra;
    printf("Kolku broevi kje vnesuvash? :\n");
    scanf("%d", &N);
    for(i=1;i<=N;i++)
    {
        scanf("%d", &n);
        pom=n;
        while(pom>9)
        {
            pom1=pom;
            while(pom1)
            {
                cifra=pom1%10;
                suma+=cifra;
                pom1/=10;
            }
            pom = suma;
            brtran++;
        }
        printf("Transformiran broj: %d. Broj na transformacii: %d\n", pom, brtran);
        pom=0;
        suma=0;
        brtran=1;
    }
    system("PAUSE");
    return 0;
}
Секогаш кога ти излегуваат некој вакви огромни цифри имаш некое натрупување некаде. Кодот може да се направи по едноставен, но ајде за овој... Целиот проблем ти е во излегувањето от надворешниот while. За да излезеш треба (pom<= 9) a pom правиш да е еднаков на suma, suma-та ти се трупа.
На пример за внесен 789, за сума добиваш 7 + 8 + 9 = 24 во првото вртење, после на сумата ја трупаш suma += 2 + 4 и добиваш 30, место 6 и да излезеш.
Се што треба да направиш да ја исчистиш сумата кога ќе излезеш од внатрешниот циклус.

Код:
while(pom>9)
{
        pom1=pom;
        while(pom1)
        {
                cifra=pom1%10;
                suma+=cifra;
                printf("%d:\n",pom1);
                pom1/=10;
        }
        pom = suma;
        brtran++;
        suma = 0; //Tука
}
 
Еве ви некои збирки разгледајте ги, а не да барате цела задача да ви се реши. Смешно е да барате решение на вакви едностави задачи. Лозинката за отпакување е tutoriali.org
http://tutoriali.org/C.html

Го почитувам твоево мислење, ама јас сум почетник и некои работи не ги согледувам веднаш. Дополнително ми отежнува тоа што градот од каде доаѓам нема никакви можности за едуцирање(не постои курс за програмирање или некој кому можам да му платам за да ми објаснува). Затоа барам помош овде. Имам збирка од Ѓ.Јованчески за Ц++ и донекаде ми користи бидејќи се претставени и алгоритмите и кодот, но за дел од задачите се случува да изгубам куп време и пак да не ги решам. Затоа постирам задачи тука. Ако се најде некој љубезен да одвои време и да објасни, супер, ако не, пак ок, ќе пишам на друг форум и готово.
 
Го почитувам твоево мислење, ама јас сум почетник и некои работи не ги согледувам веднаш. Дополнително ми отежнува тоа што градот од каде доаѓам нема никакви можности за едуцирање(не постои курс за програмирање или некој кому можам да му платам за да ми објаснува). Затоа барам помош овде. Имам збирка од Ѓ.Јованчески за Ц++ и донекаде ми користи бидејќи се претставени и алгоритмите и кодот, но за дел од задачите се случува да изгубам куп време и пак да не ги решам. Затоа постирам задачи тука. Ако се најде некој љубезен да одвои време и да објасни, супер, ако не, пак ок, ќе пишам на друг форум и готово.
Глупа е таа збирка остави ја симни ги српските збирки готови решени задачи има ептен се едностави за решавање и учење. По 2-3 пати пишувај една задача ќе си научиш а малку треба и да размислуваш.
Никој не може да ти објасни овде исто и тука ќе ти ја стават решена и наредна пак нема да ја знаеш. Ако ги знаеш фукциите и циклусите ќе ги разбереш сите задачи, слични се сите.
И на 100 форуми да пишеш пак исто е ќе ти ја кажат целата и потоа пак нема да знаеш. Разгледај ги сите ќе видеш колку се лесни задачите. За тебе е тоа на мене не ми е тешко да го копирам кодот од интренет и да ти го ставам тука.
https://rapidshare.com/#!download|285p2|331620696|fisher_zbirka.doc|949|0|0
 
Од каде се овие задачи ? пример за колоквиум или што , и на кој факс и смер ако воопшто се пример за задаци од колоквиум . Ме интересира зошто и мене ми претстојат колоквиумите.
By the way еве мои ршенија на задачите :
Првата вејќе си ја знаел па продолжуваме

Втората :

Код:
#include<stdio.h>
 
int main () {
 
int a;
 
while (scanf("%d",&a))
{
    if ((a>99&&a<1000)&&(a%2==0)) printf ("%d",a);
}
return 0;
}

Третата :

Код:
#include<stdio.h>
 
int main () {
 
int n,m,tmp,tmp2,cif,nb=0,nb2,cif2,br=0;
 
printf("Cifra za isfrluvanje m\n");
 
scanf("%d",&m);
 
printf("Vnesuvajte broevi ... \n");
 
if (m>0&&m<10)
{
while (scanf("%d",&n))
{
    tmp=n;
 
    while (tmp>0)
    {
        cif=tmp%10;
 
        tmp2=tmp;
            if ( tmp2>99999 && tmp2 <1000000 ) nb=nb+cif*100000;
            else if ( tmp2>9999 && tmp2 <100000  ) nb=nb+cif*10000;
            else if ( tmp2>999 && tmp2 <10000 )  nb=nb+cif*1000;
            else if ( tmp2>99 && tmp2 <1000 ) nb=nb+cif*100;
            else if ( tmp2>9 && tmp2 <100 ) nb=nb+cif*10;
            else if (  tmp2 <10  ) nb=nb+cif;
 
        tmp=tmp/10;
 
    }
 
    nb2=nb;
 
    while (nb2>0)
    {
        cif2=nb2%10;
 
        if (cif2!=m) printf("%d",cif2);
 
        else br++;
 
        nb2=nb2/10;
 
    }
 
    printf ("\nCifrata %d e isfrlena %d pati\n",m,br);
}
 
 
}
 
else printf("Pogresno, za m treba da vnesite cifra od 0 do 9");
 
return 0;
}

Лабараториски на Финки КРС :D ти кај си ?
 
еве море решение за задачата:

Код:
#include<stdio.h>
 
int main () {
 
int i=100;
 
 
while (i<1000)
{
    printf("%d:",i);
    if (i%1==0) printf("1");
    if (i%2==0) printf("2");
    if (i%3==0) printf("3");
    if (i%4==0) printf("4");
    if (i%5==0) printf("5");
    if (i%6==0) printf("6");
    if (i%7==0) printf("7");
    if (i%8==0) printf("8");
    if (i%9==0) printf("9");
    printf ("\t,");  // vnesi \n na mestoto od \t ako sakas vo nov red da e sekoj broj , no taka ne gi pokazuva site broevi zosto se mnogu.
    i++;
}
 
return 0;
}
100 се дели и со 10, 20, 25,50..така да треба 2 циклуси
 
@Boomerang - Не треба да го ограничуваш бројот на внесувања , според задачата треба бесконечно да можеш да внесуваш бореви
Така да scanf(%d,&n) while условот вака while(scanf(%d,&n)) , и така бесконечно можеш да внесуваш броеви и да ги проверуваш.
Но доколку сакаш да ја решиш на тој начин како што имаш почнато , неможам да најдам грешка во кодот, вака набрзина видено.
--- надополнето: 30 октомври 2012 во 12:57 ---


Ова треба да е поедноставна задача, потруди се да ги решаваш сам. Иначе од каде е оваа задача , која збирка ?

еве море решение за задачата:

Код:
#include<stdio.h>
 
int main () {
 
int i=100;
 
 
while (i<1000)
{
    printf("%d:",i);
    if (i%1==0) printf("1");
    if (i%2==0) printf("2");
    if (i%3==0) printf("3");
    if (i%4==0) printf("4");
    if (i%5==0) printf("5");
    if (i%6==0) printf("6");
    if (i%7==0) printf("7");
    if (i%8==0) printf("8");
    if (i%9==0) printf("9");
    printf ("\t,");  // vnesi \n na mestoto od \t ako sakas vo nov red da e sekoj broj , no taka ne gi pokazuva site broevi zosto se mnogu.
    i++;
}
 
return 0;
}

Мислам дека треба да го ограничам бројот на броеви кои ќе се внесуваат, бидејќи вика дека се вчитуваат N броеви, а не непознат број на броеви, ваљда во тој случај би го употребиле тоа што го посочи горе, со while-от. Не знам, може сум грешка, фала во секој случај :)
 

Kajgana Shop

Back
На врв Bottom