Hirdetés

2024. június 9., vasárnap

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Borland c help! (téma lezárva)

Hozzászólások

(#1) Zsu_


Zsu_
senior tag

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
);
}

(#2) Zsu_


Zsu_
senior tag

Senki sem tud C-ben programozni? :F
Lécci segítsetek!

[Szerkesztve]

(#3) Zsu_


Zsu_
senior tag

up :)

(#4) Veron válasza Zsu_ (#1) üzenetére


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."

(#5) X-COM


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

(#6) Zsu_ válasza Veron (#4) üzenetére


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 :U
A feladat gondolom az, hogy adott elemszámú tömb elemeit orgonába rendezi.

(#7) Zsu_ válasza X-COM (#5) üzenetére


Zsu_
senior tag

igen, én is láttam, csak hová kell a while :F

(#8) X-COM válasza Zsu_ (#6) üzenetére


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

(#9) Veron


Veron
őstag

ha leirod mi az az orgona rendezes, en megmutatom hogy en hogy csinalnam, de ezt en tuti nem tom kijavitnai... :D

"Hisztéria... Csak nők kaphatják meg, és csak férfiak halnak bele."

(#10) Zsu_ válasza X-COM (#8) üzenetére


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...

(#11) Kamisama


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...

(#12) jamye válasza Zsu_ (#1) üzenetére


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]

(#13) Zsu_ válasza Kamisama (#11) üzenetére


Zsu_
senior tag

Ok, akkor majd felteszem prog.hu-ra.
Azért köszönöm :)

(#14) Zsu_ válasza jamye (#12) üzenetére


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 :)

(#15) jamye válasza Zsu_ (#1) üzenetére


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!

(#16) Zsu_ válasza jamye (#15) üzenetére


Zsu_
senior tag

ebben igazad van

(#17) jamye válasza Zsu_ (#14) üzenetére


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]

(#18) X-COM


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

(#19) Zsu_ válasza jamye (#17) üzenetére


Zsu_
senior tag

ok. Sorry :)

(#20) Zsu_ válasza X-COM (#18) üzenetére


Zsu_
senior tag

Tényleg belülre kell úgy, hogy
main ( )
{
deklarációk

(#21) jamye válasza X-COM (#18) üzenetére


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.

(#22) X-COM válasza jamye (#21) üzenetére


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

(#23) jamye


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]

(#24) Zsu_ válasza jamye (#23) üzenetére


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]

(#25) X-COM


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

(#26) jamye


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]

(#27) Zsu_ válasza jamye (#26) üzenetére


Zsu_
senior tag

Aha, szerintem így ok az algoritmus:))

[Szerkesztve]

(#28) jamye válasza Zsu_ (#27) üzenetére


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á:))

(#29) Zsu_ válasza jamye (#28) üzenetére


Zsu_
senior tag

Rendben :))
És hogy néz ez ki C szintaktikában?? :U

(#30) Mákosmetélt


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!

(#31) jamye válasza Zsu_ (#29) üzenetére


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!

(#32) Zsu_ válasza jamye (#31) üzenetére


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


Zsu_
senior tag

Mákosmetéltnek is köszi a helpet :DD

(#34) Mákosmetélt válasza Zsu_ (#33) üzenetére


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!

(#35) amargo válasza Zsu_ (#14) üzenetére


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!”

(#36) -=V3rthil=-


-=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


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!”

(#38) -=V3rthil=-


-=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


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!”

(#40) Zsu_ válasza amargo (#35) üzenetére


Zsu_
senior tag

Igen, tudom, hogy 0tól kezd a C....
De a ciklust tetszőleges értéktől futtathatod... szvsz

(#41) X-COM


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


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

(#43) Mákosmetélt


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


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


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 :F
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 :F






“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”

(#46) amargo válasza Zsu_ (#40) üzenetére


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


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! :C

[Szerkesztve]

Éljenek a nyulak!

(#48) Mákosmetélt válasza amargo (#46) üzenetére


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!

(#49) Zsu_


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);
}
}

(#50) Zsu_


Zsu_
senior tag

Fontos lenne, és sürgős :U

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Borland c help! (téma lezárva)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.