Jump to content
GSForum - Segélyvonal

Programozás (segítség és publikálás kezdõknek)


Recommended Posts

Posted

Hello

Visual Studio 2008-cal C#-ban próbálok összedobni egy progit, ami a gombokra kattintáskor mappákat és parancsikonokat nyit meg (a mappát is parancsikon formájában próbáltam, mert máshogy nem ment, a másik parancsikon meg a catalyst profilos ikonja)

Itt a kód:

private void button4_Click(object sender, EventArgs e)

{

File.Open("safemode.lnk", System.IO.FileMode.Open); //catalist "safemode" profil

File.Open("general_list.lnk", System.IO.FileMode.Open); //mappa

}

Namost, ha rákattintok a gombra, akkor nem történik semmi, ha mégegyszer, akkor pedig kifagy azzal, hogy a fájl nem megynyitható, mert más alkalmazás használja, vagy mi. Ezt hogy kéne akkor? Mappát hogy lehet ilyen módon megnyitni? (rendesen, nem parancsikonnal)

Más: a form háttérképét hogy lehet scripttel változtatni? Mert a Form1.BackGroundimage nincs, meg más ötletem se.

Meginmás: hogy is kell exception catchet csinálni? 2 éve nem programoztam C#-ban és már elfelejtettem :D

Köszi

Posted

Sziasztok, egy kis segítség kéne turba pascalban. Suliban járok programozásra az emeltszintû infóérettségi miatt, és gondoltam gyakorlok itthon is. Leszedtem a TP7et, eddig nincs is probléma. Van azonban egy programom, és ugye a parancssortörlés a uses crt a változók elé majd egy clrscr a megadott helyre. Ez a suliban mûködik is, viszont amikor itthon próbáltam azt írta, hogy error 200: division by zero. Nah ezt nem értem hogy miért. Illetve próbáltam wincrt-t a crt helyett, de nem talál ilyen fájlt, hogy wincrt.tpu. Örülnék, ha tudna valaki segíteni :unsure:

Posted

bzs1!

Elõször is: én lerövidíteném a változók neveit (pl width -> w), könnyebben át lehetne tekinteni a kódot és nem is kéne annyit írni/másolni. Ha szükséges, ki lehet kommentezni az elején, hogy mi micsoda.

Az adatokat lehetne struktúrába rendezni, így könnyedén át lehet majd alakítani a programot úgy, hogy több szobával is tudjon számolni. Ha jól értem a feladatot, akkor a minõség és festendõ felület függvényében egy árajánlatot kell tenni, azaz a programnak egy számot kell visszaadnia.

Ehez elég 4 változó (feltételezve, hogy egy szoba minden fala azonos minõségû festékkel lesz lefestve, illetve hogy a plafont is mindig festik; ezekre ha jól látom nem tér ki a leírás): egy a hossz, egy a szélesség, egy a minõség és egy az ár tárolására (ez utóbbi nem is feltétlenül szükséges, hacsak nem kell ezzel az árral késõbb valami kezdeni).

Ezután egy egyszerû függvénnyel ki lehet számoltatni a kívánt értéket,

double p_calc(char q, int w, int l) //(q)uality, (w)idth, (l)ength
{
       double i = 0; //csak hogy ne kelljen annyit pötyögni :D
       if (q == '1'){
             i=(w+l)*2*8/400*40+w*l/400*40;
             i=i/200*40+100;
             return i;
       } else if (q == '2'){
             //szamolas
             return i;
       } else {
             //szamolas
             return i;
       }                        
}

csak meg kell hívni a megfelelõ paraméterekkel. Ha szükséges, akkor a paraméterlistába fel lehet venni egy másik változót, ami tárolja, hogy kell-e festeni a mennyezetet, vagy sem.

Az else-ekkel az a baj, hogy az if ágban a feltétel után ;-t raktál. Az nem kell oda.

Egyébként nem jók a feltételeid. Csomószor feleslegesen csinál mûveletet a program, de ez a kisebb gond, a nagyobb (és ez a rossz eredmény forrása), hogy elõbb vizsgálod a változót, és csak utána kéred az értékét, lásd a ceiling változót.

if (quality == 1){
   premiumcost=2*8*length+2*8*width*2*40/400;
}

if(quality==1 && ceiling==2){
   premiumcost=2*8*length+2*8*width*2*40/400+width*length*20/400*2;
} else {
premiumcost=0;
}

Itt pl megnézed, hogy a milyen a minõség, majd kiszámolod a megfelelõ értéket. Aztán megint megnézed, ÉS még, hogy kell-e a plafont is festeni, de mivel ekkor még nem tudjuk, így az else ágba ugrik a program, és a premiumcost 0 lesz.

A végén csak a plafon kifestésének a költségét kapod meg.

És egyelõre az inputot sem ellenõrzöd.

Posted

Sziasztok, egy kis segítség kéne turba pascalban. Suliban járok programozásra az emeltszintû infóérettségi miatt, és gondoltam gyakorlok itthon is. Leszedtem a TP7et, eddig nincs is probléma. Van azonban egy programom, és ugye a parancssortörlés a uses crt a változók elé majd egy clrscr a megadott helyre. Ez a suliban mûködik is, viszont amikor itthon próbáltam azt írta, hogy error 200: division by zero. Nah ezt nem értem hogy miért. Illetve próbáltam wincrt-t a crt helyett, de nem talál ilyen fájlt, hogy wincrt.tpu. Örülnék, ha tudna valaki segíteni :unsure:

Pascalon erõsen gondolkodj el, mert amit kapott sulink szoftverlistán, az van írva, hogy 2010. év tavaszi vizsgaidõszaktól megszûnik a választási lehetõsége.

Posted

Pascalon erõsen gondolkodj el, mert amit kapott sulink szoftverlistán, az van írva, hogy 2010. év tavaszi vizsgaidõszaktól megszûnik a választási lehetõsége.

Az igazából már/még nem érint, mert ha minden igaz, akkor jövõ összel csinálom az emelt infót - remélem akkor még benne lesz.

Posted

DooM! Koszi a reszletes tajekoztatot!

Az elmult 2 hetben csak ezzel a programmal torodtem,ezzel buktam 3 masik tantargybol teszteket, ugyhogy kevesebb idot toltok vele..szerdaig.

Ez a kovetelmeny a programmal kapcsolatban:

Testing Dialogue 1 (1 room with valid inputs):

PAINTING COST ESTIMATOR

Enter length of room in feet: 15

Enter width of room in feet: 10

Enter quality (1:premium, 2:regular, 3:basic): 2

Enter if ceiling to be painted (1-yes / 2-no): 1

RESULTS:

Total Area: 550 sq ft

Premium paint cost: $ 0.00

Regular paint cost: $ 60.00

Basic paint cost: $ 15.00

Labour costs: $210.00

TOTAL COST: $285.00

Testing Dialogue 2 (1 room with different valid inputs):

PAINTING COST ESTIMATOR

Enter length of room in feet: 15

Enter width of room in feet: 10

Enter quality (1:premium, 2:regular, 3:basic): 1

Enter if ceiling to be painted (1-yes / 2-no): 2

RESULTS:

Total Area: 400 sq ft

Premium paint cost: $ 80.00

Regular paint cost: $ 0.00

Basic paint cost: $ 0.00

Labour costs: $180.00

TOTAL COST: $260.00

Testing Dialogue 3 (1 room with another set of valid inputs):

PAINTING COST ESTIMATOR

Enter length of room in feet: 10

Enter width of room in feet: 12

Enter quality (1:premium, 2:regular, 3:basic): 3

Enter if ceiling to be painted (1-yes / 2-no): 1

RESULTS:

Total Area: 472 sq ft

Premium paint cost: $ 0.00

Regular paint cost: $ 0.00

Basic paint cost: $ 47.20

Labour costs: $194.40

TOTAL COST: $241.60

Submit Dialogue 1 (multiple rooms with valid inputs):

PAINTING COST ESTIMATOR

Enter length of room in feet: 10

Enter width of room in feet: 15

Enter quality (1:premium, 2:regular, 3:basic): 1

Enter if ceiling to be painted (1-yes / 2-no): 1

Another room to be entered (1-yes / 2-no): 1

Enter length of room in feet: 12

Enter width of room in feet: 20

Enter quality (1:premium, 2:regular, 3:basic): 2

Enter if ceiling to be painted (1-yes / 2-no): 2

Another room to be entered (1-yes / 2-no): 1

Enter length of room in feet: 10

Enter width of room in feet: 10

Enter quality (1:premium, 2:regular, 3:basic): 3

Enter if ceiling to be painted (1-yes / 2-no): 2

Another room to be entered (1-yes / 2-no): 2

RESULTS:

Total Area: 1382 sq ft

Premium paint cost: $ 80.00

Regular paint cost: $ 76.80

Basic paint cost: $ 47.00

Labour costs: $376.40

TOTAL COST: $580.20

Submit Dialogue 2 (multiple rooms with re-prompt and input for invalid entries):

PAINTING COST ESTIMATOR

Enter length of room in feet: 10

Enter width of room in feet: 15

Enter quality (1:premium, 2:regular, 3:basic): 1

Enter if ceiling to be painted (1-yes / 2-no): 1

Another room to be entered (1-yes / 2-no): 1

Enter length of room in feet: -1

Error! Length must be a positive value

Enter length of room in feet: 0

Error! Length must be a positive value

Enter length of room in feet: 12

Enter width of room in feet: 0

Error! Width must be a positive value

Enter width of room in feet: -1

Error! Width must be a positive value

Enter width of room in feet: 10

Enter quality (1:premium, 2:regular, 3:basic): 0

Error! Quality must be between 1 and 3

Enter quality (1:premium, 2:regular, 3:basic): 4

Error! Quality must be between 1 and 3

Enter quality (1:premium, 2:regular, 3:basic): 3

Enter if ceiling to be painted (1-yes / 2-no): 0

Error! Enter 1 to paint ceiling, 2 for no

Enter if ceiling to be painted (1-yes / 2-no): 3

Error! Enter 1 to paint ceiling, 2 for no

Enter if ceiling to be painted (1-yes / 2-no): 2

Another room to be entered (1-yes / 2-no): 0

Error! Enter 1 for another room, 2 for no more

Another room to be entered (1-yes / 2-no): 3

Error! Enter 1 for another room, 2 for no more

Another room to be entered (1-yes / 2-no): 1

Enter length of room in feet: 12

Enter width of room in feet: 15

Enter quality (1:premium, 2:regular, 3:basic): 2

Enter if ceiling to be painted (1-yes / 2-no): 2

Another room to be entered (1-yes / 2-no): 2

RESULTS:

Total Area: 1334 sq ft

Premium paint cost: $ 80.00

Regular paint cost: $ 64.80

Basic paint cost: $ 50.20

Labour costs: $366.80

TOTAL COST: $561.80

main ()

{

double totalsqft, roomsqft=0,ceilingsqft,length,width;

double labour, ceilingcost, totalcost;

double premiumcost,basiccost,regularcost;

int quality,ceiling, anotherroom;

/*Program*/

printf(">>> Paint Cost Estimator <<<\n");

printf("Enter length of the room:");

scanf("%lf",&length);

while(length<=0)

{

printf("Error!Length must be positive value!\n");

printf("Enter length of the room:");

scanf("%lf",&length);

}

printf("Enter width of the room in feet:");

scanf("%lf", &width);

while(width<=0)

{

printf("Error!Width must be positive value!\n");

printf("Enter width of the room:");

scanf("%lf",&width);

}

printf("Another room to be entered[Yes-1, No-2]:");

scanf("%d",&anotherroom);

while(anotherroom<=0 || anotherroom>=3)

{

printf("Error!Enter 1 for another room, 2 for no more\n");

printf("Another room to be entered[Yes-1, No-2]:");

scanf("%d",&anotherroom);

}

if(anotherroom==1)

{

printf("Enter length: ");

scanf("%lf",&length);

}

while(length<=0)

{

printf("Error!Length must be positive value!\n");

printf("Enter length of the room:");

scanf("%lf",&length);

}

printf("Enter width:");

scanf("%lf", &width);

while(width<=0)

{

printf("Error!Width must be positive value!\n");

printf("Enter width of the room:");

scanf("%lf",&width);

}

printf("Enter quality[Premium=1,Regular=2,Basic=3]:");

scanf("%d",&quality);

while(quality<=0 || quality>=4)

{

printf("Error! Quality must be between 1 and 3\n");

printf("Enter quality[Premium=1,Regular=2,Basic=3]:");

scanf("%d",&quality);

}

if (quality == 1)

{

premiumcost=2*8*length+2*8*width*2*40/400;

}

else if(quality==1 || ceiling==2)

{

premiumcost=2*8*length+2*8*width*2*40/400+width*length*20/400*2;

}

else

{

premiumcost=0;

}

if (quality==2)

{

regularcost=2*8*length+2*8*width*2*30/400;

}

else if( quality==2 || ceiling==1)

{

regularcost=2*8*length+2*8*width*2*30/400+width*length*20/400*2;

}

else

{

regularcost=0;

}

if (quality==3)

{

basiccost=2*8*length+2*8*width*2*20/400;

}

else if ( quality==3 || ceiling==1)

{

basiccost=2*8*length+2*8*width*2*20/400+width*length*20/400*2;

}

else

{

basiccost=0;

}

printf("Enter if ceiling to be painted [Yes-1,No-2]:");

scanf("%d", &ceiling);

while(ceiling<=0 || ceiling>=3)

{

printf("Error! Enter 1 to paint ceiling, 2 for no!\n");

printf("Enter if ceiling to be painted [Yes-1,No-2]:");

scanf("%d", &ceiling);

}

if (ceiling == 1)

{

ceilingcost = width*length*20/400*2;

ceilingsqft=width*length;

}

else

{

ceilingcost = 0;

}

printf("Another room to be entered[Yes-1, No-2]:");

scanf("%d",&anotherroom);

while(anotherroom<=0 || anotherroom>=3)

{

printf("Error!Enter 1 for another room, 2 for no more\n");

printf("Another room to be entered[Yes-1, No-2]:");

scanf("%d",&anotherroom);

}

if(anotherroom==1)

{

printf("Enter length: ");

scanf("%lf",&length);

}

while(length<=0)

{

printf("Error!Length must be positive value!\n");

printf("Enter length of the room:");

scanf("%lf",&length);

}

printf("Enter width:");

scanf("%lf", &width);

while(width<=0)

{

printf("Error!Width must be positive value!\n");

printf("Enter width of the room:");

scanf("%lf",&width);

}

/*Calculate room squarefeet*/

width=width++;

length=length++;

roomsqft=roomsqft+2*8*length+2*8*width;

ceilingsqft=width*length;

totalsqft=ceilingsqft+roomsqft;

labour=100+40/200*totalsqft*2;

totalcost=labour+basiccost+regularcost+premiumcost;

printf("--------E S T I M A T E---------\n");

printf("Total Area:.......... %.2lfsqft\n",totalsqft);

printf("Premium paint cost:..$ %.2lf$ \n", premiumcost);

printf("Regular paint cost:..$ %.2lf$ \n", regularcost);

printf("Basic paint cost:....$ %.2lf$ \n", basiccost);

printf("Labour costs:........$ %.2lf$ \n", labour);

printf("TOTAL COST:..........$ %.2lf$ \n",totalcost);

}

A hosszu nevek kovetelmenyek, hogy programozobarat legyen,ne kelljen gondolkodnia annak aki olvassa,mi mit jelent. Ez a vegleges verziom,ami nem mukodik rendesen, de pentek du feladtam rajta...masik 3 targy miatt.

Posted

Hello

Visual Studio 2008-cal C#-ban próbálok összedobni egy progit, ami a gombokra kattintáskor mappákat és parancsikonokat nyit meg (a mappát is parancsikon formájában próbáltam, mert máshogy nem ment, a másik parancsikon meg a catalyst profilos ikonja)

Itt a kód:

private void button4_Click(object sender, EventArgs e)

{

File.Open("safemode.lnk", System.IO.FileMode.Open); //catalist "safemode" profil

File.Open("general_list.lnk", System.IO.FileMode.Open); //mappa

}

Namost, ha rákattintok a gombra, akkor nem történik semmi, ha mégegyszer, akkor pedig kifagy azzal, hogy a fájl nem megynyitható, mert más alkalmazás használja, vagy mi. Ezt hogy kéne akkor? Mappát hogy lehet ilyen módon megnyitni? (rendesen, nem parancsikonnal)

Más: a form háttérképét hogy lehet scripttel változtatni? Mert a Form1.BackGroundimage nincs, meg más ötletem se.

Meginmás: hogy is kell exception catchet csinálni? 2 éve nem programoztam C#-ban és már elfelejtettem :D

Köszi

Teszi ez a dolgát, csak épp nem arra gondoltál, amit csináltál. Megnyitja a fájlokat, de ez a féle megnyitás írásra/olvasásra nyitja meg a fájlt (tehát pl. streamesítve tudod szerkeszteni a tartalmát).

Próbáld a System.Diagnostics.Process.Start metódust próbáld hasonló paraméterrel hívogatni. Arra azért figyelj, hogy elérhetõ helyen legyen a program számára a két fájl, ha így relatív elérési utat adsz meg.

Másik dolog, hogy miért is fagyott ki a programod? Megnyitotta a fájlt, majd másodjára a gombra kattintva megpróbálta ezt még egyszer megtenni. Ekkor kaptad a hibaüzenetet, hogy valami használja már a fájlt. Tanulság: ha a fájlmegnyitást egy control valamely eseményéhez kötöd, akkor érdemes azt a controlt letiltani, miután sikeresen megnyitotta a fájlt. (Az alap konvenció szerint elõször ellenõrizzük, hogy meg van-e már nyitva a fájl, és ha nincs, akkor megyünk tovább - ez esetben nem kell letiltani a controlt.)

Nem tudom, mit értesz script alatt, viszont form háttérképét csak design time-ban tudod beállítani.

Exception.

try
{

// code

}
catch (System.Exception ex)
{

// exception handling code

}

Posted

DooM! Koszi a reszletes tajekoztatot!

Az elmult 2 hetben csak ezzel a programmal torodtem,ezzel buktam 3 masik tantargybol teszteket, ugyhogy kevesebb idot toltok vele..szerdaig.

Ez a kovetelmeny a programmal kapcsolatban:

...

A hosszu nevek kovetelmenyek, hogy programozobarat legyen,ne kelljen gondolkodnia annak aki olvassa,mi mit jelent. Ez a vegleges verziom,ami nem mukodik rendesen, de pentek du feladtam rajta...masik 3 targy miatt.

Aham. Most már minden világos a követelményeket illetõen.

Szerintem meg marhára nem programozóbarátak ezek a nevek. Beszédesek, ez kétségtelen, de szerintem csak megnehezítik az olvasást, könnyebb elnézni a mûveleteket, a zárójelezést. De legfõkképpen hosszúak, ami nagy hátrány a kódolásnál (többet kell pötyögni, könnyebb elírni). Nem hiszem, hogy ésszerû rövidítéseken gondolkodnia kell annak, aki a kódot olvassa (pl width -> w), fõleg, ha az elején oda is van írva, hogy mi mit jelent.

A programoddal megint az a baj, hogy túl sok és hibás az elágazás. Ezért (sem) ad jó eredményt. Pl

if (quality == 1){
    premiumcost=2*8*length+2*8*width*2*40/400;
} else if (quality==1 || ceiling==2){
    premiumcost=2*8*length+2*8*width*2*40/400+width*length*20/400*2;
} else { premiumcost=0; }

.

Ha a quality értéke 1, akkor (egyébként hibásan) kiszámolod, hogy mennyi a minõségi falfestés, ezután a program már nem vizsgálja tovább a feltételeket, hisz az elsõ teljesült. Ha meg nem 1, akkor a ceiling értékének a függvényében ugyanazt (a hibás) számítást végzed el, amihez hozzáadod a plafon festésének költségét.

Mivel sokszor kell ugyanolyan adatokat bekérni, és ugyanazokat a számításokat elvégezni, így érdemes lenne az adatokat valamilyen struktúrába rendezni (majd a struktúrát egy tömbben eltárolni), a számításokra meg egy függvényt írni.

typedef struct {
    int w, l, q;  //w - width, l - length, q - quality;
    char c; //c - ceiling 
    double p_cost, r_cost, b_cost, l_cost; //p - premium, r - regular, b - basic, l - labour
} room;
    
typedef room rooms[];

A változók nevei szerintem egyértelmûek. Szvsz a méreteknek elég lesz az int is (persze ez módosítható), a mennyezetnek bõven elég a char, hisz csak két értéket vehet fel (lehetne csinálni logikai típust is, de felesleges). További változókra nincs szükség, hisz pl a total cost a p_cost, b_cost, ... összege, a teljes felület összege meg egy for ciklussal kiszámítható.

A struktúra (vagy más néven rekord) neve room (természetesen bármi lehet), amire típusként is lehet hivatkozni. Ez azért jó, mert így létre tudunk hozni olyan tömböt (a kódrészlet utolsó sora), ami ilyen típusú adatokat tud tárolni. Egy szoba hosszára így tudsz hivatkozni:

rooms[i].l = 10

.

Ezzel - mivel a C-ben a tömbindexelés 0-tól kezdõdik - az i+1 -dik szoba hosszának értékül adtad a 10-et. A plafon területét a

rooms[i].l*rooms[i].w

kódsor adja meg. Mindez azért jó, mert így minden szobának meg lesz minden szükséges adata, és a számításokat KÉSÕBB is el lehet végezni.

Ezek után kell még egy egyszerû függvény, ami kiszámolja a EGY szobára esõ költséget.

double p_calc(int w, int l, char q, char c) //(q)uality, (w)idth, (l)ength
{
       double i = 0;
       if (c == '2'){
             i=(w+l)*2*8*2/400*(40-(q-1)*10);
       } else {
             i=(w+l)*2*8*2/400*(40-(q-1)*10)+w*l*2/400*20;
       }
return j=i/200*40+100;                
}

A számolás elsõ ránézésre bonyolultnak tûnhet, de nem az. A falat azt mindig festeni kell. A falfelületet úgy a legkönnyebb kiszámolni, hogy vesszük a kerületet ( (w+l)*2 ) és megszorozzuk a magasággal (ami ugye tudjuk, hogy mindig 8). A másik *2 az a két réteget jelenti. A festék ára 400 "négyzetláb"-ra vonatkozik, ezért kell osztani 400-zal. Így megkapjuk, hogy hány "egység" festék kell. Ezt már csak meg kell szorozni az egységárral ( (40-(q-1)*10) ). Ez a "bonyolult" képlet kiküszöböli az elágazásokat, hisz eggyel kevesebbszer vonjuk ki a 40-bõl (legdrágább festék ára) a 10-et (ennyi a különbség a "szomszédos" festékek árai között), mint amennyi a minõség kódja. Pl a legrosszabb minõség esetében 40-(3-1)*10 = 20.

Most már csak annyi a teendõ, hogy helyesen olvasd be (és tárold el) az adatokat.

Pl írsz egy végtelen for ciklust, amibõl akkor lépsz ki, ha minden adat helyes és nem akar az illetõ több szobát megadni. A for cilkuson belül meg addig kéred be az egyes adatokat (egy while ciklussal), amíg azok helyesek nem lesznek (a méretek pozitívak, a minõség 1, 2 vagy 3, stb.)

Persze még össze kell kalapálni a struktúrát és a ciklust, hogy megkapd a részeredményeket is (teljes felület, prémuim festék, stb.), de azt egyelõre meghagyom neked, ha nem megy, akkor csak szólj. :)

(Remélem helyes, amit írtam, nem próbáltam ki.)

  • 2 weeks later...
Posted

nekem az lenne a kérdésem, hogy ti melyik programot ajánjátok c++ programozásra, kezdö vagyok, csak arra kell hogy amit a suliban tanulunk azt tudjam otthon gyakorolni.

Posted

Ha valaki kezdõ így programozás terén, én ajánlanám elsõ nyelvnek a HTML-t, szerintem nem nehéz

meg könnyen meg lehet tanulni, hamar <_< De ott van még a Visual C# is.

Posted

nekem az lenne a kérdésem, hogy ti melyik programot ajánjátok c++ programozásra, kezdö vagyok, csak arra kell hogy amit a suliban tanulunk azt tudjam otthon gyakorolni.

Bloodshed DevC++

Posted

Ha valaki kezdõ így programozás terén, én ajánlanám elsõ nyelvnek a HTML-t, szerintem nem nehéz

meg könnyen meg lehet tanulni, hamar <_< De ott van még a Visual C# is.

html-t már csináltam

Posted

html, mint programozási nyelv? :) na neee :D

Posted

Szia Doom,

sajnos olyan megoldast adtal, amit meg nem hasznalhattam, mert nem tanultuk. Most 2 het elteltevel mar functions-ban vagyunk :blink: , nem teljesen kerek nekem, 13 eve nem foglalkoztam matekkal :o , ugyhogy kisse akadozik a dolog. Reszleteket ertek de az egeszet nem. Adtak egy ilyet is gyakorlasnak, csak nem tudom hogy esteledik vagy hajnalodik. <_<

Habar lehetoseg van ra hogy ora utan fogadooran kioktasson a tanar, de lenyegeben nem mondja el maskepp, es a hozzaallasa sem az igazi. Elhadarja `oszt jovan`. Tegnapelott egy eleg jo C-s gyerek segedanyagot kert, mire rovidre zarta a valaszt: `Ilyenekkel nem foglalkozom.` 2 honapot kellene kihuznom valahogy, azutan ok a dolog. Elmeletileg matek tobbet szoba sem jon. :unsure:

Ha tudsz/van kedved akkor segits legyszives.

Koszi :rolleyes:

IPC144A Practice Test 1

1. (12 marks) Walkthrough the following program using the inputs given and show all output produced:

main()

