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.
Pomoc oko seminarskog (programiranje)
- poruka: 27
- |
- čitano: 3.862
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
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.
A veća pomoć je samo da ti neko napravi zadatak ;)
Čisto malo upregni mozak i možeš to riješiti s jednom i po mozdanom stanicom...
Č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.
Nemoj me shvatiti pogresno... ali takvi me nerviraju uzasno...
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;
}
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.
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');
U kojem uopće jeziku radite, nisi naveo
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.
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.
#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.
Ne kužim zašto treba char polje za ovo
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.
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?
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.
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;
}
Grrrrrr, u kojem jeziku ti treba program C ili C++
ako može C++ dobiš 5 za ovaj moj (šala mala)
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'));
A C#???
-seminar je danas bio gotov
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