Hirdetés

2024. április 30., kedd

Gyorskeresés

Hozzászólások

(#2651) Korcsii válasza Korcsii (#2650) üzenetére


Korcsii
őstag

csak nem bírtam magammal... sima pause/play:

HWND hWnd = FindWindow(NULL, TEXT("Windows Media Player"));
SendMessage(hWnd, WM_COMMAND, 18808, 0);

(#2652) Iszusz


Iszusz
csendes tag

Sziasztok!
Egy olyan kérdésem lenne van egy feladat, amit nem tudok megoldani. A könyvben amiből van a feladat, még nem esett szó tömbökről, és függvényekről, se a length-ről. Szóval valószínűleg az nélkül is meg kellene tudni oldani ezt a feladatot. A kérdésem az lenne, hogy lehet?
A feladat a következő:
"Írjunk programot, amely egy beírt egész szám számjegyeit kiírja szövegesen(angolul).Azaz, ha például beírjuk a programnak, hogy 932, akkor kimenetként az jelenik meg, hogy
nine three two

Ne felejtsük el zero-t írni, ha a felhasználó nullát ad meg! (Megjegyzés:ez nem egy könnyű feladat.) "

Én kb eddig jutottam el a feladat megoldásban a könyv előző fejezetei alapján.

#include<stdio.h>

int main()
{
int jegy,number;
int szamlalo;
printf("Kérem adjon meg egy számot\n");
scanf("%i",&number);

do
{
jegy=number%10;
switch(jegy)
{
case 0:
printf("zero ");
break;
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("four ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break ;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");
break;
default: printf("\n");
break;
}
number=number/10;

}
while(number!=0);

return 0;
}

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2653) Gyuri16 válasza Iszusz (#2652) üzenetére


Gyuri16
senior tag

tehat a gond az, hogy forditva irja ki a szavakat. tobbfelekeppen meg lehet oldani tombok es a tobbi nelkul is. legegyszerubb talan az, ha a beolvasott szamot "megforditod" egy masik valtozoba (szamkent). tehat ezzel a modulo/oszto modszerrel egyesevel veszed a szamjegyeit a legkissebbtol, es hozzaadod egy masik valtozohoz (minden lepesben szorozni kell a valtozot 10-zel). ezen a szamon aztan futtathatod a mar megirt algoritmusod.

Nem vagyok egoista, csak uborkagyalu!

(#2654) Jester01 válasza Gyuri16 (#2653) üzenetére


Jester01
veterán

Szerintem meg az a legegyszerűbb, ha a helyiértékekkel megy lefelé :P

Jester

(#2655) Korcsii válasza Iszusz (#2652) üzenetére


Korcsii
őstag

hmm... hmmm...

#include <stdio.h>

int main(void) {
char c;
printf("Adj meg egy szamot: ");
while ((c = getchar()) != '\n') {
switch (c) {
case '0': printf("zero"); break;
case '1': printf("one"); break;
case '2': printf("two"); break;
case '3': printf("three"); break;
case '4': printf("four "); break;
case '5': printf("five"); break;
case '6': printf("six"); break;
case '7': printf("seven"); break;
case '8': printf("eight"); break;
case '9': printf("nine"); break;
}
printf(" ");
}
return 0;
}

(#2656) kingabo válasza Korcsii (#2655) üzenetére


kingabo
őstag

Switch-ben a paraméter c helyett atoi(c), hiszem a szám ascii kódja van a c-ben. Bár elötte kellene ellenőrizni is, mert az 'a'-ra is 0-t ad az atoi...

(#2657) Korcsii válasza kingabo (#2656) üzenetére


Korcsii
őstag

kivéve, ha a case-ben nem szám, hanem karakter szerepel ;)

(#2658) kingabo válasza Korcsii (#2657) üzenetére


kingabo
őstag

Ott a pont! :)

(#2659) Gyuri16 válasza Jester01 (#2654) üzenetére


Gyuri16
senior tag

jolvanna :)
en inkabb elmeleti ember vagyok, igy redukaltam a problemat egy olyanra amit mar meg tud oldani :)

Nem vagyok egoista, csak uborkagyalu!

(#2660) Iszusz


Iszusz
csendes tag

Sziasztok!
Olvastam a válaszokat! Nagyon szépen köszönöm mindenkinek, aki írt nagyon sokat segítettek. Szerintem lesz még pár mások számára egyértelmű feladat, amit meg fogok kérdezni. Elég zöldfülű vagyok a programozáshoz még. :S Gyuri elméleti megoldása azért is tetszett, mert elgondolkodtató volt. Most meg is próbálom átvinni a gyakorlatba mindjárt. :)

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2661) Iszusz válasza Gyuri16 (#2659) üzenetére


Iszusz
csendes tag

Sikerült megoldani a feladatot :D a leírásod alapján ilyen lett:
#include<stdio.h>

int main()
{
int jegy,number;
int jegy2,szamlalo;

printf("Kérem adjon meg egy számot\n");
scanf("%i",&szamlalo);
//SZAM MEGFORDITÁSA
number=0;
do{
jegy=szamlalo%10;
number=(number+jegy)*10;

szamlalo=szamlalo/10;
}
while(szamlalo!=0);

number=number/10;

//DÖNTÉSHOZOT TARTALMAZO DO-WHILE CIKLUS
do
{
jegy2=number%10;
switch(jegy2)
{
case 0:
printf("zero ");
break;
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("four ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break ;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");
break;
default: printf("\n");
break;
}
number=number/10;

}
while(number!=0);

return 0; }
Korcsii megoldása mondjuk jóval áttekinthetőbb, viszont a könyv valószínűleg még csak hasonló megoldást várt el, mert még a getchar-ról se beszélt. Köszönöm még egyszer a válaszokat

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2662) Gyuri16 válasza Iszusz (#2661) üzenetére


Gyuri16
senior tag

orulok, hogy sikerult.
legkozelebb a programkodot kodkent illeszd be a hozzaszolasba (amikor irsz lent van egy programkod gomb), igy joval attekinthetobb lesz.
itt a Sk8erPeter fele how-to: [link] :)

Nem vagyok egoista, csak uborkagyalu!

(#2663) Iszusz válasza Gyuri16 (#2662) üzenetére


Iszusz
csendes tag

oks meglesz másolni is megtanulok az szerintem előbb fog menni, mint a programozás ;) :)

[ Szerkesztve ]

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2664) Korcsii válasza Iszusz (#2661) üzenetére


Korcsii
őstag

getchar()-t sokszor inkább eltitkolják, mert ugyan az, mint a scanf("%c", &c); csak ha már ott csak egy betűt kell csak kicserélni, akkor ne tanítsanak új funkciót :) c++ rulz, ott csak >> operátor van, semmi más függvény :)

azért ami csúnya az én kódomban, hogy gyakorlatilag nem számot olvasol be, és kicsit bonyolult lenne, ha utána a számot még bármire is szeretnéd használni... viszont mivel a feladat csak ezt kérte, szerintem ez a legegyszerűbb megoldása :)

(#2665) Jester01 válasza Korcsii (#2664) üzenetére


Jester01
veterán

c++ rulz, ott csak >> operátor van, semmi más függvény

Azért ezt ne hangoztasd kezdők előtt mert még elhiszik. Példának okáért van std::basic_istream::get() 6 verzióban és még kb ezermillió másik függvény.

Az operator>> különben sem mindenható:

#include <iostream>
#include <string>
using namespace std;
int main(int, char**)
{
string name;
cin >> name;
cout << name << endl;
return 0;
}
$ g++ -Wall test.cpp
$ echo "John Doe" | ./a.out
John

Itt például jól jön a get():

#include <iostream>
#include <sstream>
using namespace std;
int main(int, char**)
{
stringbuf name;
cin.get(name);
cout << name.str() << endl;
return 0;
}
$ g++ -Wall test.cpp
$ echo "John Doe" | ./a.out
John Doe

Jester

(#2666) Korcsii válasza Jester01 (#2665) üzenetére


Korcsii
őstag

jogos... ez az átka, ha nem engedik egy darabig a string.h használatát, aztán már nem is ugrik be elsőnek... :B ezek az operátorok is egy külön világ, operátor overload meg megint egy másik... szép dolgokat lehet csinálni vele :) sstream szintén jó dolog :)

[ Szerkesztve ]

