- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
- Nvidia GPU-k jövője - amit tudni vélünk
- Teljesen az AI-ra fókuszál az új AMD Instinct sorozat
- A Microsoft átépítette a ROG Ally-t
- VR topik
- Apple MacBook
- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- NVIDIA GeForce RTX 3060 Ti / 3070 / 3070 Ti (GA104)
- TCL LCD és LED TV-k
- Milyen belső merevlemezt vegyek?
- OLED TV topic
Új hozzászólás Aktív témák
-
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... -
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.
-
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
}" -
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;
} -
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 -
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.
-
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;
} -
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
-
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
-
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
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. -
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.
-
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
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
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;
} -
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();
} -
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. :-( -
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.
-
Gergello
addikt
Köszi a gyors válaszokat!
Esetemben az fgets kellet volna használni -
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. -
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ó. -
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. -
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
-
Benmartin
senior tag
-
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 -
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
-
odonye
csendes tag
http://www.eet.bme.hu/publications/e_books/progr/cpp/node2.html <-- Google-ban nem volt nehéz ezt megtalálni.
-
Lortech
addikt
válasz
Wizardmon #349 üzenetére
Nyiss egy cmd ablakot (parancssor), és ott futtasd le a kapott exe fájlt, és látni fogod a programod kimenetét, ha volt neki.
Ennek kell történnie, amit leírtál, mivel a program befejeződik felhasználói interakció nélkül, és a parancssor bezáródik, ezért nem látod az eredményt. -
Wizardmon
csendes tag
Heló!
Most kezdtem C-ben programozni. Pontosabban ma délután.
Van nekem egy borland c++ 2.05 fordítóm. Elmondaná valaki, hogyan kell azt használni? agy valami linket adjon please ahol leírják.
Olyasmi programmal kezdtem, hogy:
#include<stdio.h>
main()
{
printf("Elsö C programom \n");
}
Ilyenkor elvileg meg kell hogy jelenjen a: Első C programom - szöveg.
De már az sem biztos hogy sikerült normálisan lefordítanom. Rámegyek hogy save. Akkor csinál nekem egy jegyzettömb formájú fájlt, aztán mondom neki hogy RUN. Akkor kiír 3-4 sor szöveget, és rak a jegyzetemhez egy .exe fájlt meg egy csomó mást is. Ha rákattintok az exe-re, kijön egy dosos ablak, de mire észreenném, hogy van-e rajt valami, be is záródik. Enek kell történnie? Ezt kell csinálnom fordításkor?
Légyszi valaki segítsen. -
dany27
őstag
sziasztok!
Én most szeretném elkezdeni a C-t tanulgatni de nem tudom melyiket lenne érdemes elkezdeni. Mivel nem tudom hogy mi a különbség a sima C a C++ és C# között!
Előre is köszönöm a válaszaitokat! -
Noobi
tag
Sziasztok! Tudna nekem segíteni valaki abban a problémában, hogy a devCpp-omban a sima c project nem fordul le? Csak a c++-os fut le hiba nélkül....
A kiírt hiba: "C:\Prog\Dev-Cpp\Project\Makefile.win [Build Error] [main.o] Error 1 "
Vistám van, bár nem gondolom hogy az lenne a baja, mert a legelején simán lefordult... azóta hiába telepítettem újra mindent, nem segít.....
Előre is köszönöm! -
Vico87
tag
Igen, meg lehet oldani. Nyilván vannak könnyebben és nehezebben kivitelezhetõ megoldások.
Könnyű megoldások pl :
- megoldóképlet alkalmazása (negyedfokú polinomig alkalmazható, de a negyedfokú megoldóképletét tutira rosszul írod majd le, mert embertelen hosszú)
- iteratív módszer alkalmazása (lásd : Newton módszer, Lagrange módszer)
Az egyenletmegoldáshoz ajánlott "numerikus módszerek" témakörbõl ismeretek.Igazából minél többet tudsz matekból annál jobb megoldást tudsz erre írni.
-
odonye
csendes tag
Üdv! Egyenletet meg lehet oldatni progival? Pl egy olyan, hogy 24=262.2-x/500-x*100?
-
rOwLeY
őstag
Köszönet mindenkinek a segédkezésért!
-
maszat
senior tag
Felhasználva a forrásodat elkészítettem egy másik verziót:
char *feladat(char *str){
char *uj=(char*)malloc(sizeof(char)*(strlen(str)*1.2));
int i=0;
int ujszohossz=0;
int egyesek=0;
for(i=0; i<strlen(str); i++){
uj[i+ujszohossz]=str[i];
if(str[i]=='1'){
egyesek++;
if(egyesek == 5){
egyesek = 0;
ujszohossz++;
uj[i+ujszohossz]='0';
}
} else {
egyesek=0;
}
}
return uj;
}Működése:
Létrehozza a célszónak megfelelő karaktertömböt. Külön megvizsgálva lehetett volna pontosan akkorát létrehozni, mint amekkora kell, de hirtelen ez is jó, elvégre max 20%-al lesz hoszabb a szó.
Betűnként olvassa a szót, és számolja az egymásutáni 1-eseket. Ha megvan az 5, akkor hozzácsapja a 0-t, ha nincs, akkor nullázza a számlálót.
uj[i+ujszohossz]=str[i]; az ujszohossz változó az eltolás kezelésére szolgál, mikor a 0-t beszúrjuk.
Így hirtelen kipróbálva működött, de a hibátlan működésért nem vállalok garanciát. -
odonye
csendes tag
D@ni88, igen. Et hívják több dimenziós tömbnek. De ha úgy gondolod, hogy 25db 2 karaktert tároló ,,szöveget" akarsz létrehozni, akkor azt fordítva kell megtenni (ha jól tudom, javítsatok ki ha tévedek): char a[25][2].
-
szilu84
tag
char *feladat(char *str){
char *uj=(char*)malloc(sizeof(char)*500);
char tmp[2];
tmp[1]='\0';
int i;
uj[0]='\0';
for (i=0;i<strlen(str);){
if (str[i]=='1' && str[i+1]=='1' && str[i+2]=='1' &&
str[i+3]=='1' && str[i+4]=='1'){
strcat(uj,"111110");
i+=5;
}
else{
tmp[0]=str[i++];
strcat(uj,tmp);
}
}
return uj;
} -
D@ni88
addikt
vagy egyáltalán hogy lehet létrehozni olyan char tömböt? amiben 25db 2hosszúságű "szöveg" tárolható?
char a[2][25]? -
D@ni88
addikt
válasz
kicsitomi88 #324 üzenetére
a bekérést meg az iyleneket értem. megcsináltam már turbóba
hát jólvan de ez int típusú... most át kell h írjam a tömböt char-ra? és kézi feltöltéssel kell megoldani, azt meg nem szeretném.
képernyő törlést egyépként mivel lehetmegoldani? -
D@ni88
addikt
Na a "project" egy 5x5ös ötödölő játék lenne...
addig eljutottam hogy kiírassam meg hasonlók.
De valaki tudna egy megoldást arra, hogy ha 'X'-et és 'O'-t akarok beírni azt miként hogy csináljam?#include <stdio.h>
void main()
{
int a[25];
int i, j, x;
x=1;
for (i=0; i<25; i++)
{
a[i]=x++;
}
for (i=0; i<25; i++)
{
if ((i==5) || (i==10) || (i==15) || (i==20) || (i==25)) printf("\n\n");
if (a[i]<10) printf(" %d", a[i]);
else printf("%d", a[i]);
printf(" ");
}
} -
rOwLeY
őstag
Hali!
A segítségeteket kérném!Az alábbi programról lenne szó:Írjon és deklaráljon C föggvényt, amely egy nulla végú stringben, amely 1-es és 0 karaktereket tartalmaz, minden egymást követő ötödik egyes után beír egy 0-ár!Az eredmény számára a függvény foglal helyet.
pl: 11110111011111110011 --> 111101110111110110011 -
odonye
csendes tag
Próbáltam randommal is, de teljessen felesleges volt, mivel a randomize();-val volt gondja.
-
odonye
csendes tag
ÜDv, ha a randomize(); helyére ezt írom: srand(time(NULL));, akkor működik. Ez most pontossan mi is? Egy fórumon találtam, hgoy ezzel működik, csak miért, és mi ez?
-
odonye
csendes tag
c.c
.text+0x4f): undefined reference to `randomize'
Azt nem tudtam, hogy az elejen kell. -
odonye
csendes tag
Mikor véletlenszerű számot szeretnék kapni, miért kapom mindig gyanazt a programot akárhányszor lefutatom? Ha meghívom a randmize() függványt akkor hibaüzenetet kapok. Ilyet ovlastam:
#include <stdlib.h>
randomize();
x=rnd() % nDe ez csak randomize(); nélkül működik. Miért lehet ez?
-
doc
nagyúr
válasz
kicsitomi88 #310 üzenetére
én annak idején szerettem a Pascalt, de mikor sikerült "összejönnöm" a C-vel, onnantól rá sem néztem
az előnye hogy könnyen tanulható, de ez egy idő után már erős hátrány lesz. pl. a C konzekvens felépítéséhez képest a Pascal egy össze-vissza hányt szutyok.
az a baj, hogy az oktatás irtózatosan lassan idomul az aktualitásokhoz, a számítástechnika gyors fejlődésével meg képtelen lépést tartani. a felsőoktatásban még csak-csak, de pl. egy középiskola reménytelen. az a tanár, aki anno 30 éve megtanulta a pascalt, még 10-20 évig tanítani is fogja. ahelyett hogy a modernebb szemléletű nyelveket tanítanák (akár delphit, ha már könnyen tanulható nyelv kell)
ok hogy alapozni is kell, de nem mindegy hogyan -
Vico87
tag
Kezdõknek könnyebb, mint C-t tanulni egybõl. Én legelõször Pascalban programoztam, aztán tanultam csak meg C-ül. Manapság az a hátránya, hogy nem igazán használják, míg a C-t igen. Szerintem egyszerűbb kezdõknek azt leírni és megérteni, hogy "szoveg : string;", majd csak használni, mint "char* szoveg stb..." vagy "char szoveg[x]" és mindig &szoveg-ként használni a függvényekben.
-
odonye
csendes tag
AMúgy a Pasclanak van értelme? Én nem sokat látok.
-
D@ni88
addikt
leesett persze, csak nekem úgy mondták h azzal lehet tömböt létrehozni. furcsélottam h racionális, és tömb is, de hát azthittem h ez csak ilyen egyedi hülyeség
de amit írtál erről az átalakításról, hát izé, nem nagyon értem
amúgy meg 5x5ös 5ödölő lesz belőle. ezt csináltam meg 2 éve középsuli 3.ba prog évvégi ként pascalban, és önszorgalomból megcsináltam snake-et iscsak úgy önszórakoztatás képpen
jólvan elhiszem kicsit furcsa volt :p de kivehető
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Motoros topic
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- BestBuy topik
- Nvidia GPU-k jövője - amit tudni vélünk
- Xbox Series X|S
- SörcsaPH!
- gban: Ingyen kellene, de tegnapra
- Teljesen az AI-ra fókuszál az új AMD Instinct sorozat
- A Microsoft átépítette a ROG Ally-t
- VR topik
- További aktív témák...
- új, bontatlan, iPhone 16E gyárilag kártya-független, apple világgaranciával
- Üzletből, garanciával, Macbook Pro Retina 16" 2019, Gray i9 64GB RAM 1TB SSD Radeon Pro 5500M
- Üzletből, garanciával, Macbook Pro Retina 16" 2019, Gray i9 64GB RAM 2TB SSD Radeon Pro 5600M 8GB
- MacBook Pro 14" M1 MAX - 32GB / 1TB (2021) - 1 év garancia
- MSI RTX 4070 SUPER 12GB GAMING X SLIM WHITE - 20 hónap garancia
- Microsoft Surface Pro 7 - Újszerű, dobozban, gyári töltővel, billentyűzettel
- Lenovo ThinkCentre M910q Mini PC / i7 7gen/8GB RAM/240GB M2 SSD/12 hónap jótállással
- ÁRGARANCIA!Épített KomPhone i3 10105F 16/32/64GB RAM RX 6600 8GB GAMER PC termékbeszámítással
- Game Pass Ultimate előfizetés azonnal, élettartam garanciával, problémamentesen! Immáron 8 éve!
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest