Új hozzászólás Aktív témák
-
Dirty_Pio
csendes tag
Itt megint problemam van :
#include <stdio.h>
#include <stdlib.h>
#define MAXST 20
#define MAXNL 50
struct student {
char *name;
float mark;
} ;
int getname(char *p)
{
int i=0;
char *q,c;
q=p;
while ( (c=getchar()!='\n') && i<MAXNL)
{
q[i]=c;
i++;
}
q[i]='\0';
return (i);
}
read_student ( struct student a, int n)
{
char *p;
int i,e;
p=malloc(sizeof(char)*MAXST);
for (i=0;i<n;i++)
{
pritnf("\n the %i th student is:");
e=getname(p);
a[i].name=malloc(e*sizeof(char));
a[i].name=*p;
printf("\n mark for %s :",a[i].name);
scanf("%i",&a[i].mark);
}
free(p);
}
pritnstudnets(struct student a, int n)
{
int i;
stdnt *p;
p=a;
for (i=0;i<n;i++)
printf("%s\n",a[i].*name);
}
int main(void){
struct student a[MAXST];
int nstdnt;
printf("students nr is:");
scanf("%i",&nstdnt);
read_student(a,nstdnt);
printstudenst(a,nstdnt);
return(0);
}NEm tudom hogy hogyan vonatkozzak egy sturkturaban levo pointerre
-
Dirty_Pio
csendes tag
Na... kozbe rajottem egy-ket nagyobb hibamra, szoval igy nez ki a javitott kod:
#include <stdio.h>
#include <stdlib.h>
#define MAXST 20
#define MAXNL 50
struct student {
char *name;
float mark;
} ;
int getname(char *p)
{
int i=0;
char *q,c;
q=p;
while ( (c=getchar()!='\n') && i<MAXNL)
{
q[i]=c;
i++;
}
q[i]='\0';
return (i);
}
read_student ( struct student a[], int n)
{
char *p;
int i,e;
p=malloc(sizeof(char)*MAXST);
for (i=0;i<n;i++)
{
pritnf("\n the %i th student is:");
e=getname(p);
a[i].name=malloc(e*sizeof(char));
strcpy(a[i].name,p);
printf("\n mark for %s :",a[i].name);
scanf("%i",&a[i].mark);
}
free(p);
}
pritnstudnets(struct student a[], int n)
{
int i;
struct student *p;
p=a;
for (i=0;i<n;i++)
printf("%s\n",a[i].name);
}
int main(void){
struct student a[MAXST];
int nstdnt;
printf("students nr is:");
scanf("%i",&nstdnt);
read_student(a,nstdnt);
printstudenst(a,nstdnt);
return(0);
}A forditas elindul, de a lineker problemat talal a pritntf -ben a readstudent fuggvenyen belul, szovla mi a tehendom ?
-
Dirty_Pio
csendes tag
válasz gygabor88 #803 üzenetére
Annak a printfnek semmi baja... amugy az ANSIC ben lehet hasznalni %i -t az integerek kiirasara, nem szukseges feltetlenul a %d (decimal) placeholder hasznalata. A masik printf -fel van baj: azzal amelyikben az a[i].name szerepel, es nem tudom hogy miert :az error igy hangzik: undefined reference to printf es a masodik a printstudentben is ugyanez az error jelentkezik. Es axitcode 1 el kilep a fordito.
-
gygabor88
tag
válasz Dirty_Pio #804 üzenetére
Most pici jobban ránéztem a kódra. A fordító azért is szólni fog, amit fentebb írtam. Nem az a lényeg, hogy %i vagy %d, hanem, hogy kell a printf-nek következő paraméter is. Az is probléma viszont, hogy pár dolgot elírtál, pl printf helyett pritnf -t írtál, printstudents nevű függvényed pedig nincs, szintén elírás miatt, emiatt nem találja ezeket a függvényeket. Strcpy-t sem fogja felismerni, mert nincs betolva a megfelelő header fájl. Így már megeszi a fordító:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXST 20
#define MAXNL 50
struct student {
char *name;
float mark;
} ;
int getname(char *p)
{
int i=0;
char *q,c;
q=p;
while ( (c=getchar()!='\n') && i<MAXNL)
{
q[i]=c;
i++;
}
q[i]='\0';
return (i);
}
void read_student ( struct student a[], int n)
{
char *p;
int i,e;
p=malloc(sizeof(char)*MAXST);
for (i=0;i<n;i++)
{
printf("\n the %d th student is:",i);
e=getname(p);
a[i].name=malloc(e*sizeof(char));
strcpy(a[i].name,p);
printf("\n mark for %s :",a[i].name);
scanf("%f",&a[i].mark);
}
free(p);
}
void printstudents(struct student a[], int n)
{
int i;
struct student *p;
p=a;
for (i=0;i<n;i++)
printf("%s\n",a[i].name);
}
int main(void){
struct student a[MAXST];
int nstdnt;
printf("students nr is:");
scanf("%i",&nstdnt);
read_student(a,nstdnt);
printstudents(a,nstdnt);
return(0);
}[ Szerkesztve ]
-
blaces
tag
Sziasztok!
Most hardcore szinten belefogtam a C tanulásába magamtól (könyv alapján) eldöntöttem, hogy ideje normálisan megtanulni programozni ,persze közben a félévben is tanulni kell az egyetemen
A könyv azt írja, hogy a ?: operátor jobbról balra típusú... egy fél nap alatt a többire rájöttem, hogy miért olyan asszociativitással rendelkezik. A könyv két példát hozz fel erre az operátorra:
x < y ? (min1 = x) : (min1 = y);
min2 = x < y ? x : y;az utóbbinál értem, mert ez olyan mint egy értékadás , de az első verziónál nem látom, hogy mitől lenne ez jobbról balra... nekem balról jobbra félének látszik.
-
nemmegyaC
csendes tag
Haliho mindenkinek!
Nekem lenne 4 (rövidebb...állitolag... ) prog házim. És nem boldogulok vele. C-ben kéne megirni, ömmm...holnapra És futnia kell, csak ugy fogadják el
Tudna nekem ebben segiteni vki okos-lelkes programozo?
A feladatok:
1.,Írjon és deklaráljon C függvényt, amely egy nullavégű sztringben
kicseréli az angol abécé kisbetűit a nekik megfelelő nagybetűkre.
Használjátok a isupper, toupper, islower, tolower függvényeket.int islower(c): TRUE if c is any lowercase char
int isupper(c): TRUE if c is any uppercase char
int tolower(c): convert c to a lowercase
int toupper(c): convert c to uppercase2., Írjon és deklaráljon C függvényt, amely összefűz két, paraméterként
kapott NULL terminált sztringet! Az eredményt ne visszatérési értékként adja
vissza, válasszon más módszert! (Nem használhatjátok a string.h-t.)3., Írjon és deklaráljon C függvényt, amely egy nullavégű sztringben, amely
egyes karaktereket ('1') és nullákat ('0') tartalmaz, minden EGYMÁST KÖVETŐ
ötödik egyes után beír egy nullát ('0')! Az eredmény számára a függvény
foglal helyet. (Ez kicsit hasonlít ez első házi 3., feladatához, de muszáj
gyakorolni, szóval rágjátok át rendesen.)4., Amit az órán lediktáltam: void reverse(char* str,char* rev); A fv. a
rev-t állítja elő a str megfordításával (Pl.: str "Hello" rev "olleH").
Vigyázzatok, hogy a rev nullterminált legyen, és ebben a feladatban hívó
foglal helyet a rev-nek. Írjatok teszt main-t is.Elöre is nagyon köszönöm!
Szép napot mindenkinek
-
cellpeti
veterán
Sziasztok!
Nekem van egy olyan feladatom,hogy írassam ki EOF értékét,de nem teljesen vágom mit és hogyan kéne
Tigris, tigris, csóvafény...
-
cellpeti
veterán
válasz cellpeti #810 üzenetére
Sziasztok!
Az előző feladatot sikerült megcsinálnom Fire segítségével.
Itt lenne egy másik feladat:
Írjunk progit,amely megszámolja a bemenetre adott szövegben lévő szóközöket,tabulátorokat és új sor karaktereket.
Amit megírtam,de nem is bizti,hogy jó,meg lehet valaki tud valami okos tanácsot adni,hogy lehetne kicsit tömörebben. A forráskódot belinkelem,ha lehet ne szapuljatok,mert kezdő vagyok.
#include<stdio.h>
void main(void)
{
int c,tab,ujsor,space;
tab = 0;
ujsor =
space = 0;
while (( c = getchar()) != EOF)
if (c == ' ' || c == '\n' || c=='\t')
++tab;
++ujsor;
++space;
printf("%d\n",space);
printf("%d\n",ujsor);
printf("%d\n",tab);
}[ Szerkesztve ]
Tigris, tigris, csóvafény...
-
Jester01
veterán
válasz cellpeti #811 üzenetére
Egyes számú okos tanács: próbáld ki
Kettes számú okos tanács: mindig használj kapcsos zárójelet ciklusokban és feltételekben
Hármas számú okos tanács: a main úgy illik, hogy int-et adjon visszaHa a kapcsos zárójeleket betesszük úgy, ahogy a fordító értelmezi a te kódod, akkor ez lesz:
while (( c = getchar()) != EOF) {
if (c == ' ' || c == '\n' || c=='\t') {
++tab;
}
}
++ujsor;
++space;Látható, hogy az utolsó két sor nem hogy az if-ben, de még a while-ban sincs benne. Tehát azok mindig 1-et fognak kapni. A tab változó pedig önmagában számolja mind a 3 típust, vagyis azok összege lesz benne. A 3 karaktert külön-külön feltétellel (vagy switch szerkezettel ha már azt ismered) kell ellenőrizni, és persze mindet a cikluson belül.
Jester
-
cellpeti
veterán
1. Írjunk programot,ami a bemenetre adott szöveget,úgy másolja át a kimenetre,hogy közben az egy vagy több szóközből álló karaktersorozatokat egyetlen szóközzel helyettesítse.
2. Írjunk programot,ami a bemenetre adott szöveget úgy másolja át a kimenetre,hogy közben a tabulátorjeleket \t, a visszaléptetéskaraktereket \b és a fordított törtvonalkaraktereket(backslash) \\ karakterrel helyettesíti!
Tigris, tigris, csóvafény...
-
félisten
válasz cellpeti #814 üzenetére
Hali!
A második feladattal kezdeném
kell egy ciklus, ami a string hossza-1-ig fut(ha használhattók string-kezelő függvényeket), ha nem akkor meg a stringet lezáró 0(nulla)-ig
a string[0]-tól megnézed a karaktereket string[strnighossz-1]-ig
ha a string[n] NEM \t, \b karakter akkor simán kiiratod
ha IGEN akkor nem iratod ki, hanem helyette a dupla backslash-t =>printf("\\\\")
C-ben a backslash karaktert "duplázni" kell kiiratáskor(többekközt), erre azért van szükség mert a backslash vezeti be a vezérlőkaraktereket is \t,\n,\b stbAz első példa
kell egy ciklus, ami a string hossza-1-ig fut(ha használhattók string-kezelő függvényeket), ha nem akkor meg a stringet lezáró 0(nulla)-ig
kell egy "szőközjelző" integer pl _IS_SPACE, ezt a progi elején nullázd
a string[0]-tól megnézed a karaktereket string[strnighossz-1]-ig
ha a string[n] NEM SZÓKÖZ KARAKTER, akkor kiiratod és az _IS_SPACE-t ALACSONYRA(0) állítod
ha a string[n] SZÓKÖZ KARAKTER, akkor megvizsgálod, hogy az _IS_SPACE alacsony(0) vagy magas(1)
ha az _IS_SPACE ALACSONY(előtte nem szóköz volt) akkor kiirod a szóközt, és MAGASRA(1) állitod az _IS_SPACE-t
ha _IS_SPACE MAGAS(elötte szóköz volt) akkor nem iratsz ki semmitLeírva bonyolultabb mint a kész progi...
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
cellpeti
veterán
válasz Fire/SOUL/CD #815 üzenetére
"kell egy ciklus, ami a string hossza-1-ig fut(ha használhattók string-kezelő függvényeket), ha nem akkor meg a stringet lezáró 0(nulla)-ig
a string[0]-tól megnézed a karaktereket string[strnighossz-1]-ig..."Nem értem,hogy ez milyen ciklus is lenne? Talán while?
Mi az a hisztogram?
Tigris, tigris, csóvafény...
-
félisten
válasz cellpeti #817 üzenetére
Hali!
Semmi komolyra ne gondolj, "bármely" ciklus utasítást használhatod, mondjuk nagy variáció nincs, mert van a FOR, a WHILE, meg a DO-WHILE. A bármely szót azért tettem idézőjelbe, mert míg a FOR és WHILE előtesztelős ciklus utasítások(azaz a ciklusfeltétel kiértékelése a ciklusmag futattása elött történik), addig a DO-WHILE utótesztelős(ebben az esetben a ciklusmagban lévő programkód egyszer mindenképp lefut, és csak azután kerül kiértékelésre a ciklusfeltétel) ezért ezt körültekintően kell alkalmazni.
A hisztogramokat meg nagy általánosságban úgy lehetne meghatározni, hogy különbözö adatok, folyamatok, információk stb vizuális megjelenítése...
Egy oszlop diagram is hisztogram. De egy program működéséről is lehet hisztogramot készíteni, csak ott úgy nevezik hogy folyamatábra...
És persze számtalan különféle hisztogram létezik, amit felsorolni sem lehet, de Te is nap mint nap találkozol rengeteggel....Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Devdi
aktív tag
Sziasztok írtam a programozás fórumba is, de eleht hogy itt jobb helye van. Van ez a programom aminek annyi a lényege hogy kiírja a begépelt karakterek számát.
#include<stdio.h>
main()
{
double nc;
for(nc=0;getchar()!=EOF;++nc)
;
printf("%.0f\n",nc);
}
ezután gépelek gépelek és az a baj hogy nem tudom leállítani szóval nem tudom elérni azt hogy kiírja mennyi karaktert gépeltem be. Netbeanst használok ha ez segít. Valaki tudja a megoldást? -
djdemi
csendes tag
sziasztok!
Kaptam egy beadandó feladatot, nem is tudom hogy kezdjek neki...ha valaki tudna segíteni megköszönném! Egy grafika feladtaról lenne szó...Íme:
Rajzolja meg és számolja ki egy m tömegű anyagi pont v0 kezdősebességű, φ0
emelkedési szögű ferde hajítás során befutott röppályát!ha valaki tud segíteni ezzel kapcsolatban, írjon
Előre is köszi
hali! -
cellpeti
veterán
Ez a feladat engem is érdekelne...
Hát mindenképp kellenek hozzá a matematika dolgok,ezért a header-eket úgy kell felvenni,ami a math.h-ba van benne,ha jól tudom. Valszeg kell majd valami,ahhoz is,hogy ki tud rajzolni a képernyőre ezt a görbét.Bennem ne bízz,kezdő vagyok.
Fel kell venni m-et,v0-t és az emelkedési szöget,mivel a szög lehet tizedes,ezért a lebegőpontosan(float) kell felveni a változókat.
Ehhez persze nem árt ismerni,hogy alapba,hogyan lehet kiszámolni és tudni a képletet. Persze azt is megteheted/jük,hogy a képletet egy fv-be beírod és a főprogramba csak meghívod.
Ennyit tudok én segíteni. Ha baromságot írtam,akkor valaki javítson ki kérem!
Jó éjszakát mindenkinek!
[ Szerkesztve ]
Tigris, tigris, csóvafény...
-
cellpeti
veterán
Ezt lehet megint én értelemezem félre,hogy itt valamely mennyiséggel kell számolni,vagy csak a "sima" képeletet kell behelyettesíteni?
Mert én megtaláltam, a Ferde hajítás képleteit,a függvénytáblába,de ez nagyon nem egyszerű...és még finom voltam
Itt van egy feladat ferde hajításról,de ez Delphi-be van
A ferde hajítás képlete
Ferde hajításnál az ideális szög,ugye 45°[ Szerkesztve ]
Tigris, tigris, csóvafény...
-
félisten
Hali!
Megoldható, nem olyan bonyolult aminek tűnik.
Engem viszont először az érdekelne, hogy milyen C környezetben dolgozol???
(mi a program neve, amivel dolgozol, a grafikus megjelenítés szempontjából nem mindegy)CellPeti
Amit adtál linkeket, azt ne használd, mert az egyik az egy "herélt" egyenletet tartalmaz, a másik meg(delphi), az meg hibás kódot...Fire.
UI: mondjuk azt nem értem, hogy a tömeget minek adták meg... , nincs rá szükség a parabola kirajzolásához
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
cellpeti
veterán
válasz Fire/SOUL/CD #825 üzenetére
Milyen progival kéne neki állni Fire?
Az egyenletet be kell írni mindenképp vagy nem?Tigris, tigris, csóvafény...
-
djdemi
csendes tag
A ferdehajításos programot BorlandC környezetben kellene megcsinálni...
Sziasztok -
djdemi
csendes tag
sikerült a programot megírni, ha valakit érdekel...
#include <graphics.h>
#include <conio.h>
#include <math.h>double pi =3.141592654;
double G =9.81;
int graph_open(void);
void main(void){
double v0,v0x,v0y; // *** a hajítás paraméterei
double alfa;
double y0;
double tt,tb,bx,by,tx,ty;
clrscr();
printf("Tesztadatok (100 [m/s],30 [fok], 20 [m]");
printf("\nKérem a kezdősebesség nagyságát! [m/s] >");
scanf("%lf",&v0);
printf("\nKérem a hajítás szögét! [fok] >");
scanf("%lf",&alfa);
printf("\nKérem a pont kezdőmagasságát! [m] >");
scanf("%lf",&y0);printf("\n\nPress any key to continue:");
getch();v0x=v0*cos(alfa*pi/180);
v0y=v0*sin(alfa*pi/180);// A becsapodás adatai: idő, koordináták
tb=(v0y + sqrt( v0y*v0y + 2 * G * y0 ) ) /G;
bx=v0x*tb;
by=0;// A tetopont elérésének adatai: idő, koordináták
tt=v0y/G;
tx=v0x*tt;
ty=(-G/2 * tt*tt + v0y * tt + y0);
printf("\n\nA becsapódás adatai:\n");
printf(" Ideje [tb] :%lf s\n",tb);
printf(" Távolsága [bx] :%lf m\n",bx);
printf("\n\nA tetőpont elérésének adatai:\n");
printf(" Ideje [tt] :%lf s\n",tt);
printf(" Koordinátái [tx,ty]%.4lf, %.4lf) m\n",tx,ty);printf("\n\nPress any key to continue:");
getch();
if ( !(graph_open()) ) {
int i,j;
double t,lp;if (bx/getmaxx()>ty/getmaxy())
lp=bx/getmaxx();
else
lp=ty/getmaxy();// Az idő paramétereként fejezzük ki az x(t) és y(t) koordinátákat:
for (t=0;t<=tb;t+=tb/getmaxx()) {// Pályaadatok:
i=floor(v0x*t/lp);
j=floor((-G/2*t*t+v0y*t+y0)/lp);// Pályagörbe
putpixel(i,getmaxy()-j,YELLOW);delay(20);
}getch();
closegraph();
} else {
printf("BGI ERROR! >%i \n");
printf("\n\nPress any key to continue:");
getch();
}
}int graph_open(void) {
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\borlandc\\bgi");
return(graphresult());
} -
celeron
senior tag
Üdv mindenkinek!
OLyan problémám lenne, hogy Fedora 10-em van feltettem rá a Netbeans 6.1-et. C-ben akarok programozni és nem tudom használni az Atl billentyűt . Szal semmi írásjelet nem tudok írni. Valaki segítsen a problémán!! -
félisten
Hali!
Hát nem tudom, honnan szedted ezt a progit, de ha működik akkor gratula!
Ha ezt a progit elfogadják, akkor remek suliba járhatsz....Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
cellpeti
veterán
Sziasztok!
Létezik 64bites fejlesztő környezet C-hez?
Tigris, tigris, csóvafény...
-
blaces
tag
Celeron: Pasz, én nem tudok segíteni ez ügyben, esetleg próbálkozz mással [CodeBlocks] ez Linuxon is elérhető.
Csak nem Debreceni Egyetem?
Cellpeti a fenti linken 64-bites linux változatot találsz a CodeBlocks-ból
[ Szerkesztve ]
-
félisten
-
cellpeti
veterán
válasz Fire/SOUL/CD #834 üzenetére
Mind1 ám,mert a driverek,meg a viruskereső 64bites a notin,oszt az elég,de köszönöm!
Tigris, tigris, csóvafény...
-
Dirty_Pio
csendes tag
Sziasztok, volna egy problemam a kovetkezo feladatban :
#include <stdio.h>
#include <stdlib.h>
enum star_type{ MA,BIN,VAR};
typedef struct s{
char name[51];
enum star_type tp;
union star{
struct mai{
unsigned char type:2;
unsigned char age:2;
char color[11];
}m;
struct bin{
float r1;
float r2;
unsigned char t1:2;
unsigned char t2:2;
}b;
struct var{
float lowlmn;
float highlmn;
float period;
}v;
}u;
}stars;
int main(void){
enum star_type a;
int n,i;
stars *x=malloc(sizeof(stars)*10);
printf("which type of definition would you like to use for the stars?\n");
scanf("%d",&a);
printf("How many stars?(max 10)\n");
scanf("%d",&n);
for (i=0;i<n;i++){
switch (a){
MA:
scanf("%50s",x.name);
x.tp=a;
scanf("%c %c %s",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %c %c",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %f",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
for (i=0;i<n;i++)
switch (x.tp){
MA:
printf("%c %c %s\n",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
printf("%f %f %c %c\n",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
printff("%f %f %f\n",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
system("pause");
return(0);
}nos, azt az errort adja, hogy name is not a struct or union. Probaltam siman csak egy valtozoba beolvasni az elemeket de ugy meg amikor a unionba akarok olvasni akkor szepen elmegy vegtelenbe, szoval nem igazan tudom mihez kezdjek.
-
Dirty_Pio
csendes tag
válasz Dirty_Pio #837 üzenetére
Kozbe reajottem egy-ket hibara szoval az uj kod mar igy nez ki
#include <stdio.h>
#include <stdlib.h>
enum star_type{ MA,BIN,VAR};
typedef struct {
char name[51];
enum star_type tp;
union star{
struct mai{
unsigned char type:2;
unsigned char age:2;
char color[11];
}m;
struct bin{
float r1;
float r2;
unsigned char t1:2;
unsigned char t2:2;
}b;
struct var{
float lowlmn;
float highlmn;
float period;
}v;
}u;
}stars;
int main(void){
enum star_type a;
int n,i;
stars *x=(stars *)malloc(sizeof(stars)*10);
printf("which type of definition would you like to use for the stars?\n");
scanf("%d",&a);
printf("How many stars?(max 10)\n");
scanf("%d",&n);
for (i=0;i<n;i++){
switch (a){
MA:
scanf("%50s",x.name);
x.tp=a;
scanf("%c %c %s",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %c %c",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %f",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
for (i=0;i<n;i++)
switch (x.tp){
MA:
printf("%c %c %s\n",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
printf("%f %f %c %c\n",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
printff("%f %f %f\n",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
system("pause");
return(0);
}de meg mindig nem megy
-
Jester01
veterán
válasz Dirty_Pio #838 üzenetére
1) Nem tudom, hogy az [ i ] indexeket a fórum nyelte-e be, de ha nem akkor hiányzanak
2) ha ragaszkodsz a bitmezőkhöz, az megbonyolítja a beolvasást. Én inkább kidobtam őket
3) a switch-ben kimaradtak a case kulcsszavak.
4) a default után is kell kettőspont, de a default: break konstrukciónak nincs sok értelme, olyan mintha ott sem lenne
5) becsúszott egy bezáratlan kapcsos zárójel
6) a %c formátum nem ugorja át a szóközt (whitespace) ilyenkor explicit kell egy szóköz
7) a scanf-nek pointer kell, hiányzik egy pár & jelEz itt patch, hogy jobban látszódjon a módosítás.
--- t.c.orig 2009-03-11 22:10:54.000000000 +0100
+++ t.c 2009-03-11 22:37:13.000000000 +0100
@@ -7,15 +7,15 @@
enum star_type tp;
union star{
struct mai{
- unsigned char type:2;
- unsigned char age:2;
+ unsigned char type;
+ unsigned char age;
char color[11];
}m;
struct bin{
float r1;
float r2;
- unsigned char t1:2;
- unsigned char t2:2;
+ unsigned char t1;
+ unsigned char t2;
}b;
struct var{
float lowlmn;
@@ -32,37 +32,35 @@
scanf("%d",&a);
printf("How many stars?(max 10)\n");
scanf("%d",&n);
- for (i=0;i<n;i++){
+ for (i=0;i<n;i++)
switch (a){
- MA:
- scanf("%50s",x.name);
- x.tp=a;
- scanf("%c %c %s",x.u.m.type, x.u.m.age, x.u.m.color);
- break;
- BIN:
- scanf("%50s",x.name);
- x.tp=a;
- scanf("%f %f %c %c",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
- break;
- VAR:
- scanf("%50s",x.name);
- x.tp=a;
- scanf("%f %f %f",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
+ case MA:
+ scanf("%50s",x[i].name);
+ x[i].tp=a;
+ scanf(" %c %c %s",&x[i].u.m.type, &x[i].u.m.age, x[i].u.m.color);
+ break;
+ case BIN:
+ scanf("%50s",x[i].name);
+ x[i].tp=a;
+ scanf("%f %f %c %c",&x[i].u.b.r1,&x[i].u.b.r2,&x[i].u.b.t1,&x[i].u.b.t2);
+ break;
+ case VAR:
+ scanf("%50s",x[i].name);
+ x[i].tp=a;
+ scanf("%f %f %f",&x[i].u.v.lowlmn,&x[i].u.v.highlmn,&x[i].u.v.period);
break;
- default break;
};
for (i=0;i<n;i++)
- switch (x.tp){
- MA:
- printf("%c %c %s\n",x.u.m.type, x.u.m.age, x.u.m.color);
+ switch (x[i].tp){
+ case MA:
+ printf("%c %c %s\n",x[i].u.m.type, x[i].u.m.age, x[i].u.m.color);
break;
- BIN:
- printf("%f %f %c %c\n",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
+ case BIN:
+ printf("%f %f %c %c\n",x[i].u.b.r1,x[i].u.b.r2,x[i].u.b.t1,x[i].u.b.t2);
break;
- VAR:
- printff("%f %f %f\n",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
+ case VAR:
+ printf("%f %f %f\n",x[i].u.v.lowlmn,x[i].u.v.highlmn,x[i].u.v.period);
break;
- default break;
};
system("pause");
return(0);Jester
-
Dirty_Pio
csendes tag
válasz Jester01 #839 üzenetére
Koszi. Meg volna egy kerdesem : mivel olvassam be az adatokat, mert a scanf elcseszi nekem eleg rendesen, mivel a buffert szepen betologatja az adatok helyere es nincs igazan semmi 5letem mit hasznaljak helyette, mar azon kivutl johu irok egy fuggvenyt ami szepen beolvassa a getchar() ral a neveket meg a kulonbozo szovegeket. Akkor mukodne ha csak a scanf() -el a szamokat olvasnam be?
-
Davey7
senior tag
Valaki tudna nekem segíteni?
Most kezdtük a C-t tanulni és van pár beadandó és hát még nem igazán értek a programozáshoz...
Itt vannak a feladatok. Az első 3at megoldottam,de a 4.-5.el nem bírok. Igazából az algoritmussal van a gondom,hogy hogyan kéne nekilátni és mit miután csinálni.
Az első 3nál egy kis segítséggel és sok fejtöréssel rájöttem,de ezek nem mennek.[ Szerkesztve ]
-
Jester01
veterán
4) például bevezetsz index, max és lépés változókat. Az index mutatja, hol állsz az abcben, a max, hogy meddig, az irány pedig, hogy éppen merre (le/fel=-1/+1). Csinálsz egy külső ciklust, ami a kívánt kiírandó karakterszámig fut. A cikluson belül kiírod az aktuális karaktert, majd a lépés hozzáadásával mész a következőre. Ellenőrzöd nem ütköztél-e az intervallum alsó vagy felső határába és ha igen, akkor a lépést megfordítod és az aktuális indexet korrigálod. A betűk kiírásához felhasználhatod, hogy az ascii kód éppen az angol abc szerint van sorban, vagy alkalmazhatsz egy konstans stringet amiből kinézed a betűket.
5) ezzel nem tudom mi a probléma, elég szájbarágósan le van írva. Csinálsz egy függvényt, ami ellenőrzi, hogy a szám prím-e. Erre az egyszerű favágó megoldás gondolom teljesen jó lesz, miszerint végignézed osztható-e valamivel. A főprogram pedig a feladatkiírásnak megfelelően jár el.
Jester
-
kokogab
csendes tag
Sziasztok nekem is lenne egy beadandó házim és nem nagyon boldogulok vele.
Ha tudnátok benne segíteni az nagyon jó lenne. KösziEgy gépalkatrész, mint merev test mozgását három, koordinátáival adott pontja mozgásával szemléltetjük. Mutassa be e háromszög adott forgáspont körüli forgásának helyzeteit 15º-os eltérésekkel! A három pont és a forgáspont koordinátáit előzetesen billentyűzetről adjuk meg!
-
MadBlade
tag
Sziasztok !
Nem tudom jó helyen érdeklődöm e , de megpróbálom ...
Az lenne a problémám , hogy szerettem volna készíteni egy toolbar-t a ToolbarStudio nevű programmal , és mikor elkészítette a telepítő csomagot , csinált egy .exe illetve egy .cab filet ... namármost az exe felteszi az alapprogramot (ami maga a szinte üres sablon) , de a tartalmát a .cab file nélkül (amiben az összes változást és alkotóelemet tárolja) nem teszi fel ...
Van valami sejtésetek hogy az önkicsomagoló exe filba (amelybe a license fájl viszont beletette) miért nem ágyazta be vajon a .cab filet illetve annak tartalmát ?Előre is köszönöm a segítő hozzászólásokat !
Üdvözlettel: Mad
Ha azért vagyunk hogy segítsünk másokon , akkor minek vannak mások?! :0 )
-
vassgaby89
csendes tag
nekem csak 1 egyszerű probémám van egyelőre (még csak most kezdtem a C-t)
hogy tudok beolvastatni 2 változót úgy,h köztük szóköz van ? (házifeladat,és beadás után a tesztprogram standard input-t ad,amihez aklakmazkodnia kell a proginak)
mert " scanf("%d %d", &szam1, &szam2); " -re szegmentálási hibát kapok
(tom vmi olyasmi a gond,h a scanf csak whitespace-ig olvas,v mi)előre is köszi
-
vassgaby89
csendes tag
és itt van 1 kis progi prím megállapításáról,mégsem műxik jól :S
#include <stdio.h>
#include <stdlib.h>int main(void) {
int szam,i,osztok;scanf("%d", &szam);
for (i = 1; i <= szam; i +=1)
if (szam % i == 0) (osztok += 1);printf("%d\n", osztok);
if (osztok == 2) printf("%d\n",szam);
else printf("nem prim\n");return EXIT_SUCCESS;
} -
doc
nagyúr
válasz vassgaby89 #849 üzenetére
az osztok inicializatlan, igy az erteke veletlenszeru, vagyis a megoldas:
int szam,i,osztok=0;
amugy a program jo, bar felesleges 1-tol a szamig menni, eleg ha elindulsz hogy 2-tol sqrt(szam)-ig, es ha addig nem talalsz osztot, akkor prim, ha igen, akkor nem az (es abba is lehet hagyni a tovabbi szamolgatast)
[ Szerkesztve ]
Ú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!