» »

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

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

FX6300B ::

imam problem dobim to napako .c:4:1: error: expected identifier or '(' before '{' token koda je pa


#include <stdio.h>

int main(void);
{
int a;
int povp2=1;
int povp3=0;

while (a!=0)
{
printf("vnesite celo stevilo\n");
scanf("%d\n", &a);
int min;
int max;
int povp;
if (a<min) min=a;
if (a>max) max=a;
povp3 = a+povp3;
povp=povp3/povp2;
povp2=povp2+1;
printf("min=%d,max=%d,povp=%d", min, max, povp);
}
return 0;
}


bi mi prosim razložili kje je težava
May the force be with you!
  • spremenil: FX6300B ()

black ice ::

Podpičje za
int main(void);
je odveč.

PS: Zamikaj kodo.

Zgodovina sprememb…

FX6300B ::

hvala saj imam drugače zamaknjeno samo tukaj sem tako prilepil mal možgani ne delajo ok da sm to spregledu

sedaj imam takole pa ne deluje program moram vnesti št kar 2x pa mi kr nekej vn vrže

#include <stdio.h>

int main(void)
{
int a;
int povp2=1;
int povp3=0;

while (a!=0)
{
printf("vnesite celo stevilo:\n");
scanf("%d\n", &a);
int min;
int max;
int povp;
if (a<min) min=a;
if (a>max) max=a;
povp3 = a+povp3;
povp=povp3/povp2;
povp2=povp2+1;
printf("min=%d,max=%d,povp=%d\n", min, max, povp);
}
return 0;
}

Zgodovina sprememb…

  • spremenil: FX6300B ()

FX6300B ::

tole vn meče
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
9
min=1,max=9,povp=7
vnesite celo stevilo:
199
min=1,max=9,povp=7
vnesite celo stevilo:
299
min=1,max=199,povp=12
vnesite celo stevilo:
199999999
min=1,max=299,povp=18
vnesite celo stevilo:
199999999
min=1,max=199999999,povp=45454
vnesite celo stevilo:

Zgodovina sprememb…

  • spremenil: FX6300B ()

black ice ::

Pojdi vrstico za vrstico skozi program in boš našel par napak. En namig: kako lahko primerjaš dve spremenljivki med sabo, če za eno izmed njih ne veš kakšno vrednost ima?

FX6300B ::

vem to je težava ampak ji nesmem dodeliti vrednosti ka pol bi se še bolj zmedlo

Mavrik ::

Daj vsaj toliko se potrudi da zamakneš kodo, ker se te tvoje klobase ne da brat.
The truth is rarely pure and never simple.

FX6300B ::

#include <stdio.h>

int main(void)
{
int a;
int povp2=1;
int povp3=0;

	while (a!=0)
	{
	printf("vnesite celo stevilo:\n");
	scanf("%d\n", &a);
	int min;
	int max;
	int povp;
		if (a<min) min=a;
		if (a>max) max=a;
	povp3 = a+povp3;
	povp=povp3/povp2;
	povp2=povp2+1;
	printf("min=%d,max=%d,povp=%d\n", min, max, povp);
	}
return 0;
}
:D

amacar ::

Daj malo poglej kakšno kodo pišeš.

1. V while zanki testiraš če je a različen od 0, pa mu sploh nisi nastavil nobene vrednosti
2. Primerjaš če je a manjši kot min, pa zopet min nima nastavljene vrednosti. (enako za testiranje z max)

FX6300B ::

1. ja v while če je različen od 0 sepravi dokler ne vneseš 0
2. to vem samo če nastavim vrednost nebi delovalo kot je mmišnleno



Sestavi program, ki bere števila, dokler ne vnesemo števila 0. Program naj sproti izpisuje največje število, najmanjše število ter povprečje števil.

Vnesi celo število: 15
min = 15, max = 15, povp = 15
Vnesi celo število: 8
min = 8, max = 15, povp = 11.5
Vnesi celo število: 25
min = 8, max = 25, povp = 16
Vnesi celo število: 13
min = 8, max = 25, povp = 15.25
Vnesi celo število: 0

AndrejO ::

