Kezdőlap › Fórumok › Programozás › Programozók SEG
- This topic has 5 hozzászólás, 3 résztvevő, and was last updated 21 years, 2 months telt el by
admin.
-
SzerzőBejegyzés
-
2004-03-24-13:31 #1933701
Nem a legelegáncsosabb megoldás de így működni fog.
Sok sikert a továbbiakhoz !
#include
#include
#define NELEM2 4
#define NELEM1 1000typedef double matrix [NELEM1] [NELEM2];
main(void)
{
matrix *memo;
int i=0 , j, ciklus ;
double xkord , ykord ;
char line[255];
FILE *tf;/* Helyfoglal s ellen?rzéssel */
memo = (matrix *) calloc( 1 , sizeof(matrix));if (! memo) {
printf(„aniincs elég memória!n”);
return -1;
}
/* Ez megnyitja az extil.022 -t ezzel nincs is baj*/if (!(tf = fopen(„extfil.022”, „rt”)))
{
fprintf(stderr, „Sikertelen file-nyit si kisérlet!n”);
exit(-1);
}/* még ez is m?ködik látsz?lag*/
fscanf(tf,”%d”, &ciklus);
fgets(line,255,tf); //Beolvas egy sort
fgets(line,255,tf);
fgets(line,255,tf);
fgets(line,255,tf);
printf(„elvileg 500 ha jo: %d n”, ciklus);/* tudom hogy az 5 helyére a ciklust kell írni:csak azt szeretném itt látni hgy a módosítaások*/ /*ellenére marad e az 500 érték ami a …022 els? száma*/
for (i = 0; i < 5 ; i++)
{
/* na szerintem ez nem jó, de mért mert ezt dobja ki:
elvileg 500 ha jo: 500
akkor lássuk: 0 4.990936 0.000000
akkor lássuk: 0 4.990936 0.000000
akkor lássuk: 1 4.990936 0.000000
akkor lássuk: 1 5.990936 1.000000
akkor lássuk: 2 4.990936 0.000000
akkor lássuk: 2 6.990936 2.000000
akkor lássuk: 3 4.990936 0.000000
akkor lássuk: 3 7.990936 3.000000
akkor lássuk: 4 4.990936 0.000000
akkor lássuk: 4 8.990936 4.000000*/
fgets(line,255,tf); //beolvas egy sort
sscanf( line, „%lf %lf n”, &xkord, &ykord); //és feldolgozza
printf(„akkor lássuk: %d %f %f n”,i, xkord, ykord );
(*memo)[1]=xkord+i;
(*memo)[2]=ykord+i;
printf(„akkor lássuk: %d %f %f n”,i, (*memo) [1], (*memo) [2] );
};free(memo);
}
/*és itt jön a feldolgozandó fileb?l egy részlet:
500 999000 847266 5000 1000 2 0
100.00000 1.00000 50.00000 1000.00000 0.0000010000
15000.0000000 5.0000000 0.0020000
6.492520 29.697117 0.000000 1.000000-0.116759E+00-0.606893E-01
59.822802 38.329144 0.000000 1.000000 0.281617E+00 0.136119E+00
74.426151 20.403068 0.000000 1.000000 0.178184E+00-0.119522E+00
82.601481 90.714650 0.000000 1.000000-0.165419E+00-0.109105E+00
74.296556 27.289441 0.000000 1.000000-0.347553E-01 0.764032E-02
77.321544 78.268809 0.000000 1.000000-0.136444E-02 0.201329E-01
84.966457 86.348069 0.000000 1.000000-0.138693E+00-0.795729E-01
18.553603 42.657599 0.000000 1.000000-0.198751E+00-0.257960E-01
84.611419 79.834392 0.000000 1.000000-0.428900E-01-0.117605E+00
0.276001 53.596452 0.000000 1.000000 0.677424E-01-0.562724E-01
91.031509 95.373888 0.000000 1.000000 0.281195E-01-0.171690E-01
80.390276 79.466707 0.000000 1.000000-0.193844E-02-0.259591E-02
7.922157 47.191838 0.000000 1.000000 0.344818E+00 0.885601E-01
92.136507 74.611943 0.000000 1.000000 0.535790E-01 0.161228E+00
4.990352 78.527722 0.000000 1.000000 0.371028E-01 0.469914E-01
60.883236 61.336116 0.000000 1.000000 0.133350E+00-0.988380E-01
72.227092 5.810033 0.000000 1.000000 0.651267E-01 0.762845E-03
58.991140 79.113459 0.000000 1.000000 0.125892E-01 0.161237E-01
50.080953 49.829133 0.000000 1.000000-0.169422E+00-0.117620E+00
89.032714 73.498785 0.000000 1.000000 0.804797E-01 0.285033E-01
39.984458 33.862555 0.000000 1.000000-0.112847E-01 0.210433E-01
53.370011 84.786230 0.000000 1.000000 0.535436E-01-0.458491E-01
28.768346 53.732689 0.000000 1.000000-0.107200E+00-0.116213E+00
38.207981 1.906119 0.000000 1.000000 0.984096E-02-0.593227E-02
26.538034 28.229700 0.000000 1.000000-0.787910E-01 0.179462E-01
70.879998 38.574264 0.000000 1.000000-0.745004E-01 0.146548E-01
70.954079 15.091209 0.000000 1.000000-0.254990E+00-0.196221E+00
20.944098 32.371428 0.000000 1.000000 0.104986E-02-0.106304E+00
75.650232 64.030795 0.000000 1.000000 0.119309E-01-0.183948E+00
50.747003 84.887554 0.000000 1.000000-0.158969E-01 0.719681E-01
44.332224 92.681178 0.000000 1.000000-0.674866E-01-0.119202E+00
*/2004-03-24-13:49 #1933702Nagyon Nagyon köszi
Az enyém miért nem ment?2004-03-24-14:06 #1933703Ha scanf -el double -t olvasol be akkor „%lf” -t kell használnod, mivel a double ^= long float
Olyan formába ahogyan a scanf-el az újsot kezelted az nem működik:((
érdemes ilyen eseteke fgets fg használni ami egy sort olvas be, és utána az adott sort kiértékelni.2004-03-24-15:11 #1933704Követem az ötleted és valóban sokal kellemesebb a dolog nem olyan érthetelen hogy miért nem megy pedig elvileg logikus
Már így nagyon könnyű a dolgom. (mivel működik) 😉2004-05-04-12:05 #1933705Bocs, srácok, tudom ez nem szép… Egy haverom kért meg rá nézzem meg, mit tudnék csinálni vele. Kapott egy feladatot, de nekem nincs idõm foglalkozni vele…. )-:
Tud valaki valamit mondani rá, hogy mit csináljon? Valakinek nincs kész hasonló véletlenül?1. Készítsen egy számológépet a következõk szerint:
– A számológép megjelenítése a következõ lehet:
┌─────────────────┐
│ ┌─────────────┐ │
│ │E 146.11│ │
│ └─────────────┘ │
│ ┌─┐ ┌─┐ ┌─┐ │
│ │Q│ │%│ │C│ │
│ └─┘ └─┘ └─┘ │
│ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
│ │7│ │8│ │9│ │/│ │
│ └─┘ └─┘ └─┘ └─┘ │
│ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
│ │4│ │5│ │6│ │*│ │
│ └─┘ └─┘ └─┘ └─┘ │
│ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
│ │1│ │2│ │3│ │-│ │
│ └─┘ └─┘ └─┘ └─┘ │
│ ┌─┐ ┌─┐ ┌─┐ ┌─┐ │
│ │0│ │.│ │=│ │+│ │
│ └─┘ └─┘ └─┘ └─┘ │
└─────────────────┘
– Kilépés– Az utoljára leütött billentyû piros keretben legyen.
– A Q billentyû a gyökvonást jelenti (sqrt).
– A C betû lenyomása esetén a kijelzõ tartalmát törölni kell.
– Az E a kijelzõn a túlcsordulást jelenti
– A kilépés az ESC billetyûre történjen[2. Plusszt jelent, ha megvalósítja a következõket is:
– A nyilakkal lehet a billentyûzeten mozogni és az ENTER hatására „nyomjuk le” a gombot.
– További számológépeken meglevõ funkciók (memóriakezelés, szögfüggvények,…)
]Kicsit ronda lett a gép, de nem is az lenne a lényeg, hanem a kijelzõ kezelése, meg a cancel…. Kicsit bunkóság így kidobni egy feladatot, de nincs rá idõm otthon melóhelyen, meg nincs is fordító, meg fura lenne C-zni úgy, hogy ilyennel nem foglalkozunk….
Köszike…
2009-12-04-19:55 #1873197Ez a diplomamunkám egyikk fontos kis része aé semmi pénzért sem megy.
Itt egy nagyon egyszerû program!
Mit rontok el fontos volna a segítség!A program után ott lesz a benne lévõ filebõl egy rövid részlet a file több mint 20 Mb
A progi egy molekuláris dinamika szimolátor lesz a felafûdata eddig annyi hogy az extiel.022 álományból beolvassa az elsõ számot majd 4 sorral lentebb 500 sor elsõ 2 számát azzal számolgat utána egy üres sor megint 500 be a memóba az eddigiek hejére számlgat ……… (A fizikához értek csak sajnos az egészbõl, most tanulok csak programozni)
Az említett program jól megkommendezve:
#include
#include
#define NELEM2 4
#define NELEM1 1000typedef double matrix [NELEM1] [NELEM2];
main(void)
{
matrix *memo;
int i=0 , j, ciklus ;
double xkord , ykord ;
FILE *tf;/* Helyfoglal s ellenõrzéssel */
memo = (matrix *) calloc( 1 , sizeof(matrix));if (! memo) {
printf(„aniincs elég memória!n”);
return -1;
}
/* Ez megnyitja az extil.022 -t ezzel nincs is baj*/if (!(tf = fopen(„extfil.022”, „rt”)))
{
fprintf(stderr, „Sikertelen file-nyit si kisérlet!n”);
exit(-1);
}/* még ez is mûködik látszõlag*/
fscanf(tf,”%dnnnn”, &ciklus);
printf(„elvileg 500 ha jo: %d n”, ciklus);/* tudom hogy az 5 helyére a ciklust kell írni:csak azt szeretném itt látni hgy a módosítaások*/ /*ellenére marad e az 500 érték ami a …022 elsõ száma*/
for (i = 0; i < 5 ; i++)
{
/* na szerintem ez nem jó, de mért mert ezt dobja ki:
elvileg 500 ha jo: 500
akkor lássuk: 0 4.990936 0.000000
akkor lássuk: 0 4.990936 0.000000
akkor lássuk: 1 4.990936 0.000000
akkor lássuk: 1 5.990936 1.000000
akkor lássuk: 2 4.990936 0.000000
akkor lássuk: 2 6.990936 2.000000
akkor lássuk: 3 4.990936 0.000000
akkor lássuk: 3 7.990936 3.000000
akkor lássuk: 4 4.990936 0.000000
akkor lássuk: 4 8.990936 4.000000*/
fscanf( tf, „%2.6f %2.6f”, &xkord, &ykord);
printf(„akkor lássuk: %d %f %f n”,i, xkord, ykord );
(*memo)[1]=xkord+i;
(*memo)[2]=ykord+i;
printf(„akkor lássuk: %d %f %f n”,i, (*memo) [1], (*memo) [2] );
};free(memo);
}
/*és itt jön a feldolgozandó filebõl egy részlet:
500 999000 847266 5000 1000 2 0
100.00000 1.00000 50.00000 1000.00000 0.0000010000
15000.0000000 5.0000000 0.0020000
6.492520 29.697117 0.000000 1.000000-0.116759E+00-0.606893E-01
59.822802 38.329144 0.000000 1.000000 0.281617E+00 0.136119E+00
74.426151 20.403068 0.000000 1.000000 0.178184E+00-0.119522E+00
82.601481 90.714650 0.000000 1.000000-0.165419E+00-0.109105E+00
74.296556 27.289441 0.000000 1.000000-0.347553E-01 0.764032E-02
77.321544 78.268809 0.000000 1.000000-0.136444E-02 0.201329E-01
84.966457 86.348069 0.000000 1.000000-0.138693E+00-0.795729E-01
18.553603 42.657599 0.000000 1.000000-0.198751E+00-0.257960E-01
84.611419 79.834392 0.000000 1.000000-0.428900E-01-0.117605E+00
0.276001 53.596452 0.000000 1.000000 0.677424E-01-0.562724E-01
91.031509 95.373888 0.000000 1.000000 0.281195E-01-0.171690E-01
80.390276 79.466707 0.000000 1.000000-0.193844E-02-0.259591E-02
7.922157 47.191838 0.000000 1.000000 0.344818E+00 0.885601E-01
92.136507 74.611943 0.000000 1.000000 0.535790E-01 0.161228E+00
4.990352 78.527722 0.000000 1.000000 0.371028E-01 0.469914E-01
60.883236 61.336116 0.000000 1.000000 0.133350E+00-0.988380E-01
72.227092 5.810033 0.000000 1.000000 0.651267E-01 0.762845E-03
58.991140 79.113459 0.000000 1.000000 0.125892E-01 0.161237E-01
50.080953 49.829133 0.000000 1.000000-0.169422E+00-0.117620E+00
89.032714 73.498785 0.000000 1.000000 0.804797E-01 0.285033E-01
39.984458 33.862555 0.000000 1.000000-0.112847E-01 0.210433E-01
53.370011 84.786230 0.000000 1.000000 0.535436E-01-0.458491E-01
28.768346 53.732689 0.000000 1.000000-0.107200E+00-0.116213E+00
38.207981 1.906119 0.000000 1.000000 0.984096E-02-0.593227E-02
26.538034 28.229700 0.000000 1.000000-0.787910E-01 0.179462E-01
70.879998 38.574264 0.000000 1.000000-0.745004E-01 0.146548E-01
70.954079 15.091209 0.000000 1.000000-0.254990E+00-0.196221E+00
20.944098 32.371428 0.000000 1.000000 0.104986E-02-0.106304E+00
75.650232 64.030795 0.000000 1.000000 0.119309E-01-0.183948E+00
50.747003 84.887554 0.000000 1.000000-0.158969E-01 0.719681E-01
44.332224 92.681178 0.000000 1.000000-0.674866E-01-0.119202E+00
*/ -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz