- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Parci: Milyen mosógépet vegyek?
- Fire/SOUL/CD: INGYENES Clone és Backup-Restore alkalmazások tesztje [2024]
- btz: Internet fejlesztés országosan!
- Tomasz72: Ventilátor upgrade
- sziku69: Fűzzük össze a szavakat :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Magga: PLEX: multimédia az egész lakásban
- Lalikiraly: SÜNI energiaital.
Új hozzászólás Aktív témák
-
[pod]Diablo
őstag
Hello!
Hogyha egy tomb i.edik elemet ossze akarom hasonlitani a mogotte,es/vagy az elotte levo elemmel,pl megakarom nezni hogy nagyobb-e az elotte levo elemnel,azt hogy tudom megoldani?
Elore is koszonom a segitseget!
-
kingabo
őstag
A pointerezést holnap megpróbálom összeírni, meg a "mágiás" részt. már ha elfogadod tőlem, nem írja meg elöbb senki sem, nem google-zol rá
"Ja a lényeg kimaradt: a zh példában ha jól emlékszem 8x8-as tömb volt megadva."
Ez esetben a progi elejére:#define MAX_MERET 8 és tömb deklarációnál ciklusoknál MAX_MERET-et írod be. C-ben nincs const, csak így lehet megoldani, a precompiler fogja minden egyes helyen behelyettesíteni a kódban a MAX_MERET helyére a 8-at. Azért célszerű így csinálni, mert ha valaki azt mondja, hogy mégse 8 hanem 10 elemű a tömb, akkor 1 helyen átírod, újrafordítod és kész is vagy, nem kell mindenütt cserélgetni.aztán meg debuggolni ha valahol mégis kimaradt. A keres + csere működhet, ha a kódban nincs pl 128, de ha van, máris nem lehet keres+cserét használni"Az én hibám hogy AxB-t írtam, de ha kukacoskodni akarnék nem kötöttem ki hogy A!=B
"
Viszont azt se írtad, hogy A==B, ezért vettem úgy hogy nem egyenlők.
Nem bme-s vagyok, nem tudom ott hogy oktatják/nem oktatják a programozás. Számomra teljesen logikus volt, hogy AxB-sre ha nem megy a dolog, akkor megszorítom a kisebb dim szerinti négyzetes mátrixra... -
kingabo
őstag
válasz
FehérHolló #2296 üzenetére
Látom elgurult a gyógyszered...
Arra céloztam, hogy a kisebb dimenzió méretű, négyzetes résztömbre simán működik. Rajtad kívül senki sem akart nem egésszel indexelni. -
Cicero
őstag
válasz
FehérHolló #2296 üzenetére
Hehe kár hogy nincs like gomb
Még nem sikerült teljesen értelmeznem a hsz-okat hogy is kéne ezt a 2D tömböt megadni a függvénynek - ma már nem is állok neki
-, de hálás lennék ha valaki tudna valami szájbarágós forrást adni a pointerek állatfajtáról (annyit már tudok hogy a tömb tulajdonképpen egy pointer az első elemre), vagy még hálásabb ha leírná saját szavaival hogy mit ért belőle
A lentebb említett mágiás példáknak is nagy hasznát venném!Tulajdonképpen előző félévben itt vesztettem el a fonalat, és tökre érthetelen maradt számomra a dinamikus adatszerkezetek, láncolt listák, fifo stb témakör (azaz a házi anyaga pl)
Ja a lényeg kimaradt: a zh példában ha jól emlékszem 8x8-as tömb volt megadva. Az én hibám hogy AxB-t írtam, de ha kukacoskodni akarnék nem kötöttem ki hogy A!=B
-
FehérHolló
veterán
válasz
FehérHolló #2294 üzenetére
Neked van igazad, nem nagyon szereti a t[x][y]-t.
-
FireKeeper
nagyúr
válasz
FehérHolló #2274 üzenetére
szerencsére ez a prog2 már nem tartozik Vitéz fennhatósága alá. amúgy több kisfeladatból csak ez az egy okozott problémát, de még egyszer köszi a megoldást, és a tanácsot is!
-
kingabo
őstag
válasz
FehérHolló #2286 üzenetére
AxB-s tömböt írt a feladatban.
Ha hajtogattál valaha életedben meg simán el tudnád képzelni, hogy oldható meg nem négyzetes mátrixra is.
(#2284) Karma: a megszokás hatalma. C++-ban nálam mindkét bemenő param const lenne és így már teljesen igaz amit mondtam. Én nem tartom szépnek a bemenő paraméterek változtatását, ha nem címszerintiek (de izlések és pofonok), de pl adában nem is változtathatod meg. Azt meg ne döntsd el, hogy megbuknék-e
Pláne éjjel 2kor.
-
Korcsii
őstag
válasz
FehérHolló #2286 üzenetére
ja hogy vill, akkor az előző hozzászólásom indító kérdése is tárgytalan...
fáradt voltam tegnap, hogy ez beugorjon -
Karma
félisten
válasz
FehérHolló #2285 üzenetére
Az első verzió szerintem nem működne, a második viszont pontosan az az indexmágia, amit így ködösen megemlítettem
-
FehérHolló
veterán
Érzésem szerint miután átadta int** t formában, lehet t[n ][m ] módon turkálni benne, át fogja fordítani *(*(t+n) + m) alakra (az n és m sorrendjében most nem vagyok biztos).
Én egyébként anno egy hasonlót úgy oldottam meg, hogy int* típust vettem át és *(t+M*n+m) módon mászkáltam benne, de az első módon lehet reprezentálni két dimenziós bejárással is.Bár nagyon reggel van...
-
Karma
félisten
válasz
kingabo #2282 üzenetére
"A sizex-et add át egy lokális változónak, mert azt nem változtathatod."
WTF?! Érték szerinti átadásról hallottál-e már? Ha egy 4-es literált adsz be, akkor is működni fog, hiszen lokális változóként viselkedik. (Ráadás válasz: most buktál meg egy prog1 vizsgán ezért.) De basszus már majdnem elbizonytalanítottál.
-
kingabo
őstag
A sizex-et add át egy lokális változónak, mert azt nem változtathatod. (mi van ha const 4-el hívom meg?
) Illetve ha nem négyzetes a mátrix, akkor kellene a sizey is. Illetve szerintem egy új tömbbel kéne visszatéred, hogy az eredetit ne rontsd el. Az első sorban az int x lenne a visszatérési érték és az fv neve? Tömböt kéne visszaadnod, meg egy beszédesebb nevet az fv-nek. Ja és nem ártana egy return is, ha már van visszatérési érték.
-
Karma
félisten
válasz
FehérHolló #2278 üzenetére
A t[][] hogy a bús viharba lenne jó elgondolás? Kétdimenziós tömb átadásakor az első dimenziónak fix méretűnek kell lennie (pl.: t[5][]), különben a fordító nem fogja tudni az elemek méretét, így nem lehet tömb. Vagy pointermágia kell, vagy egydimenziós tömb és indexmágia.
-
-
Cicero
őstag
No elvileg ez lenne a megoldásom:
int x (int t[][], int sizex){
int tmp, countx=0, county=0;
while(sizex!=0){
tmp=t[sizex-1][county];
t[sizex-1][county]=t[countx][county];
t[countx][county]=tmp;
countx++;
county++;
sizex--;
}
}Közben rájöttem, hogy valszeg a zárthelyiben elronthattam, mert felvettem egy sizey-t is és abból is kezdtem el kivonogatni, ami meg a tömb tök másik felén van...
Nyilván, főleg hogy én álltam neki programozni
-
Cicero
őstag
válasz
FehérHolló #2276 üzenetére
Hmm ez érdekes. Mert ezek szerint jól írtam meg a zh-ban az első feladatot ami 2 pontot jelentett (azaz meglett volna a zh), mégsem jött össze a dolog.
Amúgy BME-VIK prog1. Mindegy, megírom a feladatrészt, megköszönném ha rápillantanál!btw jól gondolod, meg kellett adni a tömb méterét paraméternek!
-
Cicero
őstag
Sziasztok! Egy kis segítség kéne C-ben!
Adott a feladat: írni kell egy függvényt, ami bekér egy AxB tömböt és a tömb testátlóin elhelyezkedő számokat felcseréli a másik átlójában lévőkkel ( X pattern szerű csere ).
Már ott elakadtam, hogy adjak meg paraméternek egy két dimenziós tömböt. Nyílván az int t[][] nem lesz jó, hiába működik 1D-re...
Ebben ha tudnátok segíteni örülnék, mert a többi része szerintem jó lesz! -
FehérHolló
veterán
válasz
FireKeeper #2273 üzenetére
Nem azért, de ez egy Vitéz típusfeladat.
Másrészt a jövőre nézve nem ártana átgondolnod, hogy miért működik kezd[k] tömbbel és *(kezd+k) alakban is a program, satöbbi. Magyarul értsd meg, különben elég hamar bajban leszel.
-
FireKeeper
nagyúr
válasz
FehérHolló #2272 üzenetére
háh köszi
örök hála!
am igen, ez a második házi egyik részfeladata. lehet te vagy a gyakvezérem??? -
FehérHolló
veterán
válasz
FireKeeper #2271 üzenetére
1. castold át char*-gá
int i = 42;
char* kezd = (char*) &i;2. menj végig a memóriaterületen
for(int k = 0;k<sizeof(int);k++)
{
printf("%X ",(unsigned) kezd[k]);
}Ez a C++ fordítós szintaxis. Ha csak sima C fordítód van, akkor az értékadásokat pakold külön sorba, azt kész.
Azt hiszem, ennyi a második prog gyak házi. -
FireKeeper
nagyúr
sziasztok!
Az lenne a feladatom, hogy kiírjam egy int-hez tartozó memóriaterületet byte-onként hexa számrendszerben. Odáig tiszta, hogy ehhez nem lesz jó az int* típusú pointer, mivel az 32bites, ezért char* típusúvá kéne tenni, hogy ugyanoda mutasson, mint az int pointer, csak éppen char* típusú legyen.
Azt vajon így kéne csinálni?int i= <valami szám>;
int *i_ptr=&i;
char* c_ptr=(char*)i_ptr; -
j0k3r!
őstag
válasz
RexpecT #2268 üzenetére
ablak bezarodas ellen a program elejere (includeokhoz)
#include <conio.h>
aztan a return 0; ele uj sorba:
getch();(#2269) RexpecT: a system("pause"); egy rendszerhivas, de errol mar linkeltem korabban. a return 0; pedig a programod visszateresi erteke, ami helyes mukodes eseten 0, ellenkezo esetben mas.
-
j0k3r!
őstag
válasz
RexpecT #2265 üzenetére
bar nem sokat c-ztem eddig, de szerintem valami ilyesmi (de az okosabbak majd kijavitanak, ha nem)
#include <stdio.h>
int main()
{
float sum = 0;
int max = 3;
for(int i = 0; i < max; i++)
{
float tmp = 0;
printf("Kerem a(z) %d. szamot : ",i + 1);
scanf("%f",&tmp);
sum += tmp;
}
printf("Atlag: %f\n", sum/max);
return 0;
}system("PAUSE");
ezt meg hanyagold
[ Módosította: philoxenia ]
-
RexpecT
addikt
Még most kezdem a programozást, és írtam egy kis átlagszámoló progit. Szeretném ha törtszámokat is összeadna, de hiába írom át floatra a változókat.
#include <stdio.h>
#include <stdlib.h>int main()
{
int atl;
int i;
int osszeg=0;
int t [20];
for(i=0;i<5;i++)
{
printf("Kerem a(z) %d szamot : ",i);
scanf("%d",&t);
osszeg+=t(i);
}
atl=osszeg/i;
printf("Atlag: %d\n",atl);
system("PAUSE");
return 0;
} -
-
bpx
őstag
válasz
Bobrooney #2261 üzenetére
ebben ugye nincs nagy mágia, több helyen fog futni a program, nyilván skálázódni fog, attól függően, hogy milyen jól tudtad a feladatot partícionálni meg a kommunikációt megszervezni (minél kevesebb legyen)
nekem a PWM szimpatikusabb volt, mert az MPI első látásra kicsit bonyolultabb szerintem, de mind a kettő teljesen jól használható
-
Bobrooney
senior tag
Srácok nálam ez elég gyerekcipőben jár, kezdetben csak tesztelem h kb mekkora gyorsaság növekedés lenne, erőforrásokat h használ ki stb.. A vége ennek egy nagy véges elem feldolgozó rendszer lenne (ha jól emlékszek rá
) Diákként training-nek úgy érzem ez jó lesz. Nekem a tapasztaltok leírása is jó
-
ArchElf
addikt
válasz
Bobrooney #2257 üzenetére
A megvalósítás (szerintem) meglehetősen OS függő, milyen OS-re szeretnél párhuzamosítani?
Linux alá kellett valami ilyen beadandót csinálnunk a ME-en, ha ebben vagy érintett és érdekel, akkor előtúrom - Bár jobban belegondolva sajna Vadász elhunyt, mióta végeztem - és nem hiszem, hogy még mindig kell operációs rendszerekből ez a hülye beadandó... Szóval ...AE
-
Bobrooney
senior tag
Üdv!
Tudja valaki, hogy lehet-e Cben párhuzamosítani?
-
belong24
csendes tag
Helló! Én egyetemista vagyok, és szoktam vállalni programozási magánórákat olcsón, személyesen és interneten keresztül is(távolságfüggő).
belong24@hotmail.com
-
hello,
Visual Studiohoz (08) kérnék kis segitséget, konkrétan a linker beállításokhoz... adott egy lwIP-t és winpcap-ot használó project, ahol a világért nem sikerül a szükséges librarykre rávezetni a linkert...
1>udptest.obj : error LNK2001: unresolved external symbol "signed char __cdecl ethernetif_init(struct netif *)" (?ethernetif_init@@YACPAUnetif@@@Z)
1>udptest.obj : error LNK2001: unresolved external symbol "void __cdecl ethernetif_poll(struct netif *)" (?ethernetif_poll@@YAXPAUnetif@@@Z)
1>udptest.obj : error LNK2001: unresolved external symbol "void __cdecl ethernetif_shutdown(struct netif *)" (?ethernetif_shutdown@@YAXPAUnetif@@@Z)ezek a függvények mind a pktif.lib-ből származnának, ami már szerepel a
Configuration Properties \ Linker \ General \ Additional Library Directories...
Configuration Properties \ Linker \ Input \ Additional Dependencies...
bejegyzésekben, úgyhogy erőssen megakadtam... -
klambi
addikt
c ben olyan példa lenne hogy 1 max 10 karakter hosszú szöveget a 4 sarokba kéne kiírni, de mindig 1 karakterrel kevesebbet
pl:
medve medve
medv edve
med dve
me me
m ee
ve
dve
edve
medvevalaki valami help??
csak a sarokba írva a jobb felsőt
-
TIKI3
csendes tag
Sziasztok!
Feltetem a codeblocks-10.05mingw-setup.exe változatát. És mikor leszeretném fordítani a programot ezt írja ki:
"ll - Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Nothing to be done.De az alap "Hello world"-t sem fordítja le.
Elöre is köszönöm a segítségeket
-
Gyuri16
senior tag
válasz
Geri9159 #2248 üzenetére
nem csak duplan irja ki, hanem rosszul. a baj az, hogy a fscanf hivas utan ottmarad a bemeneten egy ujsor karakter, amit a ciklus kovetkezo iteraciojaban a fgets megeszik, es csak azzal ter vissza. innen pedig az egesz eltolodik. en azt ajanlom egesz fajlt soronkent olvasd be, akkor nem lesz ilyen baj. a fscanf-s reszt helyettesitheted pl igy:
char tmp[30];
fgets(tmp, 30, fbe);
sscanf(tmp,"%d %d %d %d %d %d",&diakok[diakokszam].szovegszerk,&diakok[diakokszam].prezentacio,&diakok[diakokszam].weblap,&diakok[diakokszam].tablazatkezel,&diakok[diakokszam].adatbaziskezel,&diakok[diakokszam].informatika_ism_konyvtar_internet);tovabba a fgets beolvassa az ujsor karaktert is, ezert a nev valtozodban az is ott lesz (feleslegesen) a vegen. ezert van a kimenetedben is egy sorkihagyas a nev alatt. ugyanez igaz az osztaly valtozodra is, de ott mivel limitalod a beolvasast 4 karakterre nem fer bele az ujsor, igy az jol mukodik, ha pontosan 3 karakter lesz a bemenet.
mod: amit fentebb lineltem faq, ott ez is megvan valaszolva: [link]
sok mas gyakori hibara is kiternek benne, erdemes atnezni -
Geri9159
tag
Sziasztok tudnátok segíteni mert nem jövök rá mi lehet a hiba.
Van egy .txt fájl aminek a tartalma így néz ki:Kiss Gyula
12a 11 13 12 13 12 13
Nagy Judit
12b 12 11 12 22 13 21C-be írtam egy programot ami vissza olvassa a fájl tartalmát ami működik csak duplán írja ki a szöveges fájl tartalmát.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100
struct egydiak{
char nev[N];
char osztaly[N];
int szovegszerk;
int prezentacio;
int weblap;
int tablazatkezel;
int adatbaziskezel;
int informatika_ism_konyvtar_internet;
}diakok[N];
FILE *fbe;
int i;
int diakokszam;
char osztbeker;
main(){
fbe=fopen("Informatika_kozepszintu_erettsegi.txt", "r");
if(fbe==NULL){
printf("Hiba a file megnyitasaban\n");
getch();
exit(0);
}else{
while(!feof(fbe)){
fgets(diakok[diakokszam].nev,99,fbe);
fgets(diakok[diakokszam].osztaly,4,fbe);
fscanf(fbe,"%d %d %d %d %d %d",&diakok[diakokszam].szovegszerk,&diakok[diakokszam].prezentacio,&diakok[diakokszam].weblap,&diakok[diakokszam].tablazatkezel,&diakok[diakokszam].adatbaziskezel,&diakok[diakokszam].informatika_ism_konyvtar_internet);
printf("Nev: %s\n",diakok[diakokszam].nev);
printf("Osztaly: %s\n",diakok[diakokszam].osztaly);
printf("Szovegszerkesztes: %d\n",diakok[diakokszam].szovegszerk);
printf("Prezentacio es grafika: %d\n",diakok[diakokszam].prezentacio);
printf("Weblapkészítés: %d\n",diakok[diakokszam].weblap);
printf("Tablazatkezeles: %d\n",diakok[diakokszam].tablazatkezel);
printf("Adatbazis-kezeles: %d\n",diakok[diakokszam].adatbaziskezel);
printf("Informatikai alapismeretek, Konyvtarismeret es internethasznalat: %d\n",diakok[diakokszam].informatika_ism_konyvtar_internet);
}
}
fclose(fbe);
getch();
}Nem jövök rá hogy miért írja ki duplán. Ha valaki tud segítsen.
Előre is köszönöm
Geri9159 -
Gyuri16
senior tag
gyorsan neztem csak ra, nem vettem eszre a masik hibat. szoval a misztikus scanf..
itt jobban le van irva mint en tudnam:
[link]roviden: ide nem kell a \n, mert az azt okozza, hogy addig olvas be jeleket stdinrol amig whitespace jeleket kap (az ujsor is az). egy ilyen scanf utan ugyan a \n jel ottmarad a bemeneten, de az itt nem baj, mert a kovetkezo beolvasas is float, ami atugorja ezt. ha chart olvasnal be utana, akkor az mar a \n-t kapna meg. ilyenkor nem art a stdinrol beolvasni mindent az ujsorig.
ajanlom megnezni a faq tobbi ide vonatkozo kerdeset is itt: [link] kulonosen a 12.20asat (miert ne hasznaljunk scanf-et felhasznalotol valo bemenetre)
-
Sloane
csendes tag
-
Sloane
csendes tag
Hello,
Egyszerűen nem jövök rá, mi lehet a hiba... fordítási hiba nincs, csak a futtatásnál nem azt csinálja amit kellene neki...
#include <stdio.h>
main()
{
float osztando, oszto, eredmeny;printf("Osztandó= "); scanf("%f\n", &osztando);
printf("Osztó= "); scanf("%f\n", &oszto);if(oszto = 0)
printf("HIBA\n");
else
eredmeny = osztando/oszto;printf("Eredmény= %f\n", eredmeny);
}Egy kis segítségre lenne szükségem.
thx. -
Gyuri16
senior tag
válasz
Carpigabi #2239 üzenetére
ez a pelda:
Britain - Ireland
France - Germany
France - Swiss
Swiss - Germanyha grafnak megrajzolod ket osszefuggo komponense lesz:
1 Britain - Ireland2 Swiss - France - Germany
| |
------------------az elso komponens kromatikus szama 2 a masodiknak 3, ebbol a nagyobb a 3 igy az egesz grafnak is ez lesz a kr. szama.
ez az egesz csak egyszerusites. mivel a fo algoritmus bonyolultsaga exponencialis, ezert jobb, ha minel kisebb grafokon futtatod.
ezen kivul lehet optimalizalni az ismert eseteket is. vannak olyan graf osztalyok amiknek ismert a kromatikus szama. pl:
teljes graf - csucsok szama
csillag graf - 2
korgraf - 2 ha paros szamu csucsa van, 3 ha paratlantovabba azok a grafok amiknek 2 a kromatikus szamuk szinten konnyen felismerhetok, mert ezek pontosan a paros grafok (ha tobb mint 1 csucsuk van..)
ha akarsz kicsit gyorsitani az algoritmuson akar ezeket is be lehet vetni, mivel a fenti osztalyokat polinomialis idoben fel lehet ismerni.
-
Carpigabi
csendes tag
Nem vártam, hogy megcsináljátok, csak segitseget a kromatikus számokhoz ...
szetosztod a grafot osszefuggo komponensekre ... ezt kitudnád fejteni bővebben?
-
Gyuri16
senior tag
válasz
Carpigabi #2237 üzenetére
iskolai feladatot itt helyetted senki nem fogja megcsinalni, viszont segitunk ha elakadsz, es konkret kerdesed van.
a feladathoz:
szetosztod a grafot osszefuggo komponensekre
mindegyiknek kiszamolod a kromatikus szamat es a legnagyobb lesz a megoldas.kromatikus szam egy osszefuggo grafhoz:
binaris keresessel. egy lepesben kibprobalod eleg e m szin (m legyen mondjuk n/2 az elejen, mivel tudjuk, hogy a kromatikus szam maximum n). ezt bruteforce csinalod.
innen a siker fuggvenyeben mindig kizarod a fel intervallumot, es megtalalod a legkisebb erteket amire meg atmegy a szinezes -
Carpigabi
csendes tag
válasz
Gyuri16 #2236 üzenetére
Egy iskolai feladathoz kellene:
Katonai egyenruhakat kellene gyártani, h a haboruban levo orszagok egymast megtudjak különböztetni.
A bemeneti adat:
1.orszag - 2. ország .... ahol 1.orszag szomszédja és ellensége a 2. orszagnak.
eredményben tehát kikell szamitani a minimalis mennyisegű (színű) egyenruhát, amire szükség van ...
Példák:
Britain - Ireland
Szükséges egyenruhák száma: 2Britain - Ireland
France - Germany
Szükséges egyenruhák száma: 2Britain - Ireland
France - Germany
France - Swiss
Swiss - Germany
Szükséges egyenruhák száma: 3 -
Gyuri16
senior tag
válasz
Carpigabi #2235 üzenetére
ez altalanosan egy NP-teljes problema. en nem ismerek semmilyen ertelmes algoritmust, es ugy tudom nincs is ilyen, szoval marad kiprobalni az osszes lehetoseget. kesz programom nincs, de megirni nem nagy feladat.. persze lassu lesz, de jobb nincs.
google talal egy par approximalo algoritmust, esetleg azokat is ki lehet probalni, attol fugg mire kell.
-
Carpigabi
csendes tag
Hali!
Tudna vlki írni / linkeli egy forráskódot, ami kiszámolja egy n csucsu graf. kromatikus számát? -
bpx
őstag
2 "apróság":
1. a checkstrlen függvényben a charlen változó növelését is a ciklusba kellene tenni, mert így ha nem üres a string, mindig 1 lesz az eredmény
while(*str)
{
*str++;
charlen++;
}2. mainben a ciklus nem az igazi
jelenlegi formájában soha nem vizsgálja az utolsó argumentumot
a számolást 1-től kezdi, de a feldolgozást meg a 0. elemtől, így mikor eléri a ciklus végét (argc), akkor még marad 1 feldolgozatlan argumentumlegegyszerűbb pl. a ++ operátort postfix-ről prefixre cserélni (ugye az a különbség, hogy az előbbi csak a kiértékelés után növel, míg utóbbi már előtte)
strlen=checkstrlen(*++argv);
-
CPT.Pirk
Jómunkásember
Figyelj, nem állok neki kommentezni, ezt a progit nem látom át. Pár hsz-el arrébb írtam egy strlen-t, ami nem tökéletes, a több szóközt is egynek számolja, de attól független működik, és érthető.
Azt esetleg kommentezhetem, csak aztán Zamek kérdez egyet keresztbe, és hopp... Ráadásul azt a kódot is egy sorstársadnak írtam, jobbat per pill nem tudok.Szal azt mondom, ha át akarsz menni a tárgyból, akkor a C könyvet olvasd el, aztán googlere fel, for ciklus, string műveletek, stb.
-
kolyka
csendes tag
-
CPT.Pirk
Jómunkásember
Hmm, milyen ismerős ez a feladat a villany karról.
Az első csak annyit csinál, hogy kiírja, amit a program kapott a standard input bemenetére, szavanként.
A második egy pointerrel dolgozik, de ezeket így egy fájlba kellene tenni, hogy a standard inputra érkező szöveget megszámolja karakterenként. Egyébként nem tudom, hogy a prog1-eseknek kell-e pointerrel dolgozniuk, mintha az a prog2 anyaga lenne, már régen volt. Ilyen megoldást a prog3-ban használtunk stringek nézegetésére.
Egyrészt használd a programkód gombot kód beillesztésekor, másrészt picit olvass vissza pár hozzászólást, ha már az strLen()-t írod.
-
kolyka
csendes tag
Sziasztok!
Az a helyzet h nem értek a programozáshoz. Kaptam egy programot, ami elvileg működik és ezt be kell mutassam a tanáromnak. Csakhogy a gond ott kezdődik, hogy el is kell neki magyarázni... Szóval szeretném, hogy valami hozzáértő ember átnézné a progit és irna nekem egy kis leírást róla! A program C nyelven íródott!
Feladat: Írja meg a strlen() függvényt
Tipp: a függvény működéséről itt olvashat. (http://www.gnu.org/software/libc/manual/html_node/Copying-and-Concatenation.html#Copying-and-Concatenation)
Szükséges libc függvények: printf()
A kapott progi: (main.c)#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[]){
int i=0;
int strlen=0;
for(i=1; i<argc; ++i){
strlen=checkstrlen(*argv++);
printf("karakterekc:%d\n",strlen);
}
return 0;
}És még egy hozzá: (check.c)
int checkstrlen(char *str){
int charlen=0;if (!str)
return 0;while(*str)
*str++;
charlen++;return charlen;
}Válom mielőbbi segítségeteket! Előre is köszi
-
tener
csendes tag
Üdv.
Segítséget kérnék C nyelvű programozásban, elakadtam egy programnál és segítségre volna szükségem! Aki tud segíteni, Neki megköszönném, és akár pénz fejében is honorálnám.
Köszönöm előre is! -
CPT.Pirk
Jómunkásember
válasz
Jester01 #2220 üzenetére
Linux alatt (mint10, Ubuntu alapú) a gcc hiba nélkül megcsinálja az a.out fájlt, csak mikor futtatnám ./a.out, akkor kiírja, hogy hozzáférés megtagadva. Sudo meg sh, stb.-vel futtatva meg azt írja, hogy egy ")" hiányzik, de nem írja honnan. Az biztos, h. nem az én kódomból, mert akármit fordítok le, mindig ezt hiányolja. A 9-es mintel még simán forítottam gcc-vel.
Egyébként igen, 1szóközt feltételez a dolog, ha jól néztem, win alatt a több szóköz is csak egynek számít a cmd-ben.
-
Jester01
veterán
válasz
CPT.Pirk #2217 üzenetére
Ha bővebbet tudnál mutatni a linuxos hibáról akkor abban esetleg tudnánk segíteni.
Ami a kódot illeti: az i,j,len változókat kirakni globálisba nem szép dolog, tedd őket bele az strLen függvényedbe. Az if (i==1) len=0 felesleges mivel ha nem volt argumentum a len úgyis nulla. Az i-t ellenőrizni pedig megtévesztő, hiszen tulajdonképpen az argc-t akarod vizsgálni (persze az értéke ugyanaz lesz, csak logikailag gubancos).
Továbbá szebb lenne, ha a kiírás nem az strLen-ben lenne, hanem a main-ben az strLen visszatérési értéke alapján.
Ha jól értem a logikát, akkor az argumentumok között egy szóközt feltételezve korrigálod a hosszt. Ez ugye addig jó amíg tényleg annyi van. Ha a felhasználó egyetlen argumentummal futtatja akkor nyilván jó eredményt fog adni egyébként.
$ cat >test.c
#include <stdio.h>
int strLen(int argc, char *argv[]) {
int i, j, len = 0;
for (i = 1; i < argc; i++)
for (j = 0; argv[i][j]; j++)
len++;
if (argc > 2) len += argc - 2;
return len;
}
int main(int argc, char *argv[]) {
printf("hossz: %d\n", strLen(argc, argv));
return 0;
}
$ gcc -Wall -O2 test.c
$ ./a.out hello world
hossz: 11
$ ./a.out "hello world"
hossz: 11
$ ./a.out hello world
hossz: 11
$ ./a.out "hello world"
hossz: 13 -
kirket
csendes tag
Hali!
Sima C programba szeretnék usb joystick-ot kezelni csak nem tudom hogy lehet, a neten találtam C++-os példákat de sima C-set nem. Pedig gondolom nem lehet nehéz mert a Windowsnak van játékvezérlő kezelő alkalmazása.
Ha valaki tud valamit ajánlani vagy példa kódot adni azt meg köszönném. -
CPT.Pirk
Jómunkásember
válasz
Jester01 #2216 üzenetére
Az a gond, hogy az egyszerű dolgokhoz bevált linuxos gcc-s fordítás nem akar menni nálam, vagyis a lefordított fájlt nem engedi futtatni, hozzáférés megtagadva hibát kapok, aztán emelt hozzáféréssel meg valami ) zárójelet hiányol, de nem a programom hibás, mindegy neki h. mit fordítók le, még egy hello wordnél is ez van, így most kénytelen vagyok win alatt csinálni.
Arra sajnos nem jöttem rá, hogy Linuxon CodeBlocks-al hogyan lehet lefuttatni úgy, hogy kapjon is valami argumentumokat.Szóval akkor win alatt egyszerűen a cmd szedi ki a fölösnek ítélt spaceket?
Átírtam most külön fgv-be a dolgokat, valamint tettem bele vizsgálatot arra, ha nincs argumentum.
#include <stdio.h>
int i, j, len = 0;
int strLen(int argc, char *argv[]){
for (i = 1; i < argc; i++)
for (j = 0; argv[i][j]; j++)
len++;
if(i==1){
len = 0;
}
else
len = len + (i-2);
printf("hossz: %d\n", len);
return len;
}
int main(int argc, char *argv[]){
strLen(argc, argv);
return 0;
}warningot nem kaptam, korrekt amit csináltam?
-
Jester01
veterán
válasz
CPT.Pirk #2215 üzenetére
1. A programokat az operációs rendszer indítja, tipikusan másik programok kérésére. A main függvény argv/argc paraméterei a c/c++ nyelv szabványosított formája a program argumentumok kezelésére (mármint nem a nevükre gondolok itt, mert az ugye bármi lehet). Az argumentumokra általában nincs olyan megkötés, hogy nem tartalmazhatnak szóközt. Ha tehát a hívó program beleteszi őket, akkor te meg is fogod kapni. Vagyis csak az a kérdés, hogy a hívó programot hogy veszed rá erre. Windowson a hívó például lehet a parancsablak, a cmd.exe. Ezesetben értelemszerűen idézőjeleket használva valószínűleg jó lesz. Továbbá, ha nem platformfüggetlen kódot írsz, akkor windowson egyben is lekérheted az egész parancssort, a GetCommandLine függvénnyel (bár nem tudom a szóközökkel ezesetben mi lesz).
2. Az argv továbbadása. Az argv nem valami mágikus paraméter, csak egy sima string tömb. Mint ilyen, természetesen akár egészben akár darabokban továbbadhatod másik függvényeknek, pont úgy mint bármilyen más string tömböt. Az argc meg csak egy szerencsétlen int, azzal még ennyi gond sincs.
-
CPT.Pirk
Jómunkásember
Köszi srácok! A belső ciklust felejtettem el megcsinálni, így most jó lett:
- a szóközt is számolom, az első szóköz és a lezáró 0 közti karaktereket számolja
#include <stdio.h>
int i, j, len = 0;
int main(int argc, char *argv[]){
for (i = 1; i < argc; i++)
for (j = 0; argv[i][j]; j++)
len++;
len = len + (i-2);
printf("hossz: %d\n", len);
return len;
}Hogyan lehet az argc, *argv[] -vel bekért karaktereket egy másik függvény számára átadni? Igazából úgy lenne frankó, ha a számolás nem a mainben lenne, bár így sem rossz.
-
bpx
őstag
válasz
CPT.Pirk #2210 üzenetére
a szövegbekérést hiányoltam, de most már látom, hogy a parancssori argumentumokra gondoltál
a problémát még mindig nem teljesen értem, ha már sikerült kiíratni az argumentumokat egyenként, akkor a hossznak is mennie kellene
ha az argv-t próbálod karakterenként kiíratni az nem fog menni (char ** ugye)ciklussal végigmész az argv-n, azzal minden egyes lépésben egy adott argumentumot vizsgálsz, egy belső ciklussal meg magán az aktuális argumentumon mész végig, pl.
int i, j = 0;
for (i = 0; i < argc; i++)
{
printf("argv[%d] - ", i);
for (j = 0; argv[i][j]; j++)
{
printf("%c", argv[i][j]);
}
printf(", hossz: %d\n", j);
}szerk: ja persze, én közben telefonáltam is és megelőztek
-
Gyuri16
senior tag
válasz
CPT.Pirk #2210 üzenetére
remelem ez segit:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
int i;
for (i=0; i<argc; i++) {
printf("argv[%d] = ",i);
printf("%s\n", argv[i]);
printf("strlen: %d\n", strlen(argv[i]));
printf("betunkent:\n");
int j = 0;
while (argv[i][j++]) {
printf("%c\n", argv[i][j]);
}
// pointeresen:
char * a = *(argv+i);
while (*a++) {
printf("%c\n", *a);
}
}
return 0;
} -
CPT.Pirk
Jómunkásember
Valami biztos, de honnan? Csak a lényeget copyztam be.
Szóval a standard inputra érkező karaktereket szeretném megszámolni.
Pl. progi.exe asd fgh jklmAz simán megy, hogy hány argumentumom van, meg azokat ki is tudom íratni, de argumentumot karakterenként kiírni nem tudom, az nem akar sikerülni.
-
CPT.Pirk
Jómunkásember
Ha így kérek be szöveget:
int main(int argc, char **argv)
Akkor hogy lehet hozzá alakítani az strlen függvényt?
strlen:
int strlen(const char *s)
{
int len = 0;
while(*s++) len++;
return len;
}Meg kellene számolnom a bemenetre érkező betűket az strlen() használata nélkül.
-
Peteeke
csendes tag
válasz
Zalaymate #2204 üzenetére
Szia!
Nekem volna erre egy példám.
Nekem is kelett ilyen menüszerkezetet csinálnom.int main()
{
int ch;
while(ch!=27)
{
menu();
ch=getch();
switch(ch)
{
case'1':ascii();break;
case'2':file();break;
case'3':kor();break;
case'4':szamol();break;
}
}
return 0;
}
void menu()
{
printf("\n\n\t M\tE\tN\tU\t\n");
printf("\n\n");
printf("\t1. ASCII kodtabla\t\n");
printf("\t2. Szoveges fajl letrehozas\t\n");
printf("\t3. Kor keruletenek es terulet‚nek kiszamitasa\t\n");
printf("\t4. Szamologep\t\n");
printf("\tESC Kilepes\t\n");}
Íme ittvan.a menüt switch -case sel oldaottam meg a ch!=27 aztjelenti,hogy Esc-re kilép.A Menük nevei külön függvényben vannak.Ez egy komplett menü,Ha ezt beírod márcsak hozzáírod a többi alfv-t és kész
-
Zalaymate
senior tag
Hali!
Volna egy beadandó feladatom, amit hétfőn le kell adnom, de nekem ez még magas így csípőből és ezért kérném a segítségeteket!
Egy kis programot kell írnom sima C-ben, ami tulajdon képpen egy kis adatbázis kezelő program.
Elég ha a konzolban fut és ott írja kis a következőket:
Alap menü:
1. Új adat bevitele
2. Adat módosítása
3. Keresés
4. Listázás
5. KilépésAz egyes menüpontokból vissza kell tudjon lépni a főmenübe.
Az adatoknak pedig 3 tulajdonságuk kell legyen: sorszám, név, adat (szöveg)
Lenne erre ötletetek? Elég gázos a helyzet....
-
bpx
őstag
-
Kurik
tag
hm...aha ez is jó progi de mi csak turbo c-t használhatunk vizsgán és azért akartam azon gyakorolni...ha másnak van ötlete azért meghallgatom
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kertészet, mezőgazdaság topik
- PlayStation 5
- Milyen videókártyát?
- Luck Dragon: Asszociációs játék. :)
- World of Tanks - MMO
- Spórolós topik
- Kerékpárosok, bringások ide!
- Mielőbb díjat rakatnának a görögök az olcsó csomagokra az EU-ban
- Anglia - élmények, tapasztalatok
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- További aktív témák...
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
- Újszerű Asus ExpertBook B1 B1500 - 15.6" FullHD IPS - i5-1235U - 16GB - 512GB SSD - Win11 - Garancia
- Redmi Pad Pro, 6GB/128GB, még garanciális
- Honor 200 Pro 512GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo Thinkpad L14 Gen 4 -14"FHD IPS - i5-1335U - 8GB - 256GB - Win11 - 2 év garancia - MAGYAR
- Gamer Laptop, Gamer Monitor és Konzol Felvásárlás Magas Áron, Gyorsan és Egyszerűen!
- MacBook, Apple M1 / M2 kompatibilis dokkolók, DisplayLink 4K, USB-C, Type-C
- BESZÁMÍTÁS! ASROCK B650 R5 7600X 32GB DDR5 1TB SSD RTX 3070 8GB MSI MPG Gungnir 100 Enermax 750W
- BESZÁMÍTÁS! MSI B450M R5 3600 16GB DDR4 512GB SSD RTX 2060 Super 8GB THERMALTAKE Core V21 500W
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest