» »

naloga ne funkcionira

naloga ne funkcionira

FX6300B ::

prosim pomagajte sem se čisto izgubil

#include <stdio.h>

int a;
int b;
int deljitelj;
int krat;
int ostanek;
int vsota;

int main(void)
{
	printf("vnesi a:\n");
	scanf("%d", &a);
	printf("vnesi b:\n");
	scanf("%d", &b);
	vsota = a;
	deljitelj = b;
	while (ostanek > 0)
	{
	krat = a/b;
	ostanek = vsota%deljitelj;
		printf("%d = %d * %d + %d\n", vsota, krat, deljitelj, ostanek);
		vsota = deljitelj;
			if (ostanek>0)
			{
			deljitelj = ostanek;
			}
	}
	printf("\nnajvecji skupni deljitelj je %d", deljitelj);
	return 0;
}


bi moralo biti tako Vnesi a: 3672
Vnesi b: 624
3672 = 5 * 624 + 552
624 = 1 * 552 + 72
552 = 7 * 72 + 48
72 = 1 * 48 + 24
48 = 2 * 24 + 0
Najvecji skupni delitelj stevil 3672 in 624 je 24.

amacar ::

Ka ti bereš sploh kaj ti mi pišemo?
Že v prejšnji temi smo ti povedali, da moraš na začetku spremenljivke inicializirati.
Program ti seveda ne dela, ker imaš v pogoju napisano
while (ostanek > 0)
, ti pa seveda na začetku ostanka nisi na nič nastavil, tako da ga program ne more primerjati.

Če boš nastavil
int ostanek=1;
ti bo šel program lepo skoz.

FX6300B ::

sej gre drugače je pa int potrebno dati samo če dodaš spremenljivko ne pa če ji spremeniš vrednost drugače pa ni taka napaka napaka je pri formuli ker tudi če dodam mi narobno št ven vrže

Zgodovina sprememb…

  • spremenil: FX6300B ()

amacar ::

OMG, ti sploh veš kaj je inicializacija? Ne moreš kr povprek primerjati in deliti spremenljivk, katerim še nisi nastavil vrednosti. Prav tako ne ustvarjaj globalnih spremenljivk, če jih ne potrebuješ.

In ja, če dodaš to kar sem ti zgoraj napisal program deluje: http://ideone.com/aoBLCd

#include <stdio.h>
 
int a;
int b;
int deljitelj;
int krat;
int ostanek=1;
int vsota;
 
int main(void)
{
    printf("vnesi a:\n");
    scanf("%d", &a);
    printf("vnesi b:\n");
    scanf("%d", &b);
    vsota = a;
    deljitelj = b;
    while (ostanek > 0)
    {
    krat = a/b;
    ostanek = vsota%deljitelj;
        printf("%d = %d * %d + %d\n", vsota, krat, deljitelj, ostanek);
        vsota = deljitelj;
            if (ostanek>0)
            {
            deljitelj = ostanek;
            }
    }
    printf("\nnajvecji skupni deljitelj je %d", deljitelj);
    return 0;
}

FX6300B ::

prav bom sam pogruntal drugače pa šeenkrat preberi kodo pa boš VIDEL da imajo vse spremenljivke DEFINIRANO vrednost ti pol prlepm

FX6300B je izjavil:

bi moralo biti tako Vnesi a: 3672
Vnesi b: 624
3672 = 5 * 624 + 552
624 = 1 * 552 + 72
552 = 7 * 72 + 48
72 = 1 * 48 + 24
48 = 2 * 24 + 0
Najvecji skupni delitelj stevil 3672 in 624 je 24.

Zgodovina sprememb…

  • spremenil: FX6300B ()

amacar ::

Zberi se, pa beri počasi. Sedaj si prišel do tega linka: http://ideone.com/aoBLCd Klikni nanj in spodaj boš imel natanko tak izpis, ki si ga želiš, zgoraj pa je koda programa, ki deluje.

Sedaj pa poglejmo tvojo kodo
#include <stdio.h>
 
int a;
int b;
int deljitelj;
int krat;
int ostanek; // Ustvaril si spremenljivko ostanek, ki še nima nastavljene vrednosti (čeprav je verjetno nastavljena na 0, ampak ne boš imel vedno takšne sreče).
int vsota;
 
int main(void)
{
    printf("vnesi a:\n");
    scanf("%d", &a);
    printf("vnesi b:\n");
    scanf("%d", &b);
    vsota = a;
    deljitelj = b;
    while (ostanek > 0) // Tu preverjaš, če je spremenljivka ostanek večja od 0, a spremenljivki ostanek sploh še nisi nastavil nobene vrednosti (beri prejšnji komentar)!

pitbull1336 ::

#include <stdio.h>

int fun(int a, int b)
{
	if (b == 0) {
		return a;
	}
	return fun(b, a % b);
}

int main(void)
{
	int a;
	int b;
	printf("vnesi a:\n");
	scanf_s("%d", &a);
	printf("vnesi b:\n");
	scanf_s("%d", &b);

	printf("\nnajvecji skupni deljitelj je %d\n", fun(a, b));
	return 0;
}

epicVoid ::

Pa izogibaj se globalnim spremenljivkam v C, razen če jih zares potrebuješ.

FX6300B ::

nerazumem
zakaj mora biti 1 če pravo št dobi ko mu pride ta ukaz ostanek = vsota%deljitelj;

eatinggrin ::

O madona ti pa si lesen.
Ne vidiš da mu tisti ukaz nikoli "ne pride", ker ne izpolnjuje pogoja?

FX6300B ::

aja :D

hvala vsem pitbull: zdaj vidim kako se tudi da samo še nisem tam ker delam po http://zaversnik.fmf.uni-lj.si/Gradiva/...

Zgodovina sprememb…

  • spremenil: FX6300B ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] - Spreminjanje programa s pointerji

Oddelek: Programiranje
61173 (925) DaMachk
»

C programiranje (strani: 1 2 3 )

Oddelek: Programiranje
14127703 (17999) amacar
»

C in računanje kotov

Oddelek: Programiranje
376581 (5634) RatedR
»

c napaka .c:4:1: error: expected identifier or '(' before '{' token

Oddelek: Programiranje
141932 (1505) MrStein
»

[c] char zadeva

Oddelek: Programiranje
222249 (2047) TheCyborg

Več podobnih tem