» »

C - pomoč

C - pomoč

Ajrina ::

Pozdrav!
Prosila bi, da mi kdo pomaga pri kodi, ki nam pove najmanjše število izmed navedenih. Lahko jih vnesemo poljubno. Mora biti pa z argumenti (argv, argc, args). Uspe mi primerjati samo sosednji števili, ne pa vseh.
  • spremenila: Ajrina ()

TEDY ::

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

int main(int argc, char* argv[])
{
	unsigned int temp = atoi(argv[1]);
	while(argc--)
	{
		if(temp > atoi(argv[argc]) && argc > 0) temp = atoi(argv[argc]);
	}
	printf("Najmanse stevilo %d\n", temp);
	return 0;
}

Nekaj takega, na hitr narjen

Wrop ::

EDIT: Vidim, da me je TEDY prehitel:D

Greš s for zanko od 2 pa do argc in primerjaš števili. Še prej deklariraš eno spremenljivko tipa int in privzameš, da je prvo število najmanjše.

npr.
int x; // dodatna spremenljivka
int min=atoi(argv[1]); // prvi element postane najmanjši
for (int i=2; i (manjši od) argc; i++) // sprehodimo se po vseh elementih
{
if ( (x = atoi(argv[i]) < min) // pogledaš če je trenutni element majši od najmanjšega
min = x; // shraniš x kot trenutno najmanjšega(kar po koncu zanke pomeni, da imamo najmanjšega)
}
// dodaš še izpis, če je potrebno


Sama koda ne vem če je sintaktično pravilna, lahko jo pa uporabiš kot psevdo kodo

Zgodovina sprememb…

  • spremenil: Wrop ()

Thagirion ::

Pozdrav!

Torej, tudi mi smo dobili eno nalogo podobno tej, za izpis najmanjšega števila.
Navodila:
Naloga od Vas zahteva, da napišete program, kateri bo poiskal najmanjše število iz seznama, podanega kot vhodni parametr, ter ga izpisal na standardni izhod (za izpis uporabite funkcijo printf(...)). Program naj problem reši s pomočjo for zanke. Vhodni parametri (argv[...] ) se v program prenesejo v obliki nizov. Da jih spremenite v števila, uporabite funkcijo atoi(..) (ascii to integer).

Sem poskusil po zgornjem primeru, pa mi vedno izpiše 0 ali pa 1...lahko kdo pomaga? :))

Hvala in LP.

Jagoda007 ::

Zanimivo, a bi res keri mogoče to vedo, ker mene tud zanima zdaj v čem je catch...


LP

Robi182 ::

#include <stdio.h>

int main(int argc, char** argv)
{
	if(argc < 2)
		return -1;

	int min = atoi(argv[1]);
	int i, x;
	for(i = 2; i < argc; i++)
	{
		if((x = atoi(argv[i]) < min))
		{
			min = x;
		}
	}

	printf("%d\n", min);

	return 0;
}

Thagirion ::

Hvala za pomoč, vendar še vedno ne deluje :8)
Če dam ./iskanje 3 5 7 (naprimer) mi vedno vrže kot najmanjšega 3, če dam katerokoli drugo število, kot npr.
./iskanje 3 5 7 -2 še mi vedno to prvo podano izpiše...še kakšna ideja? :)

Torej, očitno tega vedno izpiše, ko je v min=atoi(argv[1]); samo nevem kako to uredit.. ;((

lp

Zgodovina sprememb…

Brane2 ::

Taprvi primer dela, če v vrstici:

unsigned int temp = atoi(argv[1]);


Zbrišeš "unsigned"
On the journey of life, I chose the psycho path.

Thagirion ::

jap, samo more bit s for zanko ;)
sicer pa hvala za pomoč, vaja je rešena.
Je bla samo ena brezvezna napaka, ki še sam nevem kako sem jo odpravil :))

no, pa hvala za pomoč :D ko pogruntam kaj je bilo narobe, napišem :D

TEDY ::

jap, samo more bit s for zanko ;)


while(argc--) ---> for(; argc--;) ??

Robi182 ::

#include <stdio.h>

int main(int argc, char** argv)
{
	if(argc < 2)
		return -1;

	int min = atoi(argv[1]);
	int i, x;
	for(i = 2; i < argc; i++)
	{
		x = atoi(argv[i]);
		if(x < min)
		{
			min = x;
		}
	}

	printf("Min: %d\n", min);

	return 0;
}


Evo tole dela tut za negativne cifre. Edino kar sm spremenu je da sm x = atoi(argv[i]) premaknu na svoje izven if stavka pa kr dela.

Thagirion ::

ja, jaz sem naredil enako :D


Vredno ogleda ...

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

[C] Procesi

Oddelek: Programiranje
6909 (818) Cvenemir
»

[C] Množenje argumentov

Oddelek: Programiranje
15879 (623) _Enterprise_
»

[C] Vsota števil v polju

Oddelek: Programiranje
51182 (1120) Cvenemir
»

[C] najmanjse stevilo

Oddelek: Programiranje
101029 (890) BigWhale
»

C: connect() funkcija, kako nastaviti timeout

Oddelek: Programiranje
231626 (1407) fefko-the-bulldog

Več podobnih tem