Fontos linkek a C-ről:
Prog.hu-s cikkek
Prog.hu-s tudástár témák
The C Library Reference Guide
Standard C
Wikipedia
C Tutorial
Programming in C
Bevezetés a C programozási nyelvbe
Gyorskeresés
Legfrissebb anyagok
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
- Tudástár AMD Radeon undervolt/overclock
Általános témák
LOGOUT.hu témák
- [Re:] [bitpork:] Fogyasztásra ítélve
- [Re:] [bobalazs:] RTX 4070 Super Undervolting and Overclocking Alulfeszelés és túlhajtás
- [Re:] [sh4d0w:] Rebel Moon - Ne nézd meg!
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [CPT.Pirk:] "Fényhűtés" ciksorozat (tuningnet.hu)
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [Luck Dragon:] MárkaLánc
- [Re:] PLEX: multimédia az egész lakásban
- [Re:] [ubyegon2:] Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
GAMEPOD.hu témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
WonderCSabo
félisten
Megírtam egy picit más megközelítéssel. Nem lehet, hogy a mainben rossz vmi? Én most már fáradt vagyok elemezni ezt a bonyolult problémát.
int vizsgal(char s1[], char d1[])
{
int i, j;
int b = 1;
for(i = 0; i<= strlen(s1)-strlen(d1); ++i)
{
for(j=0; j < strlen(d1); ++j)
{
if(s1[i+j-1] != d1[j])
{
b = 0;
break;
}
else
b = 1;
}
if(b)
return i-1;
}
return i-1;
}
Jester01
veterán
Ez nagyon kreatívan megírt program. Ha ember bírálná el, nem sok jó származna belőle.
Mindenesetre a baj az fgets körül lehet, az ugyanis eltárolja a sorvég jelet is. Ezáltal egyfelől csak akkor találod meg a dolgokat ha az éppen a sor végén van, másfelől pedig a 255 hosszú sorokon elcsúszik a feldolgozás (és onnan már nem is jön helyre). Jelen formájában a feladatkiírásban lévő példára sem működik, nem értem ezt hogy nem vetted észre.
Jester
WonderCSabo
félisten
Ezáltal egyfelől csak akkor találod meg a dolgokat ha az éppen a sor végén van
Miért is? Én lefuttattam a progit a kijavított keresőfv-el, megtalált mindent, ezzel nem volt gond. Nyilván 255-nél hosszabb stringekre nem próbáltam meg.
Egyébként a maint nem nagyon néztem, csak az algoritmust.
Jester01
veterán
Nekem nem. Hol vágja le a sorvég jelet amit az fgets beolvas?
(gdb)
40 fgets(s,256,f);
(gdb)
41 fgets(d,256,f);
(gdb)
43 kimenet=vizsgal(s,d);
(gdb) x/s s
0x7fffffffe5d0: "abrakadabra\n"
(gdb) x/s d
0x7fffffffe4d0: "rak\n"
A vizsgal függvénynek meg kutya kötelessége az egész stringet nézni a lezáró 0-ig, vagyis a \n-t is. Így pedig csak a sor végén fog egyezni.
255-nél hosszabbra nem is kell működnie, de ez már 255-re sem működik, amire még kellene. A tesztelő meg lehet, hogy gonosz módon ki is próbálja azt.
Jester
Becopyznád a jelenlegi teljes programodat?
Mert en most megneztem az eredeti kododdal, meg a javitasokkal is, de mar a linkelt pdf-ben szereplo peldat hasznalva is helytelen eredmenyt ad...
Meg milyen kornyezetben probaltad te ezt?
En egy kabinetes gepen futtattam s ott adott vissza rosszat s ugye a Biro is ugyanilyen kornyezetben futtattja majd.
Szerk: Latom Jester01 megelozott.
[ Szerkesztve ]
WonderCSabo
félisten
Ja igen. Akkor működik, ha a második sor az uccsó. És ez volt a specifikáció.
[ Szerkesztve ]
Jester01
veterán
Tévedés:
A bemenet két sorból áll. Mindkét sorban egy-egy szóközt nem tartalmazó, legalább egy de maximum 255 karakter hosszú sztring található, melyeket rögtön sorvégejel követ.
Mind a két sor végén kellene \n legyen. És akkor már nem működik.
Jester
WonderCSabo
félisten
Bocs, nem tudok olvasni. Se.
vanek
tag
közben letelt a határidő..
de van más problémám is..
szóval a feladatom a lineáris diofantoszi egyenlet..
próbálkoztam a megírásával..de nem sokáig jutottam..a legnagyobb közös többszörös még ment..de utána már problémám volt...be kell vallani, hogy nem könnyű program..
szerencsémre, vagy nem..de véletlen rátaláltam a kész programra..igaz, nem volt nehéz, mivel csak be kellett írnom..nah de a lényeg, hogy ,tanulva a hibámból megnéztem a példában szereplő példákat és mindegyik a helyes eredményt adja vissza..
#include <stdio.h>
#include <stdlib.h>
#define HAMIS 0
#define IGAZ 1
int lnko(int x, int y) {
int maradek;
int temp;
if (y > x) {
temp = y;
y = x;
x = temp;
}
maradek = y;
while (y != 0) {
if ((x % y) == 0) {
break;
}
maradek = x % y;
x = y;
y = maradek;
}
return maradek;
}
void euklidesziAlg(int av, int bv, int* x0, int* y0) {
int i;
int szorzo[100];
int darab = 0;
int maradek;
int temp;
int avSeged;
int bvSeged;
int x0Seged;
int y0Seged;
int voltCsere = HAMIS;
avSeged = av;
bvSeged = bv;
if (bv > av) {
temp = bvSeged;
bvSeged = avSeged;
avSeged = temp;
voltCsere = IGAZ;
}
if (bvSeged != 1) {
do {
szorzo[darab] = avSeged / bvSeged;
maradek = avSeged % bvSeged;
avSeged = bvSeged;
bvSeged = maradek;
darab++;
} while (maradek != 1);
maradek = 0;
x0Seged = 1;
for (i = darab-1; i >= 0; i--) {
y0Seged = maradek + x0Seged * szorzo[i];
if (i > 0) {
maradek = x0Seged;
x0Seged = y0Seged;
}
}
} else {
x0Seged = 1;
y0Seged = 1 - avSeged;
}
if (voltCsere) {
temp = y0Seged;
y0Seged = x0Seged;
x0Seged = temp;
}
if (-av*x0Seged + bv*y0Seged == 1) {
x0Seged *= -1;
} else if (av*x0Seged - bv*y0Seged == 1) {
y0Seged *= -1;
} else if (-av*x0Seged - bv*y0Seged == 1) {
x0Seged *= -1;
y0Seged *= -1;
}
*x0 = x0Seged;
*y0 = -y0Seged;
}
int main() {
FILE *f, *fk;
int a;
int b;
int c;
int d;
int av;
int bv;
int cv;
int x0;
int y0;
int x;
int y;
int teszt;
f=fopen("be.txt", "r");
fk=fopen("ki.txt", "w");
if(f==NULL)
{
exit (-1);
}
teszt=fscanf(f, "%d %d %d", &a, &b, &c);
if(teszt!=3)
{
fprintf(fk, "0\n");
}
else
{
d = lnko(a, b);
av = a / d;
bv = b / d;
cv = c / d;
if (c % d == 0) {
euklidesziAlg(av, bv, &x0, &y0);
x = x0 * cv;
y = y0 * cv;
while (x < 0 || y < 0) {
x += bv;
y += av;
}
while (x-bv >= 0 && y-av >= 0) {
x -= bv;
y -= av;
}
fprintf(fk,"%d %d\n\n", x, y);
}
else {
fprintf(fk, "0\n");
}
fclose(f);
fclose(fk);
return 0;
getchar();
}
}
de ha feltöltöm a bíróra..nincs helyes eredmény..
lehet, hogy a nagy zűrzavarban félrenéztem valamit..
tudom, hogy így csak nekem lesz nehezebb a vizsga..de hátha tanulok belőle..
köszi előre is!
vanek
tag
még valami..ha 0 van a be.txt fájlba..kiakad a program..:\
Jester01
veterán
Ettől a kódtól megint fejfájást lehet kapni
Viszont legalább teljes, fordítható program
Már csak a feladat specifikáció hiányzik ...
Jester
vanek
tag
A lineáris algebrából jól ismert linearis diofantoszi egyenlet megoldásának a megvalósítása a feladat.
Tekintsük a lineáris difantoszi egyenleteket a következő alakban:
ax - by = c , ahol a, b, c eleme Z+
Ekkor keressük azt az x, y egész számpárt, amely a legkisebb nem negatív megoldása az egyenletnek,
amennyiben létezik megoldás. Ennek menete a következő: d = lnko(a, b), ahol a = d * av, b = d * bv
és c = d * cv. Ha c nem osztható d-vel, akkor nincs megoldás, különben oldjuk meg az av *x0+bv * y0 = 1
egyenletet az egész számok halmazán az euklideszi algotritmussal (az lnko-t is ezzel tudjuk kiszámolni).
Pl.: 1027 * x0 + 712 * y0 = 1 esetén
1027 = 712 * 1 + 315
712 = 315 * 2 + 82
315 = 82 * 3 + 69
82 = 69 * 1 + 13
69 = 13 * 5 + 4
13 = 4 * 3 + 1
0 + 1 * 3 = 3;
1 + 3 * 5 = 16;
3 + 16 * 1 = 19;
16 + 19 * 3 = 73;
19 + 73 * 2 = 165;
73 + 165 * 1 = 238;
A második részt az első részben kapott számok segítségével számolva végül megkapjuk a két számot: 165
és 238. Ez után ki kell próbálni, hogy mi lehet a két szám előjele (4 variáció). Majd ha az előző megoldás
volt av * x+bv * y = 1 -re, akkor av * x0 - bv * (-y0) = 1 lesz, ami nekünk kell. Végül az eredeti egyenlet
megoldását kapjuk, ha vissza szorzunk cv * d-vel:
av * x0 - bv * (-y0) = 1
av * x0 * cv - bv * (-y0) * cv = cv
d * av * x0 * cv - d * bv * -y0 * cv = a * (x0 * cv) - b * (-y0 * cv) = c = d * cv
Tehát x = x0 * cv és y = -y0 * cv megoldás, de nem feltétlenül a két legkisebb nemnegatív, tehát ezt még
meg kell keresni: x- = k * bv és y- = k * av mind megoldások bármely k eleme Z-re. Keresd meg a megfelelő
k-t és kész vagy.
Bemenet: be.txt a, b, c
Kimenet: ki.txt x, y
Pl:
Be: 53,8,64
Ki: 8,45
Be: 516,390,564
Ki: 54,70
vanek
tag
aztan rájöttem, hogy a 0ra nem kell, mivel abc eleme Z+..
Jester01
veterán
A bemásolt kiírásban a számokat a bemenetben és a kimenetben egyaránt vessző választja el, a programod viszont szóközt (whitespace) használ. Feltehetőleg a bíró is ezért nem fogadja el.
Jester
vanek
tag
sajnos a a leírásban is whitespace van..csak az átlátás miatt tettem vesszőket..:\
Jester01
veterán
Mivel azért lehet, hogy csak valami formai hiba van jó lenne ha a pontos specifikációt közölnéd és/vagy ellenőriznéd (pontosan mennyi szóköz, hová milyen soremelés kell, ha kell, stb.)
Jester
vanek
tag
itt van.. már vagy 2 óraja nézegetem...de sajnos nem tudok rájönni mi lehet..
Jester01
veterán
A te kódod 2 sorvég jelet tesz a kimenetbe. Spefikáció feladatkiírás szerint 1 kell.
[ Szerkesztve ]
Jester
vanek
tag
a feltöltés óta azt már észrevettem, de ugyan úgy nem jó..:\
fprintf(fk,"%d %d\n\n", x, y);
helyett
fprintf(fk,"%d %d\n\n", x, y);
Egy szokkozzel kell elvalasztani oket, nem 3-al.
[ Szerkesztve ]
Jester01
veterán
Érdekes mert itt a fórumon tényleg 3-nak látszik, de ha kimásolom akkor csak 1.
Jester
Nem tudom, hogy hova masolod ki, nekem Notepad++-ba, meg vim-be is 3 szokoz maradt.
A kolleganak tovabbra is ajanlom, hogy ha nem is kabinetes gepen irja meg, de mindenkepp ott forditsa es ellenorizze a progit, mert ott azonnal kitunt, hogy tobb szokoz van a kelletenel s a Bironal is valszeg ezert hasal el.
vanek
tag
valahogy nem töltöttem fel..
mikor most átnéztem a programom már kitöröltem a 3 spacet..+ az egyik \n-t ma feltöltöttem és minden jó!
nagyon szépen köszönök minden segítséget!!
jövök mindenkinek egy sörrel!
e=mc²
őstag
Sziasztok!
Szeretnek segitseget kerni az alabbi programhoz:
#include <stdio.h>
#define TABLA_MERET 8
void futo(char tabla[TABLA_MERET][TABLA_MERET], char input[3]){
int sor, oszlop;
printf("Kerem a futo poziciojat:");
scanf("%s", input);
sor = input[1] - '1';
oszlop = input[0] - 'a';
tabla[sor][oszlop] = 'f';
}
void gyalog(char tabla[TABLA_MERET][TABLA_MERET], char input[3]) {
int sor, oszlop;
do {
printf("Kerem a gyalogok helyzetet:");
scanf("%s", input);
if (input[0] != '*') {
sor = input[1] - '1';
oszlop = input[0] - 'a';
tabla[sor][oszlop] = 'g';
}
} while (input[0] != '*');
}
void futolepes(char tabla[TABLA_MERET][TABLA_MERET]){
int i, sor, oszlop;
int bl = 0;
int bf = 0;
int jl = 0;
int jf = 0;
for (i=sor+1; i<TABLA_MERET; i++) {
//balra le
if ((oszlop+(sor-i) >= 0) && !bl) {
if (tabla[i][oszlop+(sor-i)] != 'g') {
tabla[i][oszlop+(sor-i)] = '*';
}else {
bl++;
}
}
//jobbra le
if ((oszlop-(sor-i) < TABLA_MERET) && !jl) {
if (tabla[i][oszlop-(sor-i)] != 'g') {
tabla[i][oszlop-(sor-i)] = '*';
}else {
jl++;
}
}
}
for (i=sor-1; i>-1; i--) {
//jobbra fel
if ((oszlop+(sor-i) < TABLA_MERET) && !jf) {
if (tabla[i][oszlop+(sor-i)] != 'g') {
tabla[i][oszlop+(sor-i)] = '*';
}else {
jf++;
}
}
//balra fel
if ((oszlop-(sor-i) >= 0) && !bf) {
if (tabla[i][oszlop-(sor-i)] != 'g') {
tabla[i][oszlop-(sor-i)] = '*';
}else {
bf++;
}
}
}
}
void kiir(char tabla[TABLA_MERET][TABLA_MERET]) {
int i, j;
printf("A tabla:\n");
printf("\n ");
for (i=0; i<TABLA_MERET; i++) {
printf("%c ",'A'+i);
}
printf("\n");
for (i=0; i<TABLA_MERET; i++) {
printf("%d ", i+1);
for (j=0; j<TABLA_MERET; j++) {
if (tabla[i][j] != '\0') {
printf("|%c", tabla[i][j]);
} else {
printf("|%c", '.');
}
}
printf("|\n");
}
printf("\n");
}
int main() {
char tabla[TABLA_MERET][TABLA_MERET];
int i, j;
char input[3];
for (i=0; i<TABLA_MERET; i++) {
for (j=0; j<TABLA_MERET; j++) {
tabla[i][j] = '\0';
}
}
futo(tabla, input);
gyalog(tabla, input);
futolepes(tabla);
kiir(tabla);
return 0;
}
Ez igy elszall hibaval a futolepes fuggvenyben, meghozza ha minden igaz az oszlop erteke miatt. Hogy lehetne oda atadni a futo aktualis helyzetet a a futo fv-bol? tabla[sor][oszlop]
Ha a gyalog fuggveny fut le elobb, mint a futo fv, akkor jo.
koszi, udv,
Ambulimax Provider
Jester01
veterán
Ahogy mondod
Mivel a main a kapcsolat a futo és a futolepes között, így először futo-ból kellene visszaadni a main-be, majd onnan tovább. A helyzetet bonyolítja, hogy 2 értékről van szó. Egy lehetséges megoldás ha definiálsz egy struktúrát a két értéknek és azt adogatod, valahogy így:
struct pozicio
{
int sor;
int oszlop;
};
struct pozicio futo(char tabla[TABLA_MERET][TABLA_MERET], char input[3])
{
struct pozicio p;
...
return p;
}
...
void futolepes(char tabla[TABLA_MERET][TABLA_MERET], struct pozicio p)
{
...
}
...
int main()
{
struct pozicio p;
...
p = futo(tabla, input);
gyalog(tabla, input);
futolepes(tabla, p);
...
}
A naív megoldás persze a globális változók használata lenne, de az általában nem ajánlott.
Jester
artiny
őstag
C programot átírni, valaki megtudná csinálni?
Van egy alap program:
ez egy szotar akar lenni..
Randomban adja a magyar szavakat es angolra kell forditani. Ha nem jo akkor kiirja a helyes megoldast. MIkor kilepunk a programbol akkor irja ki azokat a szavakat amire rosszul válaszotltunk.
Itt a magyar vezioja /Szaab nevű programozó érdeme/:
http://pastebin.com/ViFeNimB
Itt pedig a szlovak,amiben több minden meg van valositva/be van fejezve/
http://pastebin.com/jbP8N18F
Ezt a programot kell átiri:
Olyan feladat van,hogy az előző szótárt kell át írni,hogy ezt a fájlt CSV /ezt kell használni/ olvassa be:
http://www.mediafire.com/?057r7i17uklqi7t
El kell tárolni a helyes/nem helyes válaszok számát egy csv fájlba/azt hiszem hogy a slovnik.csv fájlba/ és dolgozni/számolni vele ha újra belép a felhasználó. A program engedélyezi/lehetővé teszi ,hogy újabb szavakat tudjon a felhasználó elmenteni a szótár fájlban és azokat abcd szerint lesznek majd sorba téve.
A baj hogy mar az elejen elakadtam...
Ha beolvasom a csv fájlt:
FILE *doo = fopen("slovnik.csv", "r");
ekkor:
hlboko;deep;0;0
igy teszi ki nem pedig csak a hlboko szavat.Hogyan kell megcsinalni hogy csak a hlbko -t irja ki?
artiny
őstag
CSV fájl szétdarabolása strtok () függvény segítségével?
Ilyan adat szerepel a csv fájlban.
akcia;action;0;0
autobus;bus;0;0
budova;building;0;0
celkom;quite;0;0
centrum;centre;0;0
ezt csv fajlban hogyan kell szetdarabolni?
Beolvasas a csv fájlnak és szetdarabolas majd kiiratas..hogyan kéne?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *doo = fopen("slovnik.csv", "r");
fclose(doo);
return 0;
}
Strtok()
Example:
char str[] = "now # is the time for all # good men to come to the # aid of their country";
char delims[] = "#";
char *result = NULL;
result = strtok( str, delims );
while( result != NULL ) {
printf( "result is "%s"\n", result );
result = strtok( NULL, delims );
}
OUTPUT:
result is "now "
result is " is the time for all "
result is " good men to come to the "
result is " aid of their country"
artiny
őstag
tudtok segiteni..egy olyan felaladgyujtemeny kene ami kezdoknek programok vannak es megoldasokkal egyutt? C ben
MacCaine
őstag
Ez engem is érdekelne. C, C++, assembly nyelv is.
WonderCSabo
félisten
Még mindig nem sikerült összehozni? char delims[] jelen esetben ";", egy külső ciklussal soronként beolvasod a fájlt, egy belső ciklussal meg szétdarabolod ahogy a példában van írva.
artiny
őstag
igen sajnos nem sikerult...
ezert most neki allok minden fele ebooknak ami van C bol es elolvasom oket ..majd gyakorlasnak szeretnek egy feladatgyujtemenyt hogy ha nem megy a porgram akkor legalabb lassam,hogy kellet volna...
Zefír
őstag
Sziasztok!
Egy olyan kérdéssel fordulnék felétek, hogy szeretnék megtanulni c-nyelveken programozni, viszont jelenleg, nincsen pénzem megvenni programozó könyveket, ezért valami olyan lehetőséget keresek, ami letölthető netről, és az alapoktól bevezet a C-programozásba, ja és persze MAGYAR. A végső célom, hogy objecitve orientált programozzak, mobileszközökre szeretnék fejleszteni, ( de persze ez csak egy cél, amit kitűztem, majd idő kőzben elvállik.)
Bocsánatot kérek, ha a topikban leírtátok 1000-szer, de nagyonsokszor az van, hogy megtalálok egy jó könyvet, letöltő linkel, és elavult, leszedték a szerverről, ezért szeretnék aktuális választ kapni.
Talán még az fontos lehet, hogy MAC-em van, (osx lion) bár ez nem befolyásol semmit.
Előre is hatalmas köszönet a válaszokért!!!!
Üdv: Andrew
kispx
addikt
Zefír
őstag
Köszönöm a válaszodat!! Ma este beleis csapok a lecsóba
artiny
őstag
Olyan progit akarok,ami egy kisebb szamot...harmadik gyokre emel amit beolvassunk a billentyuzetrol...de mikor megadok egy szamot...mindig ketszer keri be a szamot mire kiirja:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int a;
scanf("%d\n",&a);
a= a*a*a;
printf("%d\n",a);
return 0;
}
Korcsii
őstag
scanf-be nem kell \n, mivel az pont az az enter, amivel el akarnád küldeni...
vorosbv
csendes tag
Sziasztok! Egy kis segítségre lenne szükségem! Nemrég kezdtem a programozást, és van egy félévi feladatom, amit el is kéne magyarázni, de az egyik részét nem igazán értem! Ez lenne az:
int ellenorzes (char *str) {
if (!str || !*str)
return 0;
char c;
while(c=*str++)
if(c<'0' || c>'9')
return 0;
return 1;
}
Ez egy telefonszám-ellenőrző program részlete, és főként az első 3 sorát nem vágom. Persze a tanár abba kérdezett bele (miért *str, miért char van előtte, mi a funkciója, mit jelent az alatta lévő sor...). Nagyon nagy segítség lenne, ha leírni vki ennek az egésznek az értelmét!
WonderCSabo
félisten
Nézz utána, mi az a pointer, mi az a C string, és a kettőnek mi köze egymáshoz. Ha ennyire alap dolgokat nem tudsz, akkor sztem így fórumon nincs értelme magyarázni.
Jester01
veterán
Főleg, hogy ennek olyan szaga van, hogy valakivel megíratta a tanár meg lebuktatta...
Jester
artiny
őstag
/C/ hogyan irjuk meg olyan feladatokat amik ugy szolnak, pl. irjon programot ami addig olvas be karaktereket amig nem adjuk meg az X -et?
Ez igy helyes,kezdo szintu megoldas,
Irjon progit ami addig olvasbe karaktereket amig nem adjuk meg az X -et,majd a vegen irja ki hanyszor szerepelt az A betu a beolvasottak kozott.
A kerdesem hogy nem all meg rogton a beolvasas pedig megadtam az X -t ,csak akkor ha az entert lenyomom akkor ertekeli ki hogy megadtam e vagy nem.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define konstans 'A'
int main(void)
{
char b;
int szamlalo=0;
printf("Adjon meg betuket, az 'X' jelzi a veget \n\n");
while(b != 'X'){
scanf("%c",&b);
if (b ==konstans){
szamlalo++;
}
}
printf("\n A betuk szama: %d\n",szamlalo);
return 0;
}
Probaltam volna gets(b); a scanf("%c",&b); helyett,de ez a hiba jon ki:
Compiling...
yt.cpp
D:\VB6\yt\yt.cpp(17) : error C2664: 'gets' : cannot convert parameter 1 from 'char' to 'char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
yt.obj - 1 error(s), 0 warning(s)
VB 6.0 hasznalok
[ Szerkesztve ]
WonderCSabo
félisten
gets(&b)
Enter nyomás nélkül nem tudsz adatot bevinni ezekkel a fvekkel, amennyire én tudom.
[ Szerkesztve ]
artiny
őstag
koszi szepen
getchar,gets,scanf ezeken kozzul melyik a jo megoldas ilyes fajta feladatoknal?
WonderCSabo
félisten
Mindegyiknél Enterrel viszed be az adatot.
Jester01
veterán
Azok közül csak a gets vár entert, a többinél csak azért látszik úgy, mert az alatta lévő réteg eleve soronként pufferel. Ennek kikapcsolása vagy megkerülése sajnos platformfüggő.
Jester
WonderCSabo
félisten
Kösz a korrekciót, bár a végső megállapításom sztem azért helyesnek tekinthető.
artiny
őstag
köszi a válaszokat
esetleg erre:
pl. irj egy fol progit ami bekér egy számot,ha páros,akkor irja ki a felét a számnak ,ha nem akkor irja ki a haromszorosát es adjon hozzá egyet. Csak akkor áll le a progi ha valamelyik érték 1 -s lessz. pl. 3 számra ezt fogja kiirni 3, 10, 5, 16,
8, 4, 2, 1. Gondolod hogy valaha is megáll a program futása.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int a,d,egy = 1;
scanf("%d",&a);
do{
d=a%2;
if (d == 0)
{
printf("\n%d ",d=a/2);
}
else{
printf("\n%d ",d=a*3+1);
}
}while(d != '1');
return 0;
}
Erre jutottam,de valmi gond van vele
Jester01
veterán
Van több is
while(d != '1');
Ide nem karakter konstans kell, csak simán egy szám.
Másik probléma, hogy a d-be számítod ki az új értéket de az a-t használod.
Kicsit letisztázva ilyesmi lehet:
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
do
{
if (a % 2 == 0)
{
a = a / 2;
} else {
a = a * 3 + 1;
}
printf("%d\n", a);
} while (a != 1);
return 0;
}
Jester
S egyebkent a printf-ben az ertekadas mukodne?
[ Szerkesztve ]
artiny
őstag
Köszi szépen
esetleg erre valki:
C ben hoyan kell txt böl beolvasott számokat osszeadni, mivel karakterenkent kezeli oket ezert az ASCII ertekuket adja ossze?
Korcsii
őstag
Legegyszerűbb talán (s)sanf-fel egyből számkénet beolvasni...
birno:
Lehet, hogy működne (miért is ne?), de nem szép, szerintem a (gépi)kód sem lesz egyszerűbb tőle, sőt... Írjunk leforduló C programot minél rövidebben címűversenyben van szerintem csak helye.
[ Szerkesztve ]
Téma tudnivalók
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Mai Hardverapró hirdetések
prémium kategóriában
- ZOTAC GeForce GTX 1080 AMP Edition 8GB GDDR5X 256bit
- Filmes gép gyűjtemény
- Nikon D5000 + AF-S DX NIKKOR 18-105 mm
- Bontatlan Seagate & Western Digital HDD-k 3TB - 12TB -ig - Számla + Garancia, Ár alatt! BeszámítOK!
- DJI Mini 4 pro FMC drón - 3 akku, RC2 táv, 2 táska, Filterek, 2025. decemberig garancia, DJI Care