Új hozzászólás Aktív témák
-
odonye
csendes tag
http://www.eet.bme.hu/publications/e_books/progr/cpp/node2.html <-- Google-ban nem volt nehéz ezt megtalálni.
-
Noobi
tag
Sziasztok! Tudna nekem valaki segíteni 2 feladat megoldásában? A határidő sürget, mivel holnap már be kell mutatni, és nagyon nem megy... de ha valaki mégis segítene, azt nagyon köszönöm!
1., Készítsünk a másodfokú egyenlet megoldására programot. Számítsuk ki a programmal az (x-10.0^i)*(x-1.0)=0.0 másodfokú egyenlet gyökeit az i=1,2,3,...értékekre. Figyeljük meg a kisebbik gyökként előállított értékeket. A hiba oka: a nagyon kis gyökök relatív hibája nagy, különösen akkor, ha az egyenlet két gyöke abszolút értékben jelentősen eltér egymástól. Ilyenkor ugyanis "a" is, és "c" is kicsi "b"-hez képest, s ezért b és sqrt(b^2-4*a*c) közel azonos értékű. A korlátozott pontosság következtében e két érték különbségének nagy lesz a relatív hibája. Jobb eredményt kapunk, ha a megoldóképlettel ekvivalens megoldóképlettel ekvivalens x1= -((2*c/b)/(1+sqrt(1-(4*a*c/b^2)))) x2= -(c/a*x1) képletek alapján határozzuk meg a gyököket, ahol abszolút értékét tekintve x1 a kisebik és x2 a nagyobbik gyök. Szóval valahogy szemléltetni kellene az egyik és a másik képlet által generált megoldásokat
2., a C hogyan ábrázolja a memóriában a számokat fixpontosan és lebegőpontosan... szóval azt kellene valahogy kiíratni, hogy tárolódik ez a memóriában... pl hexában a 12, -1.05 stb... számok...
Bocsi, hogy beírtam, de tanácstalan vagyok
-
Noobi
tag
válasz Benmartin #355 üzenetére
Az egyenletesnek már az elején.......
A memóriásra van két variációm, de sztem nem jó...var1:
#include<conio.h>
#include <iostream>
using namespace std;
main()
{
int i = 1024;
float f = -1.2;printf("A %d erteke a memoriaban: %p\n",i, i);
printf("A %f erteke a memoriaban: %p\n",f, f);getch();
}de ennél kicsit "sántít" a lebegőpontos....
var2:
#include <stdio.h>
#include <conio.h>
int main()
{
int n;
float m;
printf("Kerem a \/fixpontos\/ szamot: ");
scanf("%d", &n);
printf("Fixpontosan: ");
char *p = (char *) (&n);
for (int i = 0; i < sizeof(int); ++i, ++p)
{
printf("%02X ", (int) (unsigned char) (*p));
}
getch();{
printf("\nKerem a \/lebegopontos\/ szamot: ");
scanf("%f", &m);
char *p = (char *) (&m);
for (int i = 0; i < sizeof(float); ++i, ++p)
{
printf("%02X ", (int) (unsigned char) (*p));
}
getch();
return 0;
}
}
Nah így állok.... nem tudom hogy melyik lenne az elfogadható..... de a másodfokúshoz hozzá sem tudok fogni -
Benmartin
senior tag
-
djszapi
csendes tag
sziasztok!
az a kérdésem van, hogy soros porton keresztül gsm modulra kellene küldenem üzenetet, nyilván at parancsok segítségével hogy üzenetet küldjön a modul egy telefonra bizonyos feltételek teljesülésekor.
a kérdésem az hogy az elküldött szövegbe hogy tudom beleszúrni a nem nyomtatható, vezérlő karaktereket? enterre, meg a ctrl+z-re gondolnék.
enter vmi ilyesmi hogy \n, de a cntrl+z-nek a char alakja SUB, hexa meg decimalis alakja meg nem egeszen jo megoldas volt eddig...közsi: Laci
-
Wizardmon
csendes tag
heló!
Mi a problémája ennek a programnak?#include <stdio.h>
main ()
{
int a;
char b;
printf("Kerek egy egesz szamot: ");
scanf("%d",&a);
printf("Kerek egy betut: ");
scanf("%c",&b);
printf("a=%d es b=%c",a,b);
}A számot beolvassa, de a betűvel gondjai vannak. Vagy nem enged semmit beírni, vagy átugorja és egyből kiírja hogy pl: a=3 es b=
Vagy ha a program jó, akkor a fordítóval lehet a baj? Mert C++ fordítóm van, a könyv meg amiből tanulgatok sima C könyv. -
Lortech
addikt
válasz Wizardmon #362 üzenetére
scanf("%1s", &b);
Bennemarad az inputban az előző beolvasásból az enter és azt húzza be a karakter beolvasásánál.
scanf(" %c",&b) is jó (szóköz a c előtt), de ez csak egy db white-spacet küszöböl ki.
Ha pl. azt írod, hogy számnak, hogy:
1 szóközszóközszóköz akkor már nem jó.Thank you to god for making me an atheist
-
Gergello
addikt
Ilyen felépítésű szöveges fileból hogy lehet beolvasni?
Példa:
5 4 12345
das d as d ad
3 1 56565
gfdgd fgd asd asd ggggfscanf(f,"%d %d %s",......) ezzel beolvasom az első sort ez oké
a második sort ezzel próbálnám fscanf(f,"%s"....) ,de ez ugye csak az első szóközig olvassa be. Mindez egy for ciklusban van. -
Gergello
addikt
Köszi a gyors válaszokat!
Esetemben az fgets kellet volna használni -
Bettina87
csendes tag
Sziasztok!
Egy kis segítségre lenne szükségem. Konkrétan egy programot kéne megírni az alábbi három közül. Nagyon hálás lennék ha segítenétek nekem, mert én totál béna vagyok és az idő is sürget mert júni 6-ig kéne. Csak Kernighan-Ritchie C nyelven fogadja el a tanár, másban nem.
Ezekből lehet választani:1. r2d római-szám
A parancs a parancs sorban egy római számot (vagy római számok
szóközökkel elválasztott sorozatát) vár(ja), amely(ek)nek kiírja
decimális megfelelőjét az stdout-ra.
Hibásan megadott parancs esetén a programnak rövid diagnosztikai
üzenetben informálnia kell a felhasználót arról, hogy a parancsot
hogyan kell használni. A diagnosztikai üzenetet az stderr-re kell
küldeni.2. d2r decimális-szám
A parancs a parancs sorban egy decimális számot (vagy decimális számok
szóközökkel elválasztott sorozatát) vár(ja), amely(ek)nek kiírja római
szám megfelelőjét az stdout-ra.
Hibásan megadott parancs esetén a programnak rövid diagnosztikai
üzenetben informálnia kell a felhasználót arról, hogy a parancsot
hogyan kell használni. A diagnosztikai üzenetet az stderr-re kell
küldeni.3. twins decimális-szám
A parancs a parancs sorban egy decimális számot vár, és az
[1, decimális-szám] zárt intervallumba eső ikerprímeket írja
ki az stdout-ra.
Hibásan megadott parancs esetén a programnak rövid diagnosztikai
üzenetben informálnia kell a felhasználót arról, hogy a parancsot
hogyan kell használni. A diagnosztikai üzenetet az stderr-re kell
küldeni.Ha valaki meg tudna oldani nekem egyet és elküldené az e-mail címemre, nagyon hálás lennék.
-
Bettina87
csendes tag
Szia!
Az a baj, hogy egyiket sem tudom megcsinálni, volt kemény 3 órám belőle, ami alatt nem igazán sikerült elsajátítani a dolgokat, és sajna a többieknek sem megy. Még egy rossz programnak is örülnék, ami Kernighan-Ritchie C-ben írodott. Szóval nem gáz, ha nem fut le, bár ti biztos nagyon értetek ehhez, én majd pár év múlva talán, ha majd belemélyedek a programozás rejtelmeibe.
Szóval roppant nagy segítségre szorulok jelenleg. :-( -
mm00
aktív tag
válasz Bettina87 #372 üzenetére
Tessék, egy alapnak jó lesz (google)
#include<stdio.h>
main()
{
int a,b,c,d,e;
clrscr();
printf("Input a number (between 1-3000):");
scanf("%d",&e);
while (e==0||e>3000)
{
printf ("ERROR: Invalid Input!
");
printf ("Enter the number again:");
scanf ("%d",&e);
}
if (e>3000)
printf("Invalid");
a = (e/1000)*1000;
b = ((e/100)%10)*100;
c = ((e/10)%10)*10;
d = ((e/1)%10)*1;
if (a ==1000)
printf("M");
else if (a ==2000)
printf("MM");
else if (a ==3000)
printf("MMM");
if (b == 100)
printf("C");
else if (b == 200)
printf("CC");
else if (b == 300)
printf("CCC");
else if (b == 400)
printf("CD");
else if (b ==500)
printf("D");
else if (b == 600)
printf("DC");
else if (b == 700)
printf("DCC");
else if (b ==800)
printf("DCCC");
else if (b == 900)
printf("CM");
if (c == 10)
printf("X");
else if (c == 20)
printf("XX");
else if (c == 30)
printf("XXX");
else if (c == 40)
printf("XL");
else if (c ==50)
printf("L");
else if (c == 60)
printf("LX");
else if (c == 70)
printf("LXX");
else if (c ==80)
printf("LXXX");
else if (c == 90)
printf("XC");
if (d == 1)
printf("I");
else if (d == 2)
printf("II");
else if (d == 3)
printf("III");
else if (d == 4)
printf("IV");
else if (d ==5)
printf("V");
else if (d == 6)
printf("VI");
else if (d == 7)
printf("VII");
else if (d ==8)
printf("VIII");
else if (d == 9)
printf("IX");
getch();
} -
mm00
aktív tag
Egy másik, ez függvénybe
// written by Ste Cork, free for any and all use.
//
const char *Number_AsRomanString( int iNumber )
{
struct RomanDigit_t
{
char *m_psString;
int m_iValue;
};
static const RomanDigit_t RomanDigits[]=
{
{"M", 1000},
{"CM", 900},
{"D", 500},
{"CD", 400},
{"C", 100},
{"XC", 90},
{"L", 50},
{"XL", 40},
{"X", 10},
{"IX", 9},
{"V", 5},
{"IV", 4},
{"I", 1},
};
// Strictly speaking, Roman digits can't display something
// such as 4999 without using overlaid bars and so forth,
// but for now this is a quick-and-dirty piece of code that'll
// just keep using M's...
//
static char sRomanString[20];
sRomanString[0] = '\0';
for (int i=0; iNumber && i<sizeof(RomanDigits)/
sizeof(RomanDigits[0]); i++)
{
while ( RomanDigits[i].m_iValue <= iNumber )
{
strcat( sRomanString, RomanDigits[i].m_psString );
iNumber -= RomanDigits[i].m_iValue;
}
}
return sRomanString;
} -
Bettina87
csendes tag
köszönöm a segítséget, egyetlen egy gondom van, hogy ansi c-t nem fogad el a tanár, csak a Kernighan-Ritchie C-s parancsokat.
ha van még valakinek ötlete, hatalmas örömmel fogadom
Előre is köszönöm -
mm00
aktív tag
válasz Bettina87 #376 üzenetére
Na összehoztam neked, szerintem ez meg fog felelni
#include<stdio.h>
#include <ctype.h>
#define HSZ sizeof(int)/sizeof(short)*5
int getch(void);
void ungetch(int);
int getint(int *);
int main(int argc, char *argv[]) {
int i = 0;
int dec;
char rom[50];
getint(&dec);
printf("%d\n\n", dec);
while(dec>=1000){
dec -= 1000;
rom[i] = 'M';
i++;
}
if (dec>=900){
dec-=900;
rom[i] = 'C';
i++;
rom[i] = 'M';
i++;
}
if(dec>=500){
dec -= 500;
rom[i] = 'D';
i++;
}
if (dec>=400){
dec -= 400;
rom[i] = 'C';
i++;
rom[i] = 'D';
i++;
}
while(dec>=100){
dec = dec-100;
rom[i] = 'C';
i++;
}
if(dec>=90){
dec -= 90;
rom[i] = 'X';
i++;
rom[i] = 'C';
i++;
}
if(dec>=50){
dec -= 50;
rom[i] = 'L';
i++;
}
if(dec>=40){
dec -= 40;
rom[i] = 'X';
i++;
rom[i] = 'L';
i++;
}
while(dec>=10){
dec -= 10;
rom[i] ='X';
i++;
}
if(dec == 9){
rom[i] = 'I';
i++;
rom[i] = 'X';
i++;
}
else{
if(dec >= 5){
dec -= 5;
rom[i] = 'V';
i++;
}
if(dec == 4){
rom[i] = 'I';
i++;
rom[i] = 'V';
i++;
}
else{
while(dec > 0){
dec -= 1;
rom[i] = 'I';
i++;
}
}
}
rom[i]='\0';
printf("%s", rom);
}
int getint(int *pn)
{
int c=0, sign, ok=0, numdb;
double d;
while(!ok && c!=EOF)
{
while(isspace(c=getch()));
sign = 1;
if(c=='+'||c=='-')
{
sign=(c=='+')?1:-1;
c=getch();
}
for(d=0., numdb=HSZ; numdb-->0&&isdigit(c);c=getch())
{
d=10.*d+c-'0';
ok = 1;
}
d*=sign;
while(!isspace(c)&&c!=EOF)
{
c=getch();
ok = 0;
}
else
*pn=d;
}
if(c!=EOF)ungetch(c);
return(c);
} -
Bettina87
csendes tag
Eszméletlen rendesek vagytok, hogy segítetek
A legelsőt amit küldtél (373. hozzászólás) elküldtem a tanárnak, és visszadobta, hogy nem egészen ez volt a feladat kiírása.
Ezt a kis szösszenetet is mellékelte:
"Írjunk C programot (Kernighan-Ritchie C), amellyel az alábbi UNIX környezetben
végrehajtható parancsok valamelyikét valósítja meg. A választott parancsot
megvalósító programnak a parancs végrehajtásához szükséges információt a
parancssorból kell átvennie a „Hanoi Tornyai” játékot megvalósító
példaprogramban található módon. Az egészszám parancs argumentum átvételéhez az
int atoi(s)
char *s;
könyvtári függvényt használhatják ugyancsak a fent idézett példaprogramban látható módon.
Fontos: ANSI C, C++ forráskódú megoldások nem értékelhetők. "Totál kiakaszt, eddig mindenkiét visszaküldte, akiket ismerek, szóval roppant kedves és megértő emberke.
Azért próbálkozom a többivel is, hátha valamelyiket elfogadja. Remélem legalábbis.
-
Bettina87
csendes tag
Az elsőzőt küldtem el neki, kiváncsi leszek erre mit ír vissza.
Nagyon szépen köszönöm a segítséget, majd írok hogy ezekre mit reagált. Remélem ez már jó lesz neki valamilyen szinten. -
mm00
aktív tag
válasz Bettina87 #385 üzenetére
ÁÁÁ hibáztam sorry
Ez a jó leteszteltem most
#include<stdio.h>
#include <stdlib.h>
int egesze(char[]);
int main(int argc, char *argv[]) {
int i = 0, x=0;
int dec;
char rom[50];
if(argc == 1){
perror("Hianyzik a parameter!");
}
for(x=1;x<argc;x++){
if(egesze(argv[x])){
dec = atoi(argv[x]);
}else{
perror("A parameterlistaban nem megfelelo az egyik ertek!");
}
while(dec>=1000){
dec -= 1000;
rom[i] = 'M';
i++;
}
if (dec>=900){
dec-=900;
rom[i] = 'C';
i++;
rom[i] = 'M';
i++;
}
if(dec>=500){
dec -= 500;
rom[i] = 'D';
i++;
}
if (dec>=400){
dec -= 400;
rom[i] = 'C';
i++;
rom[i] = 'D';
i++;
}
while(dec>=100){
dec = dec-100;
rom[i] = 'C';
i++;
}
if(dec>=90){
dec -= 90;
rom[i] = 'X';
i++;
rom[i] = 'C';
i++;
}
if(dec>=50){
dec -= 50;
rom[i] = 'L';
i++;
}
if(dec>=40){
dec -= 40;
rom[i] = 'X';
i++;
rom[i] = 'L';
i++;
}
while(dec>=10){
dec -= 10;
rom[i] ='X';
i++;
}
if(dec == 9){
rom[i] = 'I';
i++;
rom[i] = 'X';
i++;
}
else{
if(dec >= 5){
dec -= 5;
rom[i] = 'V';
i++;
}
if(dec == 4){
rom[i] = 'I';
i++;
rom[i] = 'V';
i++;
}
else{
while(dec > 0){
dec -= 1;
rom[i] = 'I';
i++;
}
}
}
rom[i]='\0';
printf(" %s", rom);
}
}
int egesze(char s[]){
int i=0, kezd;
while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')++i;
if(s[i]=='+' || s[i]=='-')++i;
kezd=i;
while(s[i]>='0' && s[i]<='9')++i;
if(i==kezd || s[i]!=' ' && s[i]!='\t' && s[i]!='\n' && s [i]!=0) return 0;
else return 1;} -
Bettina87
csendes tag
Elküldtem neki az utolsót, amit küldtél, és ezt küldte vissza:
"Ez egy picivel jobb, mint az előző, de nem KR (Kernighan-Ritchie) C-ben van.
Ha elküldi a KR C változatát, és levelében elmagyarázza nekem, hogy miért a perror rendszer függvényt hívja, akkor teljesen jó lesz."Az a gász, hogy fogalmam sincs hogy mit mire kéne kicserélni. Elvileg jó, meg minden, csak nem KR C. Bár részemről ezt is lepontozhatná, a lényeg hogy ne buktasson meg, de ez még mindig nem felel meg neki.
Lenne esetleg ötletetek hogy mit kéne változtatni?
ha szépen megkérlek titekt, azt is leírnátok hogy miért a perror rendszer függvényt hívja
aztán ígérem nem zaklatlak titeket többet, vasárnapig kell leadni.
Bár nektek ez jobban megy mint nekem.
köszi mindenkinek aki segít
-
shev7
veterán
utananeztem a perrornak, es ahogy nezem ennek az a lenyege, hogy egy globalis valtozo tarolja, hogy a program futtatasa soran milyen hiba lepett fel, es a parameterul adott string utan kiirja. Tehat teszem azt, ha az atoi-t ugy probalnad meghivni, hogy elotte nem ellenorzod le hogy konvertalhato-e szamma a string, akkor ha hiba tortent, beallitana az errno nevu globalis valtozot (hivas elott erdemes nullazni, es includolni kell az errno.h-t) Ha az atoi hivas utan ellenorzod, hogy az errno erteke 0. Ha nem, akkor hivsz egy perror-t ami kirna a szoveget, meg az errno hibakodnak megfelelo szoveget. De mivel te mindig leellenorzod, hogy a szam konvertalhato-e, a program futasa soran sosem kap rossz parametert, sosem fog az errno erteke megvaltozni, ezert a perror hivas ebbol a szempontbol felesleges, irhatnal egybol a stderr-re is.
Visszaterve a temara: mivel fogalmam sincs mi az ami Kernighan-Ritchie C es mi az ami nem, fogalmam sincs mi a baja. De ha perror-t lehet hasznalni Kernighan-Ritchie C-ben, akkor lehet, hogy arra gondol a tanero amit fennt levezettem mert akkor az lehet hogy Kernighan-Ritchie-sebb
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
-
mm00
aktív tag
Hát nem tudom mit várhat a tanár.... Talán ez "Kernighan-Ritchie" kód... átnéztem egy hivatalos Richie könyvbe... Ha ilyen tanárom lenne nem kicsit szidnám...
#include <stdio.h>
int egesze(char[]);
int atoi(char[]);
int main(int argc, char *argv[]) {
int i = 0, x=0;
int dec;
char rom[50];
if(argc == 1){
fprintf(stderr, "Hianyzik a parameter!");
}
for(x=1;x<argc;x++){
if(egesze(argv[x])){
dec = atoi(argv[x]);
}else{
fprintf(stderr, "A parameterlistaban nem megfelelo az egyik ertek!");
}
while(dec>=1000){
dec -= 1000;
rom[i] = 'M';
i++;
}
if (dec>=900){
dec-=900;
rom[i] = 'C';
i++;
rom[i] = 'M';
i++;
}
if(dec>=500){
dec -= 500;
rom[i] = 'D';
i++;
}
if (dec>=400){
dec -= 400;
rom[i] = 'C';
i++;
rom[i] = 'D';
i++;
}
while(dec>=100){
dec = dec-100;
rom[i] = 'C';
i++;
}
if(dec>=90){
dec -= 90;
rom[i] = 'X';
i++;
rom[i] = 'C';
i++;
}
if(dec>=50){
dec -= 50;
rom[i] = 'L';
i++;
}
if(dec>=40){
dec -= 40;
rom[i] = 'X';
i++;
rom[i] = 'L';
i++;
}
while(dec>=10){
dec -= 10;
rom[i] ='X';
i++;
}
if(dec == 9){
rom[i] = 'I';
i++;
rom[i] = 'X';
i++;
}
else{
if(dec >= 5){
dec -= 5;
rom[i] = 'V';
i++;
}
if(dec == 4){
rom[i] = 'I';
i++;
rom[i] = 'V';
i++;
}
else{
while(dec > 0){
dec -= 1;
rom[i] = 'I';
i++;
}
}
}
rom[i]='\0';
printf(" %s", rom);
}
}
int egesze(char s[]){
int i=0, kezd;
while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')++i;
if(s[i]=='+' || s[i]=='-')++i;
kezd=i;
while(s[i]>='0' && s[i]<='9')++i;
if(i==kezd || s[i]!=' ' && s[i]!='\t' && s[i]!='\n' && s [i]!=0) return 0;
else return 1;
}
int atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
} -
Bettina87
csendes tag
Ne is mondd. Eddig még azokét is visszadobta, akiknek infósok csinálták meg. Szóval túl sok embernek nincs meg.
Nagyon szépen köszönöm az újabb verziót, remélem ez már jó lesz neki, már ki vagyok akadva rá teljesen.
-
Bettina87
csendes tag
nah, erre meg ezt írta vissza.
Kedves Kollegina!
Nagyon köszönöm a részletes leírást a perror függvényről. Csak zárójelben jegyzem meg, hogy az atoi() függvény sohasem ad hibát, de ez semmit nem von le a perror-ról szóló leírásából.
Az elküldött program azonban még mindig nem KR C-ben van. A feladatok kiírásában feltételként szerepel, hogy sem ANSI C, sem C++ kódot nem fogadok el. A KR C-ben a függvények deklarálásakor csak az értékkészlet deklarációja szerepel. Hogy hány változós a függvény és hogy milyen típusúak az egyes változók, az nem.
Az
int main(int argc, char*argv[])
{
...
}
függvény definíció például ANSI C, de a C++ ugyanezt a szintaxist használja.
Az
int egesze(s)
char *s;
{
...
}
alakú függvény definíció pedig KR C kód. Ezek a fogalmak a gyakorlatokon szerepeltek. Kérem, kűldje el programja KR C változatát, amelyben javítsa ki azokat a program ágakat, ahol hibát detektál, és hibaüzenetet ad. Feltételezem, hogy szándéka szerint a hibaüzenet kiírása után nem akarja, hogy a program tovább fusson.Szóval mostmár totál kivagyok miatta, kértem hogy írja meg ez így mennyit ér, de arra persze nem válaszolt.
nem tudom miért van belesve annyira a KR C-be, majdnem ugyanaz -
mm00
aktív tag
válasz Bettina87 #391 üzenetére
Talán ez:
#include <stdio.h>
int main(argc, argv)
int argc;
char *argv[];
{
int i = 0, x=0;
int dec;
char rom[50];
if(argc == 1){
fprintf(stderr, "Hianyzik a parameter!");
exit( 1 );
}
for(x=1;x<argc;x++){
if(egesze(argv[x])){
dec = atoi(argv[x]);
}else{
fprintf(stderr, "A parameterlistaban nem megfelelo az egyik ertek!");
exit( 1 );
}
while(dec>=1000){
dec -= 1000;
rom[i] = 'M';
i++;
}
if (dec>=900){
dec-=900;
rom[i] = 'C';
i++;
rom[i] = 'M';
i++;
}
if(dec>=500){
dec -= 500;
rom[i] = 'D';
i++;
}
if (dec>=400){
dec -= 400;
rom[i] = 'C';
i++;
rom[i] = 'D';
i++;
}
while(dec>=100){
dec = dec-100;
rom[i] = 'C';
i++;
}
if(dec>=90){
dec -= 90;
rom[i] = 'X';
i++;
rom[i] = 'C';
i++;
}
if(dec>=50){
dec -= 50;
rom[i] = 'L';
i++;
}
if(dec>=40){
dec -= 40;
rom[i] = 'X';
i++;
rom[i] = 'L';
i++;
}
while(dec>=10){
dec -= 10;
rom[i] ='X';
i++;
}
if(dec == 9){
rom[i] = 'I';
i++;
rom[i] = 'X';
i++;
}
else{
if(dec >= 5){
dec -= 5;
rom[i] = 'V';
i++;
}
if(dec == 4){
rom[i] = 'I';
i++;
rom[i] = 'V';
i++;
}
else{
while(dec > 0){
dec -= 1;
rom[i] = 'I';
i++;
}
}
}
rom[i]='\0';
printf(" %s", rom);
}
exit(0);
}
int egesze(s)
char *s[];
{
int i=0, kezd;
while (s[i]==' ' || s[i]=='\n' || s[i]=='\t')++i;
if(s[i]=='+' || s[i]=='-')++i;
kezd=i;
while(s[i]>='0' && s[i]<='9')++i;
if(i==kezd || s[i]!=' ' && s[i]!='\t' && s[i]!='\n' && s [i]!=0) return 0;
else return 1;
}
int atoi(s)
char s[];
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
} -
Benmartin
senior tag
válasz Bettina87 #391 üzenetére
A KR C-ben a függvények deklarálásakor csak az értékkészlet deklarációja szerepel. Hogy hány változós a függvény és hogy milyen típusúak az egyes változók, az nem.
Szerintem ez így nem igaz, vagy nekem nem egyértelmű.
The C programming Language
By Brian W. Kernighan and Dennis M. Ritchie.
Chapter 4 - Functions and Program Structure:"Each function definition has the form
return-type function-name(argument declarations)
{
declarations and statements
}" -
Bettina87
csendes tag
Ne értsd félre az info-s dolgot, nem rosszindulatból mondtam. Csak azokét dobja vissza, akik már fél lábbal kinnt vannak az egyetemről, és ők már mélyebb programozási ismeretekkel rendelkeznek. Nem értem, hogy miért kell ennyire belemélyedni ebbe a verzióba, mikor valószínű nem is ezt fogjuk venni a továbbiakban.
Kissé furi az egész rendszer minálunk.Az a bajom, hogy megcsinálja másnak is egy olyan ember, aki igazán ért hozzá, de a tanárnak nem felel meg. Nem tudom mit vár tőlünk.
-
sghc_toma
senior tag
válasz Bettina87 #396 üzenetére
azt várja, hogy az eredeti (értsd: első kiadású) KR könyvben leírtak alapján írjátok meg a házit.. a bekopizott válaszlevele alapján KR-féle kódokat írtatok órán is.. gyakorlatilag visszakéri, amit tanultatok..
félreértés ne essék: nem értem miért kell egyáltalán tanítani a KR C-t.. nekem kellett Fortran-t tanulnom, utáltam, és tudtam, hogy gyakorlatilag semmi hasznát nem veszem majd.. ennek ellenére az órai anyag alapján mindig megírtam a házit..
nem hinném, hogy embertelen feladat lenne egy problémát KR C-ben megírni, csak ehhez ugye ismerni kéne a nyelvet.. márpedig azt Nektek megtanították, vagy mi...in asm we trust
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!