{ int i, num1, num2 = 5;

double d2, d1 = 2.5;

printf("Enter 2 values: ");

scanf("%d %lf", &num1, &d2);

if (num1 < num2)

printf("A\n");

else

printf("B\n”);

if (num1+2 > d1)

printf("x\n");

else if (num1+2 < d1)

printf("y\n");

else

printf("z\n");

while (num1 < num2)

{ printf("num1: %d\n", num1);

num1 += 3;

}

do

{ i = 1;

printf("d1: %.1lf\n",d1);

for (i=2; i < 4; i++)

printf("i: %d\n",i);

d1 = d1 + 3.0;

} while (d1 < d2);

printf("i: %d, d1:%.1lf, num1: %d\n", i, d1, num1);

}

INPUT: 0 6.2

OUTPUT: MEMORY

2. (9 marks) Walkthrough the following program using the inputs given and show all output produced:

int f1(int num1);

int f2(int int1);

main()

{ int num1, num2, num3 = 4;

printf(“Enter an integer: “);

scanf(“%d”, &num1);

f1(num1);

printf(“A, num1: %d\n”,num1);

num2 = f2(num3);

printf(“B, num2: %d\n”,num2);

num1 = f1(num3 -2);

printf(“C num1: %d, num2:%d, num3: %d\n”,num1,num2,num3);

}

int f1(int num1)

{ num1 = num1 +2;

printf(“f1, num1: %d\n”,num1);

return num1;

}

int f2(int int1)

{ int val;

if (int1 > 5)

val = 9;

else

val = 3;

printf(“f2, val: %d\n”, val);

return val;

}

INPUT: 5

OUTPUT MEMORY

3. (13 Marks) Write a function double getMark(double upperValue) which prompts for and returns a test mark which must be between 0 and the upperValue provided. With the main shown below the following screen dialogue would be produced:

Enter mark between 0 and 100.00: 222  prompt from getMark

Enter mark between 0 and 100.00: -22  prompt from getMark

Enter mark between 0 and 100.00: 82.5  prompt from getMark

Mark in main: 82.50  output from main

double getMark(double);

main() {

double mark;

mark = getMark(100);

printf("mark in main: %.2lf\n", mark);

}

double getMark(double upperValue)

{

}

4. (12 Marks) Write a function int evaluateMark (double mark) which is passed a double value for mark between 0 and 100 inclusive and is to print out one of the following comments based on the mark and return an integer value of rating based on the mark. You can assume that the function is only passed valid values of mark:

Mark Comment Rating

80-100 Great 1

Above 65 and below 80 Good 2

55 and above to 65 and below Okay 3

Below 55 Poor 4

With the main shown below the following screen dialogue would be produced:

Poor  output from evaluateMark

in main, rated : 4  output from main

int evaluateMark(double);

main() {

int rated;

rated = evaluateMark(54.6);

printf(“in main, rated : %d\n”,rated);

}

int evaluateMark(double mark) {

}

5. (14 marks) Write a function called calcAvg that adds marks for a class of students to get the total number of marks for the class and divides this by the number of marks to get the average mark for the class. The calcAvg function should use the getMark function using an upper value of 100 coded for question 3 to get the mark for each student. The calcAvg function should use the evaluateMark function coded for question 4 to print out a comment about the average of the class and to obtain the the rating of the class which calcAvg is also to return.

NOTE: You do not have to include the code for the functions getMark or evaluateMark! They are your answers for questions 3 and 4.

With the main shown below and inputs of 66 1 82 0 the following screen dialogue would be produced:

Enter mark between 0 and 100.00: 66  prompt from getMark

Enter another mark (1/Y, 0/N): 1  prompt from calcAvg

Enter mark between 0 and 100.00: 82  prompt from getMark

Enter another mark (1/Y, 0/N): 0  prompt from calcAvg

Good  output from evaluateMark

Rated in main: 2  output from main

double getMark(double upperValue); /* from question 3 */

int evaluateMark(double mark); /* from question 4 */

int calcAvg();

main() {

int rated;

rated = calcAvg();

printf("Rated in main: %d\n", rated);

}

int calcAvg() {

}

Posted

Két kérdésem lenne C/C++-al kapcsolatban.

1. Parancssorban meg lehet azt oldani, hogy ha a while ciklus újraindul akkor a kijelzõn mindent töröljön a program? Tehát, hogy az elõzõt mindig felülírja? (Konkrétan egy amõba táblázatot kéne mindig újra kirajzolni)

2. Színes szövegeket, hogy tudnék létrehozni?

Google-öztem, de erre a kettõre nem sok mindent találtam. Ja és még egy apróság: plattform függetlenül kéne :S Színeket találtam valami windows.h include-ban, de az gondolom linuxon nem menne.

Posted

Hello

az alabbihoz szeretnek otletet segitseget kapni. Mar csak 1 ilyen szepseg van hatra a kesobbiekben. Barkinek barmi otlete van, ossza meg velem, koszi!

As required input, you are to ask for and obtain:

· the number of floors in the building (a positive whole number that must be between 1 and 50, and must be validated (i.e. must repeatedly prompt the user to re-enter any value that is outside of the required boundaries))

· the number of windows on the side of each floor (a positive whole number that must be between 2 and 20, and must be validated (i.e. must repeatedly prompt the user to re-enter any value that is outside of the required boundaries))

PROCESSING:

After the data has been correctly entered, your program must draw a side of the building with the number of windows and floors specified. Your program should start by drawing the top floor first.

Each floor must be drawn using only the following characters:

"-" makes up the top and bottom of each floor

"+" used to draw the corner of each floor, door and window (4 corners per floor, door and window)

"|" used for the sides of each floor (5 for each regular floor and 8 for the ground floor) and for the sides of each window and door

"=" used for the top and bottom of each window and door.

Each window is a total of 3 characters high. There will always be the same number of windows on each floor, with the exception of the ground floor which replaces the left window with a door. There must be 2 spaces drawn between the left side of each floor and the first window, and between the last window and right side of each floor. Only 1 space is to separate consecutive windows. In addition, 1 space must separate the top of each regular floor from all windows on that floor.

The only exception to this rule is the ground floor whose total height will be comprised of 10 characters. 2 spaces must separate the top of the first floor from the windows on that floor. The door is drawn as a window would be drawn, except twice as high (see example below for proper spacing and characters).

Here is an example of a building with 3 floors and 5 windows:

+-----------------------+ <--+

| | |

| +=+ +=+ +=+ +=+ +=+ | |

| | | | | | | | | | | | |--- 7 characters high

| +=+ +=+ +=+ +=+ +=+ | | note: single space between each window.

| | | note: 2 spaces between left side

+-----------------------+ <--+ with first window and right

+-----------------------+ side with last window.

| |

| +=+ +=+ +=+ +=+ +=+ |

| | | | | | | | | | | |

| +=+ +=+ +=+ +=+ +=+ |

| |

+-----------------------+

+-----------------------+ <--+

| | |

| | |

| +=+ +=+ +=+ +=+ +=+ | |

| | | | | | | | | | | | |

| | | +=+ +=+ +=+ +=+ | |--- 10 characters high

| | | | |

| | | | |

| +=+ | |

+-----------------------+ <--+

FUNCTIONS:

You must write and use the following functions when drawing your building.

NOTE: You should design and use additional functions to make your program shorter or more modular.

void getInputs(int *numFloors, int *numWindows);

Obtains valid inputs for number of floors (between 1 and 50) and number of windows (between 2 and 20). Calls getValue function to obtain each input.

int getValue(int min, int max);

Continuously asks the user to enter a number until the number entered is between 'min' and 'max' inclusive. Once an appropriate number has been entered this function returns that value.

void regularFloor(int windows);

Given the number of windows, this function draws an entire floor. The number of windows you draw is determined by the value of the parameter 'windows'.

void firstFloor(int windows);

Given the number of windows, this function draws the first floor. The first floor is to include a door on the left side followed by 1 less window than the value of the parameter 'windows'.

STARTING PROGRAM:

/* Name: */

/* Description: Start of program for IPC144 asst 2 */

#include <stdio.h>

void regularFloor(int windows);

void firstFloor(int windows);

main() {

/* using test case of 3 floors and 2 windows BUT */

/* actually need to get and validate inputs */

int i, numFloors = 3, numWindows = 2;

/* print top floors, starting from the top floor */

regularFloor(numWindows);

/* print 1st floor with a door in place of left window */

firstFloor(numWindows);

return;

}

void regularFloor(int windows) {

/* print a regular floor starting to print from the top of */

/* each floor down to the bottom of the floor */

/* Each window takes 4 spaces: 3 for the window and one */

/* for the space to separate each window from the next one */

int i;

/* print top row of row of wall */

printf("+-");

for (i=0; i < (windows*4); i++)

printf("-");

printf("-\n");

/* print row of wall without windows */

printf("|--");

for (i=0; i < (windows*4); i++)

printf(" ");

printf("-|\n");

/* print bottom row of wall */

printf("+-");

for (i=0; i < (windows*4); i++)

printf("-");

printf("-\n");

return;

}

void firstFloor(int windows) {

/* start by printing from the top of the 1st floor to the bottom */

/* Leftmost window is replaced a door so 1 less window is printed */

/* print top row of row of wall */

return;

}

SAMPLE RUN – YOUR PROGRAM MUST PRODUCE THIS OUTPUT EXACTLY FOR THIS SET OF INPUTS:

***Welcome to the Building Drawing program***

Number of floors - Please enter a number between 1 and 50: 51

Sorry! '51' is not valid! Please enter a number between 1 and 50: 0

Sorry! '0' is not valid! Please enter a number between 1 and 50: 3

Number of windows - Please enter a number between 2 and 20: 1

Sorry! '1' is not valid! Please enter a number between 2 and 20: 21

Sorry! '21' is not valid! Please enter a number between 2 and 20: 2

Building of 3 floors and 2 windows each floor:

+-----------+

| |

| +=+ +=+ |

| | | | | |

| +=+ +=+ |

| |

+-----------+

+-----------+

| |

| +=+ +=+ |

| | | | | |

| +=+ +=+ |

| |

+-----------+

+-----------+

| |

| |

| +=+ +=+ |

| | | | | |

| | | +=+ |

| | | |

| | | |

| +=+ |

+-----------+

SUBMITTING:

You can develop your program using any C compiler. However you must submit your program compiled and tested using matrix.

On matrix, name your source file: yourlearnid2.c where "yourlearnid" should be replaced with your actual learn userid. For example if your userid is hpotter, your assignment should be called hpotter2.c.

Once your program is completely working, do the following to demonstrate to your teacher that your program does work on matrix:

- At the prompt type: script

- At the prompt type: whoami

- At the prompt type: cat yourlearnid2.c

- Compile your program even if it is already compiled

(type: cc yourlearnid2.c)

- Run your program several times (for each run type: a.out).

Use (at least) the following demonstration test data:

floors: 51, 0, 3

windows: 1, 21, 2

floors: 1

windows: 9

Posted

Na elkészítettem elsõ önálló programom, egy könyvbéli példát kiegészítve (ez volt a feladat) :D és mûködik :lol: Am egy Falhrenheit-Celsius átváltó.

#include <iostream>

float Convert(float);
float ConvertToFar(float);

int main()
{
    float TempFer;
    float TempCel;
    float TempFer2;
    float TempCel2;
        int type;
    std::cout << "Please choose the type of temperature 1(Clesius) or 2(Fahrenheit): ";
    std::cin >> type;

    if (type != 1) 
      {
       std::cout << "Please enter the temperature in Fahrenheit: ";
       std::cin >> TempFer;
       TempCel = Convert(TempFer);
       std::cout << "\nHere's the temperature in Celsius: ";
       std::cout << TempCel << std::endl;
       system ("pause");
       return 0;
      }

    else
      {
          std::cout << "Please enter the temperature in Celsius: ";
          std::cin >> TempCel2;
          TempFer2 = ConvertToFar(TempCel2);
          std::cout << "\nHere the temperature in Fahrenheit: ";
          std::cout << TempFer2 << std::endl;
          system ("pause");
          return 0;
      }
}
    

float Convert(float TempFer)
{
    float TempCel;
    TempCel = ((TempFer - 32) * 5) / 9;
    return TempCel;
}
float ConvertToFar(float TempCel2)
{
    float TempFer2;
    TempFer2 = ((TempCel2 * 9) /5) + 32;
    return TempFer2;
}

Õ lenne az.

Hogy lehetne az megoldani, hogy pl Celsiust kelljen beírni, és úgy hajtódjon végre az átváltás Fahrenheitre? Valamint 3. lehetõségként, ha hibásan írjuk be, kiírja a progi, hogy hiba.

  • 2 weeks later...
Posted

Üdv!

a következõ lenne a feldatom:

9. Olvassunk be egy maximum 70 karakter hosszú szöveget és számoljuk meg
hányszor fordul elõ, hogy magánhangzók követik egymást. Nyomtassuk ki ezt a
számot. (Nincs olyan függvény a standard könyvtárban, mely azonosítja a
magánhangzókat vagy mássalhangzókat.)

ezt a progit írtam rá, de nem mûxik és nem tudom mi lehet a hiba:

#include <stdio.h>
#include <string.h>
int main()
{
    char sz[71];
    int n,i,j,szamlalo;
    szamlalo=0;
    printf("Irjon be egy maximum 70 karakterbol allo szoveget: \n");
    fgets(sz,70,stdin);
    n=strlen(sz)-1;
    for(i=0,j=1;i<(n-1),j<n;i++,j++)
    {
        if((sz[i])=='a'||'e'||'i'||'o'||'u'&&(sz[j])=='a'||'e'||'i'||'o'||'u')
            szamlalo++;
    }
    printf("A szovegben %d-szor kovetik egymast maganhangzok",szamlalo);
    return 0;
}

Elõre is kösz a segítséget!

Posted

Ajánlatos mindig zárójelezni a logikailag összetartozó részeket, fõleg akkor, ha nem tudod az operátorok precedenciáját.

Amúgy a tömbindexelõ operátor erõsebb, mint az == operátor, tehát oda fölös a zárójel, viszont a logikai vagy operátornál meg ez elõbbi erõsebb, szóval a "vagyokat" be kéne zárójelezni.

Másik dolog, hogy vagy konvertáld lower case-re az egész szöveget, vagy vizsgáld nagy magánhangzókra is!

Posted

Üdv!

a következõ lenne a feldatom:

9. Olvassunk be egy maximum 70 karakter hosszú szöveget és számoljuk meg
hányszor fordul elõ, hogy magánhangzók követik egymást. Nyomtassuk ki ezt a
számot. (Nincs olyan függvény a standard könyvtárban, mely azonosítja a
magánhangzókat vagy mássalhangzókat.)

ezt a progit írtam rá, de nem mûxik és nem tudom mi lehet a hiba:

...

Elõre is kösz a segítséget!

Ahogy Calypsol kolléga is említette, a zárójelezéssel van itt a bibi, egyrészt. Másrészt - számomra legalábbis - nem egyértelmû, hogy mit akar a feladat.

Azt kérdezi, hogy hány magánhangzó van a string-ben, ami magánhangzót követ, vagy hány olyan részlet van, ahol magánhangzók követik egymást?

Pl. az "aaabbabaabbaaa"-ra mit kéne eredményként kapni?

Posted

Sajna a feladat számomra sem mindig egyértelmû (házi feladatba kapjuk a programozást)

A program azóta szerencsére fut és mûködik, kösz a segítséget!

Posted

Hello srácok. Segítségre lenne szükségem. Holnapra le kéne adnom az infótanáromnak egy emelt színtû érettségi feladatot. Csak vmi böszme nehéz a példa a számomra :D . Arra gondoltam hogy biztosan van itt olyan aki jobban ért hozzá és meg tudná csinálni. NAGYONMEGKÖSZÖNNÉM!!!

Tehát itt a példa:

3. Feladat 15 pont

Egy 10 ezer méteres síkfutó versenyen 8 versenyzõ indul. Rajtszámaik 1-tõl 8-ig kerülnek

kiosztásra. A távot a 400 méter hosszú pályán 25 kör megtételével teljesítik. Egy

számítógépes idõmérõ rendszer regisztrálja minden egyes versenyzõnek minden egyes kör

megtételéhez szükséges idejét. Az idõ rögzítése másodpercben történik, tehát ha egy futó egy

adott kört 1:08,42 (egy perc nyolc egész negyvenkét századmásodperc) alatt teljesít akkor

idõeredményeként a rendszer 68,42 másodpercet rögzíti.

Készítsen programot az alábbi feladatok megoldására!

Szimulálja az idõmérõ rendszer mûködését úgy, hogy a minden egyes versenyzõ összes

köridõit tároló változót véletlenszerû értékekkel tölti fel! A köridõknek 60 és 100 másodperc

közé kell esniük. (Feltesszük, hogy a versenytávot minden versenyzõ sikeresen teljesíti.)

Készítsen eredmény listát a képernyõre a verseny eredményérõl! A lista tartalmazza a

versenyzõ rajtszámát majd egy kötõjelet és a teljes táv megtételéhez szükséges idõeredményét

perc:másodperc.századmásodperc formátumban! (A másodperc és századmásodperc értékek

közé vesszõ is helyezhezõ tizedesjelként.)

Az egyes versenyzõkre vonatkozó adatsort szögletes zárójelek közé zárja! Az adatsorokat

külön sorokba írja! A lista legyen az idõeredmények szerint növekvõen rendezett!

Például:

[3-30:12,23]

[1-31:42,17]

[2-32:23,76]

[7-32:42,37]

[4-32:42,65]

[8-32:47,81]

[5-32:51,90]

[6-33:27,26]

Posted

Sziasztok, egy kis segítség kéne turba pascalban. Suliban járok programozásra az emeltszintû infóérettségi miatt, és gondoltam gyakorlok itthon is. Leszedtem a TP7et, eddig nincs is probléma. Van azonban egy programom, és ugye a parancssortörlés a uses crt a változók elé majd egy clrscr a megadott helyre. Ez a suliban mûködik is, viszont amikor itthon próbáltam azt írta, hogy error 200: division by zero. Nah ezt nem értem hogy miért. Illetve próbáltam wincrt-t a crt helyett, de nem talál ilyen fájlt, hogy wincrt.tpu. Örülnék, ha tudna valaki segíteni :unsure:

Még mindig aktuális a probléma :unsure:

Posted

Hello. Ezt a példát vki meg tudná oldani nekem C++ ban?

Egy 10 ezer méteres síkfutó versenyen 8 versenyzõ indul. Rajtszámaik 1-tõl 8-ig kerülnek

kiosztásra. A távot a 400 méter hosszú pályán 25 kör megtételével teljesítik. Egy

számítógépes idõmérõ rendszer regisztrálja minden egyes versenyzõnek minden egyes kör

megtételéhez szükséges idejét. Az idõ rögzítése másodpercben történik, tehát ha egy futó egy

adott kört 1:08,42 (egy perc nyolc egész negyvenkét századmásodperc) alatt teljesít akkor

idõeredményeként a rendszer 68,42 másodpercet rögzíti.

Készítsen programot az alábbi feladatok megoldására!

Szimulálja az idõmérõ rendszer mûködését úgy, hogy a minden egyes versenyzõ összes

köridõit tároló változót véletlenszerû értékekkel tölti fel! A köridõknek 60 és 100 másodperc

közé kell esniük. (Feltesszük, hogy a versenytávot minden versenyzõ sikeresen teljesíti.)

Készítsen eredmény listát a képernyõre a verseny eredményérõl! A lista tartalmazza a

versenyzõ rajtszámát majd egy kötõjelet és a teljes táv megtételéhez szükséges idõeredményét

perc:másodperc.századmásodperc formátumban! (A másodperc és századmásodperc értékek

közé vesszõ is helyezhezõ tizedesjelként.)

Az egyes versenyzõkre vonatkozó adatsort szögletes zárójelek közé zárja! Az adatsorokat

külön sorokba írja! A lista legyen az idõeredmények szerint növekvõen rendezett!

Például:

[3-30:12,23]

[1-31:42,17]

[2-32:23,76]

[7-32:42,37]

[4-32:42,65]

[8-32:47,81]

[5-32:51,90]

[6-33:27,26]

Posted

Nem lenne egyszerûbb ha te megpróbálnád és ha elakadsz kérdezel valaki meg válaszol? :) Gondolom kérdésekre mindenki szívesen válaszol itt, de konkrét feladat megoldást ne várjál el. Így nem fogsz felkészülni az érettségire...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...