Az alábbi program (orgona.c) egy orgona-rendezés C-ben. A fordító 2errort jelez benne. De nem találom a hibákat? Valaki segítsen!
#include<stdio.h>
#define DARAB 5
int i, j, x, t, szamok[DARAB];
void main()
{
printf(''Kerem a %d db szamot: '', DARAB);
for(i=1; i<=DARAB; i++)
scanf(''%d'', &szamok);
for(i=1; i<DARAB+1; i++)
{
t=DARAB;
do {
}
printf(''a szamok a rendezes utan: '');
for(i=1; i<=DARAB; i++)
printf(''%d'', szamok);
}
Gyorskeresés
Legfrissebb anyagok
Általános témák
LOGOUT.hu témák
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] [sziku69:] Szólánc.
- [Re:] [sh4d0w:] Windows Recall
- [Re:] Viber: ingyen telefonálás a mobilodon
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [Sub-ZeRo:] Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Hozzászólások
Zsu_
senior tag
Zsu_
senior tag
Senki sem tud C-ben programozni?
Lécci segítsetek!
[Szerkesztve]
Veron
őstag
Hat en szivessen segitenek, de en is elsos vagyok csak villanyon (pascal az jobban megy, c-vel most ismerkedek).
Az jó lenne ha megmondanád mi a feladat konkretan.
Amit en latok hogy letrehozol egy tombot es fel akarod tolteni.. (de mondjuk van ot egy ''do'' ami ugye a do-while ciklus kezdete, de hol van a while hozza, e egyaltalan mit akartal csinalni abban a ciklusban?
"Hisztéria... Csak nők kaphatják meg, és csak férfiak halnak bele."
X-COM
nagyúr
nem vagyok egy nagy c guru
de az a
do{
}
mit csinál így önmagában? mert se egy záró while, sesemmi
Blog:http://ikszkom.freeblog.hu RSS:http://ikszkom.freeblog.hu/rss.xml http://live.xbox.com/member/ikszkom
Zsu_
senior tag
Passz, a programot nem én írtam, csak kérték, hogy javítsam ki.
De én sem tudom, hogy hol a hiba
A feladat gondolom az, hogy adott elemszámú tömb elemeit orgonába rendezi.
Zsu_
senior tag
igen, én is láttam, csak hová kell a while
X-COM
nagyúr
ebből a programból pont a rendezés hiányzik
milyen az az orgona rendezés?
mert ez csak bekér, aztán kiír, gondolom a do{} között lenne a lényeg
Blog:http://ikszkom.freeblog.hu RSS:http://ikszkom.freeblog.hu/rss.xml http://live.xbox.com/member/ikszkom
Veron
őstag
ha leirod mi az az orgona rendezes, en megmutatom hogy en hogy csinalnam, de ezt en tuti nem tom kijavitnai...
"Hisztéria... Csak nők kaphatják meg, és csak férfiak halnak bele."
Zsu_
senior tag
orgona az olyan, hogy pl legyen 6 szám: 1,5,9,15,17,19,26
Ez orgonában: 19,15,5,1,9, 17,26
Tehát középen a legkissebb szám, aztán a soron következő nála nagyobb az balra, a köv nagyobb az jobbra, és így tovább...
Kamisama
tag
Ennek a programnak még a jórésze hiányzik, ezt nem kijavítani kell, hanem befejzeni. Egyetemi gépészre járok, egy évig volt infónk de nekünk csak a buborékos és a gyorsrendezést kellett megtanúlni. Gondolom az ismerősöd, vagy még te is infósok vagytok.
Sztem inkább érdeklődj valamelyik programozós oldalon, vagy ircn.
Agyamra megy ez a rohadt gép...
jamye
csendes tag
Hello!
Egy alapvető hibára szeretném felhívni a figyelmed:
a main() visszatérési értéke int típusú minden esetben, nem pedig void
Egyébként itt a programnak a lényege még hiányzik.
A hibákról: A for(i=1; i<=DARAB; i++) sorban nem lehet i<=DARAB, csak <DARAB, mivel a tömb 5 elemű, ennek 0-4-ig van az indexe, és i=0-tol kell indítani a ciklust. A do{} részt ki is veheted, mert semmi nem csinál.
[Szerkesztve]
Zsu_
senior tag
Ok, akkor majd felteszem prog.hu-ra.
Azért köszönöm
Zsu_
senior tag
Bocs, hogy beleszólok, de mi az, hogy 0tól KELL indítani a ciklust??
A ciklust az ember onnan indítja, ahonnan akarja szvsz.
Amúgy meg 1-5ig, az ugyanaz, mint 0-4ig
jamye
csendes tag
Megvan, hogy volt az, ami furcsa volt még:
A változókat a main()-en belül kell deklarálni. Tehát a
int i, j, x, t, szamok[DARAB];
sort rakd a main()-en belülre!
jamye
csendes tag
Igen, valóban onnan indítod ahonnan akarod, de mivel van egy szamok[] tömböd, ami DARAB elemszámú, és feltételezem használni is szeretnéd, nem csak úgy foglalja a helyet, így kénytelen vagy 0-4-ig futtatni az indexet, mivel C-ben a tömbök indexelése 0-tól indul és a tömb elemszáma-1 -ig terjed
[Szerkesztve]
X-COM
nagyúr
miért kell a main-en belülre, összes ''progi''-ban amit c-ben írogattam main-en kívül volt a deklaráció
Blog:http://ikszkom.freeblog.hu RSS:http://ikszkom.freeblog.hu/rss.xml http://live.xbox.com/member/ikszkom
Zsu_
senior tag
Tényleg belülre kell úgy, hogy
main ( )
{
deklarációk
jamye
csendes tag
Rakhatod kívülre is, de alapvetően lokális változóként kéne ezeket deklarálni, mert ha készítesz egy eljárást, vagy függvényt, akkor onnan globálisan látszani fog. Persze ha ezt akarod elérni, az más , de nekünk alapvetően ezt tiltották eddig az egyetemen, gondolom nem véletlenül, és paraméterként kellett átadni.
X-COM
nagyúr
jahvagyúgy
azthittem szintaktikailag hibás, de csak szemléletügyileg
Blog:http://ikszkom.freeblog.hu RSS:http://ikszkom.freeblog.hu/rss.xml http://live.xbox.com/member/ikszkom
jamye
csendes tag
Én most próbálok rákeresni, hogy is lehet egy ilyen orgona-rendezést csinálni, de a google se magyarul, se angolul semmilyen találatot nem ad.
Közben rájöttem, hogy lehet megvalósítani. Egy kicsit körülményes az elgondolásom, de.... Ha már csökkenő sorrendbe vannak rendezve vannak nagyság szerint az elemek, akkor DARAB/2-1 -től 0-ig futtatom a ciklust és az elemet leghátra teszem be, vagyis:
for(i=DARAB/2-1;i>=0;i--)
{
szamok=szamok[DARAB-1];
}
[Szerkesztve]
Zsu_
senior tag
Lehet, hogy van más neve is, de én eddig csak ezt az elnevezést hallottam rá.
Nem érthető úgy, ahogy leírtam? #10
[Szerkesztve]
X-COM
nagyúr
hogy a szabályos módja mi fogalmam sincs, de én kb. így csinálnám:
rendezném csökkenőbe a tömböt
utána simán ciklussal átpakolnám egy új tömbbe (egyszerik egyik végébe, másszor másikba)
de lusta vagyok kivitelezni
Blog:http://ikszkom.freeblog.hu RSS:http://ikszkom.freeblog.hu/rss.xml http://live.xbox.com/member/ikszkom
jamye
csendes tag
Leírom mégegyszer, mert módosítottam új hozzászólás helyett
Ha már csökkenő sorrendbe vannak rendezve vannak nagyság szerint az elemek, akkor DARAB/2-1 -től 0-ig futtatom a ciklust és az elemet leghátra teszem be, vagyis:
for(i=DARAB/2-1;i>=0;i--)
{
szamok[ i ]=szamok[DARAB-1];
}
Szerintetek?
[Szerkesztve]
Zsu_
senior tag
Aha, szerintem így ok az algoritmus
[Szerkesztve]
jamye
csendes tag
Kicsit fáradt vagyok és a bor se tesz jót a gondolkodásnak, úgyhogy ha mégsem jó az elgondolás, akkor nekem semmi közöm hozzá
Zsu_
senior tag
Rendben
És hogy néz ez ki C szintaktikában??
- Privát
- 2004-03-14 22:01:57
Mákosmetélt
aktív tag
#include<stdio.h>
#include<conio.h>
void main()
{
#define DARAB 5
int i, j, x, t, szamok[5];
clrscr();
printf("Kerem a %d db szamot: ", DARAB);
for(i=0; i<DARAB; i++)
scanf("%d", &szamok[i]);
printf("\r\n");
for(i=0; i<DARAB; i++)
printf("%d\r\n", szamok[i]);
getch();
}
Na ez idáig működik, csomó minden rossz volt, pl bekérésnél indexelni kell a szamok változót mivel ciklusban van, stb..
A rendezés nincs benne, csak a bekérés a vektorba és a kírás de ez se dizájnolva.
Éljenek a nyulak!
jamye
csendes tag
#include<stdio.h>
#define DARAB 5
int main()
{
int i, j, x,t,szamok[DARAB];
printf(''Kerem a %d db szamot: '', DARAB);
for(i=0; i<DARAB; i++)
scanf(''%d'', &szamok[ i ]);
for(i=DARAB/2; i>=0; i=i-2)
{
t=szamok[ i ];
for(j=i;j<DARAB;j++)
szamok[j]=szamok[j+1];
szamok[ DARAB-1 ]=t;
}
printf(''a szamok a rendezes utan: '');
for(i=0; i<DARAB; i++)
printf(''%d '', szamok[ i ]);
}
Ennek csokkeno sorrendben kell megadni a szamokat es mukodik, ha minden igaz. A rendezest mar nincs kedvem megirni.
Jo ejt mindenkinek!
Zsu_
senior tag
köszi
Mostmár nekem sincs kedvem ezzel foglalkozni, majd holnap frissen és üdén
(#33) Zsu_ válasza Mákosmetélt (#30) üzenetére
- Privát
- 2004-03-14 22:19:20
Zsu_
senior tag
Mákosmetéltnek is köszi a helpet
(#34) Mákosmetélt válasza Zsu_ (#33) üzenetére
- Privát
- 2004-03-14 22:27:58
Mákosmetélt
aktív tag
Egyébként lehet még1 vektort használni a rendezéshez, vagy csak azt az egyet. Mert még1 vektor jelentősen megkönnyíteni a rendezést. ÜDV
Szívesen
[Szerkesztve]
Éljenek a nyulak!
amargo
addikt
elvileg igazad van, de a C az olyan nyelv, hogy egy töböt 0kezdi el megcimezni.. ha most kihagyod a 0ást akkor az első adatodat hagyod ki.
ez csak egy megjegyzés.
abban igazad van, hogy akárhonnan indíthatod.
de nem úgyan az, ha 0 vagy 1től indítod.
szerk: amint látom, már elmondták
amargo
[Szerkesztve]
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
- Privát
- 2004-03-15 23:32:39
-=V3rthil=-
őstag
A main függvénynek nme feltétlenül kell visszatérési érték tudtommal, alapból int, de megadhatod, hogy void legyen.
hey-ho-let's-go
(#37) amargo válasza -=V3rthil=- (#36) üzenetére
- Privát
- 2004-03-16 00:01:21
amargo
addikt
alapból void, és megadható, hogy más legyen. ezt írtad, csak az int az nem void és a void az üres. uhh most ez nekem is sok volt.
tehát jól írtad a mondat feléig, üres alapból a mailn, de az üres az a void, amit nem feltétlen kell kiírni, mert ha csak ezt írod, hogy main(). úgyan az mintha ez lenne main(void). csak szoktatás képpen a tanárok kiírattatják a voidot.
bár ez C++ os tapasztalat.. sima Cre már nem egészen emxem.. Bocsi, ha ha rosszul tudnám.
szek: na máá nem tudom bepipálni az email es mehetes dolgot, mert nincs.. pedig a többi topicnál előjön
meg van!
amargo
[Szerkesztve]
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
- Privát
- 2004-03-16 00:11:19
-=V3rthil=-
őstag
Jah, asszem kicsit érthetetlen volt a mondatom Szal igen, arra gondoltam, hogy megadható, hogy üres legyen. Alapértelmezettben is az?? Akkor mégis rosszul írtam. Nekem úgy rémlett, hogy a main() az int main()... De mindegy, a lényeg a lényeg
hey-ho-let's-go
(#39) amargo válasza -=V3rthil=- (#38) üzenetére
- Privát
- 2004-03-16 00:29:49
amargo
addikt
alapértelmezésben üres a visszatérési érték.
a main elött és után is. de ez C++ Cre nem emxek, de csak nem változtattak
én a maint csak meghívásra használtam, ezért nekem mindig üres volt
az a gondom, hogy a vissza térési értékét tudom, hogy üres és a többinek is alapból, void nélkül is, de a deklarálására nem emxek pontossan. viszont én eddig abban a tudatban éltem, hogy az is üres alapból, csak ha nem üresset akarunk akkor kell irogatni.
de ha még se jól tudom, akkor majd úgy is felvilágósítanak
amargo
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
Zsu_
senior tag
Igen, tudom, hogy 0tól kezd a C....
De a ciklust tetszőleges értéktől futtathatod... szvsz
X-COM
nagyúr
ANSI C esetén nem lehet void a visszatérési értéke (el is száll a fordító)
Blog:http://ikszkom.freeblog.hu RSS:http://ikszkom.freeblog.hu/rss.xml http://live.xbox.com/member/ikszkom
(#42) Il Padrone válasza X-COM (#41) üzenetére
- Privát
- 2004-03-16 09:30:04
Il Padrone
senior tag
Igaz, a main() fuggvenynek kotelezo megadni a visszateresi erteket (int).
Ez szabaly, a tobbi fuggveny lehet void (az sem regota) az ansi C szerint.
A main-nek azert kell visszateresi ertek, hogy a kulvilagnak (shell, command prompt) tudjon visszauzenni. Olvastam linux fejlesztesi leirasban (coding guideline), hogy a programoknak azert is kell visszateresi ertek, hogy tobbek kozott az egyik program atadhasson infot a masik program bemenetere (pipe).
Nem neked X-COM, hanem altalanossagban:
Az meg hogy hol deklaralod a valtozot, attol fugg, hogy globalis, vagy lokalis valtozot akarsz
[Szerkesztve]
Il Padrone
- Privát
- 2004-03-16 10:32:32
Mákosmetélt
aktív tag
Jé nem én rontottam el a vektor indexelését a ciklusban (#30), hanem a fórum nem teszi ki a szamok [ i ] -t!
[Szerkesztve]
Éljenek a nyulak!
(#44) KovacsUr válasza Mákosmetélt (#43) üzenetére
- Privát
- 2004-03-16 10:39:55
KovacsUr
addikt
Helyreraktam.
So it goes… We stand alone by standing stones and turn them into circles.
(#45) amargo válasza Il Padrone (#42) üzenetére
- Privát
- 2004-03-16 10:46:57
amargo
addikt
Ez most nem tudom milyen C, de hogy nálam a nincs beírva konkrétan visszatérési érték és még is megy. akkor most a main alapból int el tér vissza? mert nálam még nem szarakodot érte a fordító. bár most nem tudom ki fogalmazott furán, de a void is egy visszatérési érték. és a main(void) al is vissza térhet.. persze rosszul is tudhatm, csak akkor magyarázzátok el
de szerintem attól a tárgytól ne térjünk el, hogy az alapvető kérdés az volt, hogy ha nem írunk be semmit a main()-be akkor az mit jelent
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
amargo
addikt
teljsessen igazad van onnan idítod ahonnan akarod!
de tömbkezelésnél, nem. ha ismét érthetettlen voltam bocska. elöbbiekben is a tömbkezelésről írtam.
amargo
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
(#47) Mákosmetélt válasza KovacsUr (#44) üzenetére
- Privát
- 2004-03-17 14:16:55
Mákosmetélt
aktív tag
Köszönöm szépen !
MÁS: a main függvény visszatérési értékének meg utánna nézek a könyvben, hogy kiderüljön az igazság, ami odaát van!
[Szerkesztve]
Éljenek a nyulak!
(#48) Mákosmetélt válasza amargo (#46) üzenetére
- Privát
- 2004-03-17 14:20:46
Mákosmetélt
aktív tag
Végül is vektornál, mátrixnál is onnan indítod a ciklust, ahonnan akarod, de akkor a vektor indexelésében kell változtatni pl.: ha 2-ről indítod a ciklust, akkor vektor[i-2] az indexelés és így ok, szal így is lehet, de minnél 1szerűbb annál jobb!
Éljenek a nyulak!
Zsu_
senior tag
Ismét segítségre lenne szükségem.
A feladat:
Írjon programot C-ben, amely beolvas tetszőleges szövegfájlt , és kiírja egy másik filebe úgy, hogy minden sor elé odaírja, hogy hányadik sor, és hogy a sor hány karaktert tartalmaz!
Példa:
beolvasandó szövegfájl:
alma
ollo
lo
amit ki kell írni egy másik szövegfájlba:
1 4 alma
2 4 ollo
3 2 lo
Megírtam a programot, csak nem jül működik
Please help!
Valaki segítsen kijavítani a hibát!
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
void main (void)
{
FILE*f,*f1;
char *file,*sor,c;
int s;
clrscr();
printf (''K‚rem a filet: \n'');
scanf (''%s'',file);
f=fopen (file, ''rt'');
if (f==NULL)
{
printf(''A filet nem lehet megnyitni.\n'') ;
fclose (f);
}
f1=fopen (''megoldas.txt'',''w+'');
if(f1==NULL)
printf(stderr,''A filet nem lehet megnyitni.\n'');
for (s=1;(c=getc(f))!=EOF;s++)
{
fscanf(f,''%s'',sor);
fprintf (f1,''%3d%3d %s\n'',&s,strlen(sor),sor);
fclose(f1);
}
}