(#2667) kingabo válasza Jester01 (#2665) üzenetére


kingabo
őstag

De megoldható akár operátorral is, a noskipws-t használva: [link] :N
Ez a jó, hogy mindent meg lehet oldani több féle módon is. :K

(#2668) Jester01 válasza kingabo (#2667) üzenetére


Jester01
veterán

Elolvastad amit linkeltél? Ki is próbáltad? Kíváncsian várom a megoldásod.

Jester

(#2669) kingabo válasza Jester01 (#2668) üzenetére


kingabo
őstag

Úgy rémlett, hogy korábban én a noskipws-t használtam erre a problémára, a leírásban nem találtam semmit ami miatt ne működne. Viszont baromira érdekel, hogy mivel keverem? :F
Akkor marad a cin.get vagy a cin.getline. (sztem megéri kiszedni a sorvége jelet is a pufferből)

(#2670) Jester01 válasza kingabo (#2669) üzenetére


Jester01
veterán

A lényeges kifejezés az "initial whitespace". Tehát ettől még ugyanúgy megáll az operator>> a szavak között, mert csak a beolvasás elején lévőket érinti. Ráadásul ahogy a link mondja is, bizonyos esetekben a nem eldobott bevezető szóköz rögtön le is állítja a feldolgozást:

#include <iostream>
#include <string>
using namespace std;
int main(int, char**)
{
string name;
cin >> noskipws >> name;
cout << '*' << name << '*' << endl;
cin >> name;
cout << '*' << name << '*' << endl;
cin >> name;
cout << '*' << name << '*' << endl;
return 0;
}
$ g++ -Wall test.cpp
$ echo "John Doe" | ./a.out
*John*
**
**

Itt a feldolgozás a szóközön megállt, mert a noskipws miatt nem dobja el, viszont az operator>> ezen overloadja a szóköznél annak kiolvasása nélkül megáll. Szóval ez így sose megy tovább.

Jester

(#2671) chabeee


chabeee
tag

sziasztok
hibakeresésnél egyszerűen nem találom a hibát kérlek segítsetek

printf("6.: %s", (((a<b)&&(a>c)&&((b>c)||(c>b)))?"a and b" : ((b>a)&&(c>a)&&((b>c)||(c>b)))?"b and c" : ((c>a)&&(a>b)&&((c>a)||(a>c)))?"a and c"));

error message: ../main.c:44:140: error: expected ‘:’ before ‘)’ token

a feladat amúgy: 2 legnagyobb számot 3 változóból ki kell kaparni

[ Szerkesztve ]

(#2672) bpx válasza chabeee (#2671) üzenetére


bpx
őstag

az utolsó feltételnek hiányzik a hamis ága
de egyénként minek bonyolítod:

printf("6.: %s", c < a && c < b ? "a and b" : b < a && b < c ? "a and c" : "b and c");

(#2673) Gyuri16 válasza chabeee (#2671) üzenetére


Gyuri16
senior tag

tobb a kerdojel mint a pontosvesszo. az utolso agban nem kell tesztelni, mar tudod a valaszt.

printf("6.: %s", (((a<b)&&(a>c)&&((b>c)||(c>b)))? "a and b" :
((b>a)&&(c>a)&&((b>c)||(c>b)))
?
"b and c" : "a and c"));

mod: mindegy, -Zeratul- megoldasa szebb..

[ Szerkesztve ]

Nem vagyok egoista, csak uborkagyalu!

(#2674) chabeee


chabeee
tag

köszi :R

(#2675) Iszusz


Iszusz
csendes tag

Sziasztok!
Újra itt vagyok egy újabb kérdéssel.

Eclipset használok és kiíratásnál van egy kis problémám.
A feladat mondjuk, ez kérjen be egy számot majd írassa ki.
A helyes kimenet pl ez lenne:

Kérem a számot! 2
A szám 2

De nekem mindig előbb bekér minden adatot a gép utána irja ki a szövegeket.

2
Kérem a számot!
A szám 2

Erre is volt egy utasítás ha jól emlékszek anno amivel ki lehetet ezt a problémát küszöbölni, csak sajna már nem emlékszek rá, :B valaki el tudná nekem magyarázni újra miért csinálja ezt a fordító...?

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2676) proof88 válasza Iszusz (#2675) üzenetére


proof88
addikt

inkább mutasd a konkrét kódot mert így nem igazán értem :D
mondjuk lehet gond ha nem raksz sorvége jelet csak a legvégén és akkor flushol

(#2677) Iszusz válasza proof88 (#2676) üzenetére


Iszusz
csendes tag

oké küldök példát ha úgy érthetőbb mi a bajom :)

#include<stdio.h>
int main(){
int szam;
printf("Kérem a számot\n");
scanf("%d", &szam);
printf("A szam %d", szam);
return 0;
}

[ Szerkesztve ]

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2678) proof88 válasza Iszusz (#2677) üzenetére


proof88
addikt

az a helyzet hogy szerintem az első printf() után még bufferben tartja a szöveget, és a valós kiírás csak a main() függvény végén történik meg. Pedig van sorvége jel az első szöveged után. Próbáld meg azt, hogy az első printf() után fflush(stdin); ez elvileg kényszeríti hogy a bufferből a megfelelő helyre kerüljön a szöveg.

(#2679) Iszusz válasza proof88 (#2678) üzenetére


Iszusz
csendes tag

Köszönöm a választ, de sajna ez se segített. :F

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2680) Iszusz


Iszusz
csendes tag

Hát végülis igy is tudom használni csak fura, és nem igazán értem miért nem müködik jól.

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2682) Retekegér válasza Iszusz (#2680) üzenetére


Retekegér
HARDVERAPRÓD

Így esetleg?

#include <stdio.h>
#include <conio.h>

int main()
{
int szam;
printf("Kerem a szamot\n");
scanf("%d", &szam);
printf("A szam %d", szam);
getch();
}

<< Heimdal >>

(#2683) Iszusz válasza Retekegér (#2682) üzenetére


Iszusz
csendes tag

Így meg most a végtelenségig kéri be a számokat amig le nem állítom a futatást. :(

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2684) proof88 válasza Iszusz (#2683) üzenetére


proof88
addikt

most már csak arra vagyok kíváncsi h milyen fejlesztőkörnyezetet / fordítót használsz :U

(#2685) Iszusz válasza proof88 (#2684) üzenetére


Iszusz
csendes tag

Eclips Galileo fejlesztői környezet. Lehet az a baj, hogy XP-n használom nem Linuxon?

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

(#2686) proof88 válasza Iszusz (#2685) üzenetére


proof88
addikt

nem hiszem / nem tudom :D

(#2687) chabeee válasza Iszusz (#2685) üzenetére


chabeee
tag

az a baj hidd el, én eclipseben "tanultam" meg programozni, és kipróbáltam mind kettőt, mingw forditót használsz? mert elvileg annál fordul elő.
amúgy egy jó ötlet: csinálj egy 20gb-os particiót arra dobj fel az új ubuntut, tökéletesen működik alatta, és felhasználó barát is

(#2688) Retekegér válasza Iszusz (#2685) üzenetére


Retekegér
HARDVERAPRÓD

XP-re ajánlom a Bloodshed Dev-C++-t.

<< Heimdal >>

(#2689) kispx válasza Retekegér (#2688) üzenetére


kispx
addikt

Inkább Code:: Blocks. A Dev-C++ kicsit bugos, és ha jól látom akkor már fejlesztik tovább.

[ Szerkesztve ]

(#2690) Retekegér válasza kispx (#2689) üzenetére


Retekegér
HARDVERAPRÓD

Az lehet, de azt csomagolták a C-könyv mellé és nekem bevált. :)

Szerk.: kipróbálom a Blocks-ot is, ha már így belinkelted. :))

[ Szerkesztve ]

<< Heimdal >>

(#2691) kispx válasza Retekegér (#2690) üzenetére


kispx
addikt

Mondjuk én is azzal kezdtem, és sokat is fejlesztettem vele, csak összeomlások és néhény apróbb bug miatt váltottam. Lényegében a Code:: Block is ugyanúgy a MinGW fordítót használja, szval csak az IDE-ben van eltérés.

[ Szerkesztve ]

(#2692) proof88 válasza kispx (#2691) üzenetére


proof88
addikt

igen én még láttam a Code::Blocks-ot is gyerekkorában, az is elég fapados volt, csak hát mivel nem fejlesztik már a DevCpp-t, a Blocks lehagyta szépen.
Egyébként ott van még a Visual C++ Express Edition is. Legális, ingyenes, nagyon jó IDE. Meg egyébként a komplett Visual Studio-t letöltheted legálisan, ha felsőoktatásban vagy hallgató.

(#2693) ArchElf válasza proof88 (#2692) üzenetére


ArchElf
addikt

Meg egyébként a komplett Visual Studio-t letöltheted legálisan, ha felsőoktatásban vagy hallgató.
- Ha az iskolád bent van az MSDNAA-ban
- Ha van az adott félévben informatikai tárgyad (nem info szakon levőknél ez nem egyértelmű)

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2694) proof88 válasza ArchElf (#2693) üzenetére


proof88
addikt

sorry :B

(#2695) ArchElf válasza proof88 (#2694) üzenetére


ArchElf
addikt

Egyáltalán nem kötekedésből, csak kiegészítésként írtam :B

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2696) jonaska


jonaska
csendes tag

Halli mindenkinek ! Programozásra keresnék megfelellő embert ( embereket ) egy beszélgetés keretein bellűl vagy akár személyes találkozon a részleteket megbeszélnénk ! Tudom h ez nem egy állás hirdető oldal de ott senkit nem érdekelnek az ien jelegű támák :S szoval irj egy emailt otherman@citromail.hu

(#2697) bpx válasza jonaska (#2696) üzenetére


bpx
őstag

nem a témával van a gond

(#2698) jonaska válasza bpx (#2697) üzenetére


jonaska
csendes tag

akor ?

(#2699) ArchElf válasza jonaska (#2698) üzenetére


ArchElf
addikt

akor tanuj meg hejesirni

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2700) Iszusz válasza chabeee (#2687) üzenetére


Iszusz
csendes tag

Szia! Igen mingw fordítot használok, ha az a baj megnyugodtam, akkor suliba ezzel elvileg nem lesz gondom mert ott ubuntu van a gépeken. :)

Átírtam volna a forráskódot a gépemen anno, de már nem értem hol rejlik a hiba és egyedül nem is fogom megtudni soha....

Copyright © 2000-2024 PROHARDVER Informatikai Kft.