programozas
Jelentkezz be a hozzászóláshoz.
"a takarítón? az ?rület határát súrolja, aztán a légifolyosót mossa föl"
A printf() sok helyen nincs jól leírva, mert kell a ("...%d", és az értek). másképpen nem is mehet.
A C Programming for Dummies nevû könyvbõl tanulok és az összes 10. fejezetben lévõ példafeledattal valami baja van a Code::Blocksnak, amit használok és egyiket se tudom futtatni, mert a printf után valamiért a zárójelben lévõ elsõ szóra azt hiszi, hogy az vmi nem meghatározott érték, és elõször meg kell határoznom, ha használni akarom. Pl:
#include <stdio.h>
void limit(int stop);
int main()
{
int s;
printf(“Enter a stopping value (0-100): “😉;
scanf(“%d”,&s);
limit(s);
return(0);
}
void limit(int stop)
{
int x;
for(x=0;x<=100;x=x+1)
{
printf(”%d ”,x);
if(x==stop)
{
puts(“You won!”😉;
return;
}
}
puts(“I won!”😉;
}
És akkor a végére kidob vagy 20 hibaüzenetet, pl hogy:
Error: 'Enter' undeclared value (first use in this function)
Copy pasttek másoltam be, úgyse volt jó, saját kezûleg írtam be, úgyse.
Tök fogyatékosan fogalmaztam, remélem érthetõ. Szóval valakinek ötlet?
#include <stdio.h>
int main()
{
int coordinate;
printf("Input target coordinate: ");
scanf("%d",coordinate);
if( coordinate >= -5 && coordinate <= 5 )
{
puts("Close enough!");
}
else
{
puts("Target is out of range!");
}
return(0);
}
#include <stdio.h>
#include <conio.h>
int main()
{
printf("4 times 5 is %d",4*5);
getch();
}
Az #include <conio.h>, azért kell, mert a getch() másképp nem ismeri és ez a getch() azért kell, hogy megmaradjon a Command Prompt féle ablakocska. A return(0) kitöröltem, másképpen tényleg valami nagy random számot fog megadni.
A %i egész számokra vonatkozik, a %f valós számokra, %c az valamilyen karakterre, %g az egyszerübb alakban írja ki a valósz számot, pl. ha a valósz számként volt definiálva egy mûvelet, de közben az eredmény valamilyen tizedes szám: 1.25, 1.368, mert a %f esetében így írna ki ezeket: 1.25000 vagy 1.36800, a %d nem tudom én sem.
Másképpen ha a %d kicseréled %i-re, akkor is megadja a 20-as eredményt, mert egész szám.
a buildre elvileg mindig szükség van mert akkor nem fordul le konkrétan a forráskódod futtatható progivá (például ha 3-szor átírod a kódod, de csak az elsõnél buildeled, a többi változtatásnál meg csak a runt nyomogatod, akkor csak elsõ változtatásnál létrehozott progit futtatja), ha nem szól miatta a fejlesztõprogi az nemtom miért lehet...
remélem segíthettem, de majd biztos lesz nálam kompetensebb a témában😄
"a takarítón? az ?rület határát súrolja, aztán a légifolyosót mossa föl"
iOS-re szeretnék megtanulni fejleszteni, amihez Objective C kell, aminek az alapja a C, úgyhogy gondoltam belevetem magam abba. És most vagy én vagyok teljesen fogyatékos, vagy a könyv szar, de a legegyszerûbb példánál elakadtam😄 A lényeg az, hogy ki kéne számolnia, hogy 4*5 az 20, de nekem folyamatosan valami random milliárdos szám jön ki, pedig ugyanazt bemásoltam, mint ami a könyvben van:
#include <stdio.h>
int main()
{
printf("4 times 5 is %d
",4*5);
return (0);
}
Bár a könyv nem igazán tért ki arra, hogy mit jelent a %d, úgyhogy valaki azt is elmagyarázhatná😊
u.i.: oké, a helyzet az, hogy eddig csak runra nyomtam, nem pedig build and runra. Mi a különbség a kettõ között? Ha build nélkül nem lehet értelmes eredményt kapni, miért nem szól? És akkor még mindig: mit jelent a %d?😄
Ha tudna valaki ajánlani azt megköszönném.
"a takarítón? az ?rület határát súrolja, aztán a légifolyosót mossa föl"
http://netvbprogramminggroup.swhu.tk/index.php
http://netvbprogramminggroup.swhu.tk/
#!/usr/bin/python
a, b = 7, 1
while b<20:
if a*b%3==0:
print "*%i"%(a*b)
else:
print a*b
b = b+1
#include <stdio.h>
#include <conio.h>
int main()
{
int a, b;
a = 7;
b = 1;
while (b < 20) {
if (a*b%3==0) printf ("*%i\n",a*b);
else printf ("%i\n",a*b);
b = b+1;
}
getch();
}
Ez így mûködik is és az eredmény így lenne:
7
14
*21
28
35
*42
...
112
119
*126
133
Ezt csak át kellene írni Python-ba.
a, b = 7, 1
while b<20:
if a*b%3==0: print "*"a*b,
else print a*b,
b = b+1
a, b = 7, 1
b = b+1
while b<20:
if a*b%3==0: print "*"a*b,
else print a*b,
Ezt nem tudom, ha helyesen írtam print "*"a*b, hogy a számok elejébe tegye a * jelet.
Full kezdõként Pythonnal próbálkozok. A könyvbõl a feladat, hogy irassam ki a 7es szorzótábla elsõ 20 tagját és csillaggal jelöljem azokat amik 3 többszörösei. Szép is, jó is, csak azt nem tudom megcsinálni hogy a számok mögé tegye a csillagot. Mi rontok el?
a, b = 7, 1
while b<20:
print a*b,
b = b+1
if a*b%3==0:
print "*",
Facebook applikácio készítéshez keresek olyat, aki ért hozzá.
http://bexter.hu Szép Fényeket!
Ha valakinek van ötlete mi lenne egy ilyen probléma amit a fenti módszerrel megoldhatnék? Sajnos elfogyott a fantáziám ehhez...Persze ne 150 jegyû prímekkel kelljen mûveleteket végezni😄 Elõre is köszi a segítséget
"a takarítón? az ?rület határát súrolja, aztán a légifolyosót mossa föl"
Ami a feladatot illeti én csak hasonlóképpen írnám meg, tehát hogy a program magának egész a maximum számig meghatározza a prímszámokat, de csak a minimum számnál nagyobb/esetleg egyenlõ prímszámokat írja ki.
2. Ha már van maradékos osztás a c-ben:
if (i % j == 0) {}
akkor nem kell újból megírni - tehát a Mod függvény felesleges.
3. Mint írod is, tömb inicializálásánál meg kell adni a tömb méretét:
int a;
4. Az alábbi helyett:
while (j <= int(sqrt(i))) {}
javaslom ezt:
while (j*j <= i) {}
Egyrészt nem kell hozzá így a math.h könyvtár.
Másrészt gyorsabb (nem kell külön lebegõpontos->egész konverzió)
5. "A goto az ördög mûve" 😉
Bõvebben: itt, illetve itt.
6. Intendálás, kódkiemelés
#include <conio.h>
#include <math.h>
float Mod(int i, int j)
{
return i - j*int(i/j);
}
float Prim(int n)
{
int z = 1;
int a[];
if (n<0) {
printf("A beirt szam negativ!!!\n"); printf("Irj nagyobbat vagy egyenlot 2-vel!!!\n");
}
if (n>=0 && n<2) {
printf("A beirt szam kisebb mint 2!!!\n"); printf("Irj nagyobbat!!!\n");
}
if (n>=2) {
printf("A primszamok egesz %i-ig:\n",n);
printf("\n");
printf("%i",2);
for (int i = 2; i <= n; i++) {
int j = 2;
while (j <= int(sqrt(i))){
if (Mod(i,j)==0) break;
else j++;
}
if (Mod(i,j)!=0) {
z++;
a
printf(",%i",a
}
}
printf("\n");
printf("%i\n", z);
}
}
int main()
{
int n;
newtry:printf("n = ", n); scanf("%i",&n);
Prim(n);
goto newtry;
getch();
}
Dev C ++ használtam, a prímszámok kiírása "n"-ig az "if (n>=2) {"-ben van, a többi csak azért van, hogy ne blokkoljon a program, ha esetleg elírja az ember.
if((min % 2 != 0 || min == 2)
&& (min % 3 != 0 || min == 3)
&& (min % 5 != 0 || min == 5)
&& (min % 7 != 0 || min == 7)
&&(min != 1)
&&(sqrt(min) % 1 != 0)){
A compiler viszont hibát jelez, azzal a kikötéssel hogy double típusú változóra nem használható a (%) operátor. Ebben szeretnék egy kis segítséget kérni. Lényegében azt szeretném kiértékelni hogy a gyökvonás után kapott szám egész e.
Úgy döntöttem hogy helyette inkább megírom az strcmp()függvényt.
Én Komodo Edit 7.1.3-at használok kódszerkesztésre Debian Squeeze Linux alatt, a fordításhoz meg a GCC 4.4.5-ös verzióját:
# gcc --version
gcc (Debian 4.4.5-8) 4.4.5
Az általad legutóbb bemásolt kód szépen lefordul:
# gcc -o prime prime.c
# ls -la prime*
-rwxr-xr-x 1 faustus faustus 7386 dec 14 22.27 prime
-rw-r--r-- 1 faustus faustus 1020 dec 14 22.54 prime.c
és fut is:
# ./prime 0 100
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#include<stdio.h>
#include<stdlib.h>
/*Írjon programot, amely a paraméterül kapott min és max érték között kikeresi és listázza a prímszámokat.
Tipp: Paraméterek ellenõrzése: legalább 2 (min,max), számok legyenek. Ha min > max akkor swap(min,max).
A primszámok csak önmagukkal és egyel oszthatók. Algoritmus keresése erre a szabályra.
For ciklus min-max értékikg, majd a fenti algoritmus alkalmazása a ciklusváltozóra.*/
int swap(int *i,int *j){
int t;
t = *i;
*i = *j;
*j = t;
}
void prime(int min, int max){
if(min>max)
swap(&min,&max);
for( ; min<=max; min++){
if((min % 2 != 0 || min == 2)
&& (min % 3 != 0 || min == 3)
&& (min % 5 != 0 || min == 5)
&& (min % 7 != 0 || min == 7)
&&(min != 1)){
printf("%d\n", min);
}
}
}
int main(int argc, char *argv[]){
if(argc != 3){
printf("Error: more then two arguments use for define intervallum!\n");
return EXIT_FAILURE;
}
prime(atoi(argv<1>1>),atoi(argv<2>2>));
return EXIT_SUCCESS;
}
A sejtésed teljes mértékben megalapozott. Argumentum kezelésre is szükség lesz a program megírásához. A javaslataidnak megfelelõen módosítok a forráskódon.
Szóval ilyesmire módosítottam:
[code="cpp_18,19,20,21,22"]#include <stdio.h>
/*Írjon programot, amely a paraméterül kapott min és max érték között kikeresi és listázza a prímszámokat.*/
int swap(int *i, int *j) {
int t = *i;
*i = *j;
*j = t;
}
void tomb(int min, int max) {
int i, T
if (min > max)
swap(&min,&max);
for( ; min <= max; min++) {
i = 0;
if (!((min % 2 == 0 && min != 2) || (min % 3 == 0 && min != 3) || (min % 5 == 0 && min != 5) || (min % 7 == 0 && min != 7) || (min == 1))) {
T[i] = min;
printf(" %d ", T);
i++;
}
}
}
void main () {
tomb(0,11);
printf ("\n");
}
Debian Squeeze Linux alatt, gcc (4.4.5) alatt lefordul, fut.
Amire azért ügyelj (ezeket eszközöltem a mellékelt kódban):
- Hogy áttekinthetõ legyen a kód, indentáld: a függvényeknél/eljárásoknál, ciklusoknál, feltételeknél kezd bentebb a mûveletet végzõ "magot"
- A program magját képezõ main eljárásba ne rakj bele más függvény deklarációját - ugyancsak csökkenti az áttekinthetõséget.
- Mivel a tomb függvény kiírást végez, és nem szükséges a max változó kiírása, átalakítottam eljárássá.
No meg még az a sanda gyanúm, hogy
- A feladatban szerepel: "programot, amely a paraméterül kapott min és max érték" - ez arra utal, hogy a lefordított programnak kell megadni a min és max értéket, tehát így kell tudnom futtatni Linux alatt a lefordított programot:
./prime 0 11
vagy Windowsban:
prime.exe 0 11
Ezért szerintem nézz utána a argv és argc változóknak.
- Az általad alkalmazott algoritmus jó, de csak a kétjegyû számokhoz. Ha már három számjegyû számokkal dolgozol (tomb(0,200)), akkor megjelenik a 121 is, ami nem prim (11*11).
Szóval barátkozz meg Eratoszthenész szitájával
#include<stdio.h>
/*Írjon programot, amely a paraméterül kapott min és max érték között kikeresi és listázza a prímszámokat.*/
main ()
{
int tomb(int min, int max)
{
int i, T;
if (min>max)
swap(&min,&max);
for( ; min<=max; min++){
i=0;
if (!((min % 2 == 0 && min != 2)
|| (min % 3 == 0 && min != 3)
|| (min % 5 == 0 && min != 5)
|| (min % 7 == 0 && min != 7)
|| (min == 1)))
T = min;
printf(" %d ", T );
i++;
}
return max;
}
printf(" %d ",tomb(0,11));
}
int swap(int *i, int *j) {
int t = *i;
*i = *j;
*j = t;
}
#include<stdio.h>
/*Írjon programot, amely a paraméterül kapott min és max érték között kikeresi és listázza a primszámokat.
Tipp: Paraméterek ellenõrzése: legalább 2 (min,max), számok legyenek. Ha min > max akkor swap(min,max).
A primszámok csak önmagukkal és egyel oszthatók. Algoritmus keresése erre a szabályra.
For ciklus min-max értékikg, majd a fenti algoritmus alkalmazása a ciklusváltozóra.*/
main ()
{
int tomb(int min, int max)
{
int i, T;
if (min>max)
swap(&min,&max);
for( ; min<=max; min++){
i=0;
if (!((min % 2 == 0 && min != 2)
|| (min % 3 == 0 && min != 3)
|| (min % 5 == 0 && min != 5)
|| (min % 7 == 0 && min != 7)
|| (min == 1)))
T = min;
printf(" %d ", T );
i++;
}
return max;
}
printf(" %d ",tomb(5,10));
}
//swap függvény: a fügvény két változó cseréjét valósítja meg
int swap(int *i, int *j) {
int t = *i;
*i = *j;
*j = t;
}
#include<stdio.h>
/*Írjon programot, amely a paraméterül kapott min és max érték között kikeresi és listázza a prímszámokat.*/
main ()
{
int tomb(int min, int max)
{
int i, T;
if (min>max)
swap(&min,&max);
for( ; min<=max; min++){
i=0;
if (!((min % 2 == 0 && min != 2)
|| (min % 3 == 0 && min != 3)
|| (min % 5 == 0 && min != 5)
|| (min % 7 == 0 && min != 7)
|| (min == 1)))
T = min;
printf(" %d ", T );
i++;
}
return max;
}
printf(" %d ",tomb(5,10));
}
int swap(int *i, int *j) {
int t = *i;
*i = *j;
*j = t;
}
C programozással kapcsolatban szeretnék kérni egy kis segítséget. Írtam egy egyszerû függvényt amely egy tömböt tölt fel egy megadott kezdõértéktõl a végértékig. A program mûködik viszont a végérték 2X kerül kiírásra ami elég zavaró (gondolom a függvény visszatérési értékét is beleírja) hogy lehet kiküszöbölni ezt az apró problémát? Sajnos a return elhagyása sem oldotta meg a problémát.
Fortran 77-el szeretnék programozni, de nem találok megfelelõ fordítót, ami windows 7-es op rendszeren fut. Valaki segítsen pls. Kipróbáltam már rengeteg féle megoldást, de egyik sem vált be.
Mindenki az aminek hiszik. Kivéve én, mert rólam azt hiszed, hogy rosszul hiszed, amit hiszel, mert elhitettem veled, hogy az vagyok aminek hiszel. Látod, már azt sem tudod, hogy mit hiszel... :)
Van itt egy hasznos kis progi, Screen Lighter.
http://data.hu/get/5822314/Desktopligher.ExE
(laptopom túl világos még a legkisebb fényerõvel is, ez megoldja a problémát) Az lenne a kérdésem, hogy van-e arra megoldás hogy ezt az egy exe-bõl álló programot módosítani lehessen? Fõ cél az lenne, hogy a program kék ablakszinét átállítsam olyanra mint a hátterem színe(vörös), mivel mindíg használom és nem illik oda😊
Megnéztem PEiD-el, Borland Delphi 6.0 - 7.0 -vel lett írva. Utána találtam egy programot(XN Resource Editor) amivel lehet módosítani az exe tartalmát, pl bitmapokat,stringeket cserélgetni. De sajnos a hátteret nem sikerült. Van erre valami mód, hogy esetleg a színkódokat át lehessen írni vagy valami?
Ha valaki tudna segíteni ebben a hatalmas problémámban, rohadt hálás lennék neki!
Örülnék ha ezeknek felelne meg:
-teljes képernyõs programok közben is egy átlátszó ablakban számok formájában, vagy koordináta rendszerben látnám a joystick pozícióját. Utóbbi lenne a legjobb.
-egérgörgõ lenyomásával a joystick pozíciója minden tengelynél 0-ra áll. (3 tengelyt használok: egér X és Y tengelyét, a görgõt 3. tengelynek, 2 gombot)
Köszönöm elõre is ha esetleg venné valaki a fáratságot, hogy segítene ebben a problémámban. Hali
Gigabyte H55M-S2H, Core i3 2,93Ghz, 4GB DDR3 1333Mhz, GT220 1GB DDR3, 500+80GB HDD Nem sok, de egyelőre elég lesz:)
C-Freebõl a 4.0 ingyenes Dev C++ meg teljesen, de ebben a pontosvesszõ íráshoz valamelyik gyorsbillt törölni kell a beállításoknál.
Pascal és Turbo Delphi után elkezdenék ismerkedni a C++-szal, úgyhogy nekiálltam a megfelelõ fordító után kutakodni. A legjobbnak a Code::Blocks tûnik, viszont van egy gondom vele, a fordítás után az adott program nem indul el. Vagyis nem futtat, csak fordít. (valamit listáz magának gyorsan és ennyi, a futtatásra nem is reagál) Persze ha megnézem a .cpp fájl mellett ott vannak a fájlok és az exe is, de így elég gázos...Esetleg van más tippetek milyen progit kéne használni?
Gigabyte H55M-S2H, Core i3 2,93Ghz, 4GB DDR3 1333Mhz, GT220 1GB DDR3, 500+80GB HDD Nem sok, de egyelőre elég lesz:)