Pomoc oko seminarskog (programiranje)

poruka: 27
|
čitano: 3.865
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)

Trebam pomoc oko seminarskog rad;programiranje mi bas i neide pa bi trebo pomoc oko ovog zadatka:

Napisi program koji će ispisati sve brojeve između dviju zadanih krajnjih vrijednosti koji su djeljivi s nekim zadanim brojem. Uz to prije ispisa rezultata ispišite i broj s kojim je ispitivana djeljivost.

Krajnje vrijednosti i broj s kojim se dijeli se zadaju na način da program pita korisnika koja je početna vrijednost, zatim koja je završna vrijednost, a na kraju s kojim se brojem ispituje djeljivost. Sve vrijednosti su cijeli brojevi.

Ukoliko korisnik zada završnu vrijednost manju od početne, ispisuje se poruka o kraju rada i program završava. Isto se događa ako se ispitivanje djeljivosti vrši s brojem 0 (nula). U suprotnom se nakon ispisa vrijednosti program izvršava ponovo.

TVZ -LoL account
Poruka je uređivana zadnji put sri 22.12.2010 23:46 (TJ-Lux).
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)

Ne ide ni meni baš programiranje, ali zadatak je jednostavan...

 

Trebaš samo unijeti te 3 vrijednosti, postavit petlju da vrti to i ispitivat redom da li je X modulo uneseni broj=0 i ako jest ispisat vrijednost... ovo je ostalo ( eventualni prekid programa) također lako napravit, tako da ne vidim gdje je problem.

Ništa nije tako neefektivno kao efikasno izvođenje aktivnosti koje nisu potrebne.
Poruka je uređivana zadnji put čet 23.12.2010 0:18 (Maximus).
 
0 0 hvala 0
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)
ma nikad mi nije islo programiranje a to sto si rero pise u zadatku ;D
TVZ -LoL account
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)
TJ-Lux kaže...
ma nikad mi nije islo programiranje a to sto si rero pise u zadatku ;D

A veća pomoć je samo da ti neko napravi zadatak ;)

Ništa nije tako neefektivno kao efikasno izvođenje aktivnosti koje nisu potrebne.
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)
znam,svejedno hvala-pokuso si ;))
TVZ -LoL account
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)
Pa ja se definitivno protivim rješavanju stvarno jednostavnih zadataka...

Čisto malo upregni mozak i možeš to riješiti s jednom i po mozdanom stanicom...


In Control... MNOGE države imaju mafiju. Ali u Hrvatskoj mafija ima državu...
17 godina
moderator
offline
RE: Pomoc oko seminarskog (programiranje)
EnlightenedPhoenix kaže...
Pa ja se definitivno protivim rješavanju stvarno jednostavnih zadataka...

Čisto malo upregni mozak i možeš to riješiti s jednom i po mozdanom stanicom...

Brijem da on ne zna napisati ni najjednostavniju od-do petlju. Nije cak ni rekao u kojem programskom jeziku radi.

17 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)
Mislim da imas pravo...

Nemoj me shvatiti pogresno... ali takvi me nerviraju uzasno...
In Control... MNOGE države imaju mafiju. Ali u Hrvatskoj mafija ima državu...
15 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)
TJ-Lux kaže...

Trebam pomoc oko seminarskog rad;programiranje mi bas i neide pa bi trebo pomoc oko ovog zadatka:

EPIC

 

Ali zadatak je jednostavan a meni je dosadno:

 

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int pocetak, kraj, djelitelj, n;
    char buffer[128];
   
    while(1)
    {
          printf("\n\nUnesite pocetnu vrijednost: ");
          if (gets(buffer) == NULL)
          {
             printf("\nPogreska kod unosa");
             break;
          }
          pocetak=atoi(buffer);
          if (pocetak==0)
             pocetak++;
   
          printf("Unesite krajnju vrijednost: ");
          if (gets(buffer) == NULL)
          {
             printf("\nPogreska kod unosa");
             break;
          }
          kraj=atoi(buffer);
         
          if (pocetak>kraj)
             break;
         
          printf("Unesite djelitelj: ");
          if (gets(buffer) == NULL)
          {
             printf("\nPogreska kod unosa");
             break;
          }
          djelitelj=atoi(buffer);
         
          if (djelitelj==0)
             break;
         
          printf("\nBrojevi od %d do %d koji su djeljivi sa %d\n", pocetak, kraj, djelitelj);
         
          for (n=pocetak; n<=kraj; n++)
              if (n%djelitelj==0)
                 printf("\n%d", n);   
    }
   
    return 0;
}

How much wood would a woodchuck chuck if a woodchuck could chuck wood?
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)
me ljudi ja sam u srednjoj imao programiranje 1 godinu al je profesor bio za k**** tako da mi to neide,i zato sam upiso elektrotehniku a ne racunarstvo; rustweaver tnx
TVZ -LoL account
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)

Ali shvacas li da ti ja time nisam ucinio uslugu? Prije ili poslije to ces morati savladati, potpuno se slazem sa mbaksom i enlightened phoenixom. A na kraju krajeva to i nije tako tesko, ja sam samouk i moja skola nije imala nikakve veze sa programiranjem i racunalima.

How much wood would a woodchuck chuck if a woodchuck could chuck wood?
17 godina
offline
Pomoc oko seminarskog (programiranje)

Ne trebaš polje, jednostavno deklariraš početnu vrijednost i krajnju vrijednost kao int varijable i vrtiš petlju

 

for(i=pocetnaVrijednost; i<=krajnjaVrijednost; i++)

{

if(i%djeljitelj == 0)

cout<< i << " ";

}

 

Uvjek gledaj izbjeći pretvorbe

 

i ovog while(1) se riješi, jednostavno nek program ima svoj tok

 

a ponovno izvršavanje programa se može riješiti sa 

do

{

 

// kod

 

cout<< "Zelite li nastaviti? <Y / N>";

cin>> znak;

}while(znak == 'Y');

Poruka je uređivana zadnji put čet 23.12.2010 19:16 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)
ma znam al mi je to hitno trebalo i fakat hvala,to je jedini zadatak s programskim jezicim-predmet imam samo u jednom semestru
TVZ -LoL account
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Pomoc oko seminarskog (programiranje)
TJ-Lux kaže...
ma znam al mi je to hitno trebalo i fakat hvala,to je jedini zadatak s programskim jezicim-predmet imam samo u jednom semestru

U kojem uopće jeziku radite, nisi naveo

15 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)
Floki kaže...

Ne trebaš polje, jednostavno deklariraš početnu vrijednost i krajnju vrijednost kao int varijable i vrtiš petlju

Jel' ti to komentiras moj kod? Valjda komentiras buduci da sam jedini ovdje napisao nesto konkretno. Anyway, pogledaj jos jednom za sto tocno koristim polje ;)

Mogao sam koristiti i malloc, posve je svejedno.

 

Floki kaže...
i ovog while(1) se riješi, jednostavno nek program ima svoj tok

 

a ponovno izvršavanje programa se može riješiti sa 

do

{

 

// kod

 

cout<< "Zelite li nastaviti? <Y / N>";

cin>> znak;

}while(znak == 'Y');

Je, ovaj while(1) je gadan, malo sam se zamislio nad time nocas, ali mi nije palo na pamet nikakvo rijesenje kako to prolijepsati, a da program tocno ispunjava uvijete zadatka. Recimo da sam isao sa do {...} while(neki uvijet); svejedno bih morao testirati unos podataka uslijed petlje (i prekidati petlju pri pogresnom unosu) prije samog racunanja.