Program, kot si ga spisal, bo samo po naključju in občasno od sebe dal kakšen približek zahtevanega rezultata.

Kot so ti že dvakrat napisali, uporabiti nedoločeno vrednost v kakršnem koli kontekstu je napaka. Tvoj "int a; while (a != 0) { ..." bo tako deloval samo in zgolj po naključju. Občasno tudi ne bo deloval. Če boš svoj izdelek prevedel in pognal z GCC s pravimi zastavicami, ne bo deloval nikoli.

Razmisli in napiši tukaj, kakšna je vrednost spremenljivke "a", potem ko jo deklariraš z "int a;". Takoj v tvoji 6. vrstici.

Potem, ko boš popravil to napako, pa se lahko lotiš še preostalih štirih.

FX6300B ::

sem že rešil problem :D

#include <stdio.h>

int main(void)
{
int a;//ŠTEVILO KI JO VNESE UPORABNIK
int stevec=0;//števec vnešenih števil
int vsota=0;//vsota vseh vnesenih števil 
int min;
int max;
int povp=0;

printf("vnesite celo stevilo:");
scanf("%d", &a);
max = a;
min = a;
vsota = a + vsota;
povp = a;
stevec++;
printf("min=%d,max=%d,povp=%d\n", min, max, povp);

	while (a!=0)
	{
	printf("vnesite celo stevilo:");
	scanf("%d", &a);
		if (a<min) min=a;
		if (a>max) max=a;
	vsota = a+vsota;
	povp=vsota/stevec;
	stevec++;
	printf("min=%d,max=%d,povp=%d\n", min, max, povp);
	}
return 0;
}

Zgodovina sprememb…

  • spremenil: FX6300B ()

AndrejO ::

FX6300B je izjavil:

sem že rešil problem :D

OK, ni najbolj elegantno, ampak sedaj imaš pravilno delujoč program. Bravo!

Lahko pa ga poskusiš še polepšati in narediti malo bolj berljivega.

Namigi pa so sledeči:
...
while (a != 0) {  // Med operatorjem in operandi se prileže presledek.
  // Koda je pogosto poravnana tako, da je zamaknjena v naslednji
  // vrstici, po začetnem {.
  printf("Vnesite celo stevilo: ");
  ...
}

...

while (a != 0)
{
  // To je druga možnost poravnave, kjer je pravilo še vedno enako:
  // zamik v naslednji vrstici.
  printf("Vnesite celo stevilo: ");
  ...
}
...

// Operaciji sta identični, druga pa vsebuje manj ponavljanja.
vsota = a + vsota;
vsota += a;


Kot bonus pa razmisli kaj storita naslednji dve zanki. Morda ti razmislek odpravi še več
ponavljajoče se kode.
int a; // Trenutna vrednost
int s;  // Vsota vseh

scanf("%d", &a);
s = a;

while (a != 0) {
  scanf("%d", &a);
  s += a;
}

int a;
int s = 0;

while (1) {
  scanf("%d", &a);
  if (!a) break;
  s += a;
}

alexa-lol ::

Problema se lahko lotiš tudi z uporabo do while zanke, ki deluje enako s to razliko da se blok kode najprej izvede in šele na koncu preveri pogoj.

http://www.cprogramming.com/tutorial/c/...

To se recimo uporablja če je naloga "Dodajaj števila v polje dokler uporabnik ne vnese števila 0. Ko ga vnese izpiši vsebino polja."

MrStein ::

Uporabljaj prevajalnik (ali kar jezik), ki opozori na uporabo spremenljivk, ki še nimajo definirane vrednosti. Ti bo prihranilo precej časa.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!


Vredno ogleda ...

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

[C] - Spreminjanje programa s pointerji

Oddelek: Programiranje
61078 (830) DaMachk
»

naloga ne funkcionira

Oddelek: Programiranje
101356 (1265) FX6300B
»

Obratna vrednost

Oddelek: Programiranje
51261 (1193) mgermo
»

Nemorem rešit ene naloge z c++ (sem začetnik) (strani: 1 2 )

Oddelek: Programiranje
6810018 (5756) technolog
»

[c] char zadeva

Oddelek: Programiranje
222109 (1907) TheCyborg

Več podobnih tem