Aktív témák
-
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);
} -
Zsu_
senior tag
Senki sem tud C-ben programozni?
Lécci segítsetek!
[Szerkesztve] -
Zsu_
senior tag
up
-
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, sesemmiBlog: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."
-
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] -
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
-
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.
-
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] -
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 kivitelezniBlog: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] -
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
válasz Mákosmetélt #30 üzenetére
Mákosmetéltnek is köszi a helpet
-
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!”
-
-=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
-
amargo
addikt
válasz -=V3rthil=- #36 üzenetére
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!”
-
-=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
-
amargo
addikt
válasz -=V3rthil=- #38 üzenetére
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!”
-
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
-
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
-
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!
-
KovacsUr
addikt
válasz Mákosmetélt #43 üzenetére
Helyreraktam.
So it goes… We stand alone by standing stones and turn them into circles.
-
amargo
addikt
válasz Il Padrone #42 üzenetére
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!”
-
-
Mákosmetélt
aktív tag
-
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);
}
} -
Zsu_
senior tag
Fontos lenne, és sürgős