How much wood would a woodchuck chuck if a woodchuck could chuck wood?
15 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int pocetak, kraj, djelitelj, n;
    char buffer[128];
   
    do
    {
          printf("\n\nUnesite pocetnu vrijednost: ");
          gets(buffer);
          pocetak=atoi(buffer);
         
          if (pocetak==0)
             pocetak++;
   
          printf("Unesite krajnju vrijednost: ");
          gets(buffer);
          kraj=atoi(buffer);
         
          printf("Unesite djelitelj: ");
          gets(buffer);
          djelitelj=atoi(buffer);
         
          printf("\nBrojevi od %d do %d koji su djeljivi sa %d\n", pocetak, kraj, djelitelj);
         
          for (n=pocetak; n<=kraj; n++)
              if (n%djelitelj==0)
                 printf("\n%d", n);   
   
    } while(pocetak<kraj && djelitelj!=0);
   
    return 0;
}

 

Jesi li mislio na nesto ovako? Tada moguce djeljenje s nulom nece biti uhvaceno i program ce se srusiti. Vec sam razmisljao o tome.

A pocetak++; je tu zato sto 0%djelitelj daje nulu kao rezultat, pa sam to napravio da sprijecim ispisivanje nule kao prvog broja djeljivog sa djeliteljem.

 

Izbacio sam sve one provjere rezultata koji daje gets(), ionako nemaju previse smisla.

How much wood would a woodchuck chuck if a woodchuck could chuck wood?
17 godina
offline
Pomoc oko seminarskog (programiranje)

Ne kužim zašto treba char polje za ovo

 
0 0 hvala 0
15 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)

Zato sto gets() kao argument prima pokazivac na nekakvo memorijsko spremiste u koje ce spremiti unos od korisnika. Mogao sam to rezervirati i putem malloca, ali to bi kompliciralo jednostavnu stvar. Inace privatno za takve stvari koristim malloc, ne volim previse trpati stvari na stack.

How much wood would a woodchuck chuck if a woodchuck could chuck wood?
Poruka je uređivana zadnji put čet 23.12.2010 20:57 (rustweaver).
17 godina
moderator
offline
RE: Pomoc oko seminarskog (programiranje)
rustweaver kaže...

Zato sto gets() kao argument prima pokazivac na nekakvo memorijsko spremiste u koje ce spremiti unos od korisnika. Mogao sam to rezervirati i putem malloca, ali to bi kompliciralo jednostavnu stvar. Inace privatno za takve stvari koristim malloc, ne volim previse trpati stvari na stack.

Ne postoji u C-u neki jednostavniji nacin? Da ti jednostavno uhvati unos iz tipkovnice u neku integer varijablu?

15 godina
neaktivan
offline
RE: Pomoc oko seminarskog (programiranje)

Sad kad si me pitao... zapravo i postoji.

scanf()

 

{#}

Ha! toliko cesto radim unos podataka u konzoli da sam posve zaboravio na scanf.

 

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int pocetak, kraj, djelitelj, n;
   
    do
    {
          printf("\n\nUnesite pocetnu vrijednost: ");
          scanf("%d", &pocetak);
         
          if (pocetak==0)
             pocetak++;
   
          printf("Unesite krajnju vrijednost: ");
          scanf("%d", &kraj);
         
          printf("Unesite djelitelj: ");
          scanf("%d", &djelitelj);
         
          if (djelitelj==0)
             break;
         
          printf("\nBrojevi od %d do %d koji su djeljivi sa %d\n", pocetak, kraj, djelitelj);
         
          for (n=pocetak; n<=kraj; n++)
              if (n%djelitelj==0)
                 printf("\n%d", n);   
   
    } while(pocetak<kraj);
   
    return 0;
}

 

Evo, znatno bolja verzija. Fala floki & mbaksa.

How much wood would a woodchuck chuck if a woodchuck could chuck wood?
Poruka je uređivana zadnji put čet 23.12.2010 21:12 (rustweaver).
17 godina
offline
Pomoc oko seminarskog (programiranje)

Ovako pokušaj:

 

 

#include<iostream>
using namespace std;

int main()
{
    int i, pocetnaVrijednost, zavrsnaVrijednost, djeljitelj;
    char znak;

    do
    {
       cout<< "Unesi pocetnu vrijednost: ";
       cin>> pocetnaVrijednost;
       cout<< "Unesi zavrsnu vrijednost: ";
       cin>> zavrsnaVrijednost;

       if(zavrsnaVrijednost < pocetnaVrijednost)
       {
          cout<< "Zavrsna vrijednost ne smije biti manja od pocetne vrijednosti!";
          exit(1);
       }
       cout<< "Unesi djeljitelj: ";
       cin>> djeljitelj;

       if(djeljitelj == 0)
       {
          cout<< "Djeljitelj ne smije biti 0!";
          exit(2);
       }
       cout<< "Brojevi od " << pocetnaVrijednost << " do " << zavrsnaVrijednost << " koji su djeljivi sa " << djeljitelj << endl;
      
       for(i = pocetnaVrijednost; i <= zavrsnaVrijednost; i++)
       {
          if(i % djeljitelj == 0)
             cout<< i << " ";
       }
       cout<< "\nZelite li nastaviti? <Y / N>: ";
       cin>> znak;
    }while(znak == 'Y' || znak == 'y');
    return 0;
}

Poruka je uređivana zadnji put čet 23.12.2010 21:12 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)
hvala vam svima,bili su dopusteni ovi jezici: DevC++, SmallBasic ili Visual Studio (VB, ili C/C++)
TVZ -LoL account
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Pomoc oko seminarskog (programiranje)
TJ-Lux kaže...
hvala vam svima,bili su dopusteni ovi jezici: DevC++, SmallBasic ili Visual Studio (VB, ili C/C++)

Grrrrrr, u kojem jeziku ti treba program C ili C++

ako može C++ dobiš 5 za ovaj moj (šala mala)

Poruka je uređivana zadnji put čet 23.12.2010 21:19 (Floki).
17 godina
moderator
offline
RE: Pomoc oko seminarskog (programiranje)
Floki kaže...
while(znak == 'Y' || znak == 'y');

Cijeli program na hrvatskom jeziku, a onda se trazi Yes/No za nastavak! Sto ti jos moze raditi problem, jer y i z mijenjaju mjesta, ovisno koju tipkovnicu imas odabranu.

 

BTW vidim da si zaboravio ono sto sam jednom napisao. Uvjet je elegantnije mogao biti napisan kao:

while (tolower(znak) == 'd'));

17 godina
odjavljen
offline
RE: Pomoc oko seminarskog (programiranje)
TJ-Lux kaže...
hvala vam svima,bili su dopusteni ovi jezici: DevC++, SmallBasic ili Visual Studio (VB, ili C/C++)

 

A C#???

Freak Show Inc.
15 godina
neaktivan
offline
Pomoc oko seminarskog (programiranje)
svi od ovih su bili dopusteni;ja se kaolkotolko kuzim u Visual Studio tako da sam u njem mislio al nisam bas kuzio zadatak (znam konkretne stvari-visenamjenski kalkulator,media player,etc....)
-seminar je danas bio gotov
TVZ -LoL account
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Pomoc oko seminarskog (programiranje)
mbaksa kaže...
Floki kaže...
while(znak == 'Y' || znak == 'y');

Cijeli program na hrvatskom jeziku, a onda se trazi Yes/No za nastavak! Sto ti jos moze raditi problem, jer y i z mijenjaju mjesta, ovisno koju tipkovnicu imas odabranu.

 

BTW vidim da si zaboravio ono sto sam jednom napisao. Uvjet je elegantnije mogao biti napisan kao:

while (tolower(znak) == 'd'));

Istina, mogao sam tolower staviti, mea culpa

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice