- iPhone topik
- Vodafone mobilszolgáltatások
- Telekom mobilszolgáltatások
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Eleglide C1 - a középérték
- Milyen okostelefont vegyek?
- Android szakmai topik
- DIGI Mobil
- Android alkalmazások - szoftver kibeszélő topik
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
Hirdetés
-
A legtöbb amerikai szerint a TikTok egy őket befolyásoló eszköz
it Egy felmérés szerint a legtöbb amerikai osztja azon véleményt, hogy a TikTok egy őket befolyásoló eszköz.
-
Nyár végén jön az idei THQ Nordic Digital Showcase
gp Az új bejelentések mellett újabb részleteket kapunk a Gothic Remake-ről és a Titan Quest II-ről is.
-
Eleglide C1 - a középérték
ma Szintet lépett az Eleglide, az egyébként egész korrekt M2 után a C1 sokkal komfortosabb közlekedésre alkalmas.
Új hozzászólás Aktív témák
-
Barett 50cal
senior tag
Hogy tudom megakadályozni, hogy ha a progimba csak számokat irhatok(számologép), de én pl beirok egy betűt vagy 'asd'-ot, akkor ne omoljon össze, neugráljon az egész megstb...
valami parancs.. vagy if(vmi==(szöveg)) akkor ujra kezdje.a szöveg mi C++? mia megfelelelője?
Time you enjoy wasting, isn't wasted time
-
kingabo
őstag
válasz Barett 50cal #2751 üzenetére
Olvass vissza pár hsz-t, ehhez nagyon hasonló dologról volt szó.
-
chabeee
tag
hali
ubuntu alatt valgrindelni szeretnék terminálban, csak nem tudom a megfelelő szintaktikáját valaki tudna ebben segíteni? -
chabeee
tag
sziasztok
eclipse után code::blocksban próbálok programozni, de nem tudom hogy miért fagy ki a progi már az első adatbevitelnél:#include <stdio.h>
typedef struct mystruct {
unsigned int gyev;
int all; //1 - uj, 2 - jo allopotu, 3 - hibas, 4 - totalkaros
double mkm;
}data;
void beolvas (data t[], int n)
{
int i;
printf("BEKERES: \n\n");
for (i=0;i<n;i++)
{
printf("kerem a(z) %d. auto adatait: \n",i+1);
printf("gyartasi ev: \n");
scanf("%d",(unsigned int)t[i].gyev);
printf("megtett kilometer: ");
scanf("%lf",t[i].mkm);
//_flushall();
printf("allapot: ");
scanf("%d",t[i].all);
//_flushall();
}
printf("--------------\n");
}
void kiirat (data t[], int n)
{
int i;
printf("KIIRATAS: \n\n");
for(i=0;i<n;i++)
{
printf("A(z) %d. auto adatai: \n\n",i+1);
printf("gyartasi ev: %d\n", t[i].gyev);
printf("megtett kilometer: %lf\n", t[i].mkm);
printf("allapot: %d\n", t[i].all);
}
printf("--------------\n");
}
int main(){
const int n=10;
data tomb[n];
beolvas(tomb,n);
kiirat(tomb,n);
return 0
}a választ előre is köszi
üdv. Csabi[ Szerkesztve ]
-
Jester01
veterán
válasz chabeee #2755 üzenetére
Hiányzik egy ; a return 0 után, ez gondolom másolási hiba különben nem is fordul. Ezen felül a fordító segítő üzeneteit ne hagyd figyelmen kívül:
t.c: In function 'beolvas':
t.c:19: warning: format '%d' expects type 'int *', but argument 2 has type 'unsigned int'
t.c:21: warning: format '%lf' expects type 'double *', but argument 2 has type 'double'
t.c:24: warning: format '%d' expects type 'int *', but argument 2 has type 'int'Azt próbálja neked mondani, hogy a scanf hívásokban pointert kell átadni, vagyis:
scanf("%d",(unsigned int)t[i].gyev);
-helyett-
scanf("%d",&t[i].gyev);
(annak a castnak amúgy sem volt semmi értelme)Hasonlóan a többire is.
Korcsii: a hiba attól még nem tűnik el. Bár a %u ettől még jó javaslat.
[ Szerkesztve ]
Jester
-
chabeee
tag
válasz Korcsii #2756 üzenetére
igen ez utólagos próbálkozás volt, és ez kimaradt, de közben én is észre vettem, de még sajnos mindig kifagy.
@jester
másolási hiba,amugy nekem a fordító nem ir ki semmilyen fajta segítséget, lehet a mingw helyett vmit mást kéne feldobni ha egyáltalán ez okozza ezt a hibát[ Szerkesztve ]
-
Korcsii
őstag
Egy érdekes kérdés, bár végül lehet mégis maradok a nem szép megoldásnál...
sleep() nélkül, hogyan érdemes valamit időzíteni? Mondjuk ha 3-4 perc elteltével is 1 másodpercen belüli hibahatárral akarunk számolni, és mondjuk egy másodperc alatt több dolgot is szeretnénk időzíteni - mondjuk 128-at vagy 256-ot.
-
PetyaMIK
csendes tag
Sziasztok,
Egy kis segítségre lenne szükségem ...
Nemrég kezdtem tanulni a C nyelvet - kaptam most egy házit ami úgy nézem kifog rajtam ...#include <stdio.h>
int main(){
char kigyok[100][100];
int hosszak[100];
int hossz, index, Edik, legnagyobbHossz, EAdik;index = 0;
Edik = 1;
legnagyobbHossz = 0;
EAdik = 0;do {
printf("%d. kigyo neve? ", Edik);
scanf("%s", kigyok[index]);
if ( kigyok[index] != '*') {
printf("%s hossza? ", kigyok[index]);
scanf("%d", &hosszak[index]);
if ( legnagyobbHossz < hosszak[index]){
legnagyobbHossz = hosszak[index];
EAdik = index;
}
}
index++;
Edik++;
} while ( kigyok[index] != '*');printf("A legnagyobb kigyo %s, aki %d meteres", kigyok[EAdik], hosszak[EAdik]);
return 0;
}a while -ban lévő feltétel nem tetszik neki... - valaki tudna segíteni ?
// a feladatban az van megadva hogy amikor a névnek csillagot adunk meg akkor befejezi a beolvasást és kiírja a leghoszabb kigyót és annak hosszát ... ( ha több egyorma hosszú van akkor azt amelyiket előbb írtam be ... //A segítséget előre is köszönöm!
[ Szerkesztve ]
-
Jester01
veterán
válasz PetyaMIK #2762 üzenetére
A kigyok az kétdimenziós karakter tömb, vagy ha úgy tetszik egydimenziós string tömb. Ezért nem jó a kigyok[index] != '*', hiszen a bal oldal az char* a jobb oldal meg char. Egy lehetséges megoldás, ha a jobb oldalból is stringet csinálsz, és a megfelelő összehasonlítást alkalmazod: strcmp(kigyok[index], "*") != 0
MOD: Továbbá a ciklus vége előtt már növeled az index értékét, így a while feltétel már másik elemet vizsgál. Egyszerűbb lenne, ha a ciklusmagban lévő if feltétel break használatával kilépne a ciklusból, ami amúgy végtelen lenne.
MOD #2: ja és ha csak a leghosszabb kígyót kell kiíratni, akkor teljesen fölösleges mindet eltárolni egy tömbben.
[ Szerkesztve ]
Jester
-
kingabo
őstag
válasz PetyaMIK #2762 üzenetére
Helló!
Jester01 észrevételein felül, while-ba kéne még egy feltétel, hogy ne kérhesd be a 101-edik értéket. Illetve kiíratásnál használhatod az index+1-et is, így nem lesz szükséged az Edik változóra.
Ja és egy kérés legközelebb a kód beillesztése után jelőld ki a kódot és nyomd meg alul a Programkód gombot, úgy nem fognak a tabulálások elveszni.
[ Szerkesztve ]
-
PetyaMIK
csendes tag
válasz robotjatek #2765 üzenetére
Jester1 köszönöm a segítséget - remekül fut a program mostmár - a végtelen ciklust elkerültem úgy hogy index-1 - de köszönöm hogy figyelmeztettél valószinüleg elég sokat kellett volna rajt agyalnom ...
kingabo: megfogadom a tanácsot - próbáltam spacekkal tagolni - de nem engedte... - nemtudtam ill. nem figyeltem hogy így megy ... Köszönöm!
Comrade92: Pontosan PE - elsőéves vagyok most.
-
chabeee
tag
válasz PetyaMIK #2766 üzenetére
progalap házi HAHAHA
amúgy itt egy megoldás hozzá:
#include <stdio.h>
#include <string.h>
int main () {
char nev[30];
char tomb[100][30];
int i=0;
int counter=0;
int max=0;
int hossz;
int tomb2[100];
do{
printf("%d. name: ",i+1);
scanf("%s",nev);
if(nev[0] != '*') {
strcpy(tomb[i], nev);
printf("length: ");
scanf("%d", &hossz);
tomb2[i] = hossz;
}
i++;
counter++;
}while(nev[0] != '*' && i<100);
for(i=1; i<counter-1; i++){
if(tomb2[i]>tomb2[max]){
max=i;
}
}
printf("A leghosszabb kigyo %s, aki %d meteres. \n",tomb[max],tomb2[max]);
return 0;
}[ Szerkesztve ]
-
eriktoth
tag
Üdv!
Olyan gondom lenne, hogy bemenetre meg kell adni egy hatalmas nagy számot ami másodpercben van és a programnak ezt fel kellene bontania hetekre,napokra,órákra,percekre
valakinek esetleg valami ötlet, hogy hogy lehetne megoldani előre is köszönöm -
n00n
őstag
Sziasztok!
Kellene egy kis segítség. Kettő 1 és 10 között lévő véletlen számot kellene generálnom egymás után többször:
do{
num1 = rand()%10+1;
num2 = rand()%10+1;
printf("A véletleszámok: %d és %d.", num1, num2);
szamlalo++
}while(szamlalo < 5);Ez a kódom, viszont itt a program minden lefutásakor ugyanazok a számokat generálja:
7, 1
3, 1
7, 8
6, 6
9, 7De miért?
-
klambi
addikt
szevasztok!
dev-c ben olyat szeretnék hogy 1 txt ben megszámolja hány a, b vagy bármilyen más betű van és txt fájlba írást?"Mond szépen angolul: Gyors róka!"
-
n00n
őstag
Még egy utolsó láma kérdés és ígérem mára befejezem.
srand( (unsigned)time (NULL) );
num1 = rand()%10+1;Úgy így gyárt egy véletlen számot 1 és 10 között.
Viszont mi van, ha nekem 1000 és 8000 között kell pl.
Ilyet találtam, de szerintem ez nem jó:
srand( (unsigned)time (NULL) );
num1 = 1000 + rand()% (8000 - 1000); -
Korcsii
őstag
srand( (unsigned)time (NULL) );
num1 = rand()%7001+1000;Az elvet értsd meg, utána menni fog: a rand() egy 0-sok közötti számot generál. Ha megnézed ennek mondjuk 10-es maradékos osztását, akkor ugye a maradék 0-9. Ha hozzá adsz 1-et, akkor 1-10. Szóval előbb megcsinálod a tartományt, aztán eltolod valamennyivel valamerre...
[ Szerkesztve ]
-
n00n
őstag
http://itcafe.hu/hir/elhunyt_dennis_ritchie_c_programnyelv_unix_bell_la.html
R.I.P.
-
eriktoth
tag
Üdv!
Olyan kérdésem lenne, hogy stdin, és getchar segítségével hogy lehetne valami nagy számot beolvasni? -
Lacces
őstag
Sziasztok!
Lenne egy kis problémám, hogy megfelelőlen olvassam be a mátrixokat és vektorokat, illetve írassam ki.
Pelda input:
4
0 1 −2 4
1 −3 0 2
4 2 −28 1
−1 0 1 1
2
3 0 −21 1
1111
4
−1 −2 0 1
2401
1314
3 8 2 −2
2
−2 7 9 11
2.34 1.245 −3.4 1.234
3
2 3 1.2
2.4 1.6 2.44
−4.6 −10.1 2.34
1
−1.7 5.96 27.21
0Pelda output:
1.00000000 1.00000000 1.00000000 1.00000000
-0.92063492 -0.46031746 -0.19047619 0.26984127
szingularis
1.10000000 −2.50000000 3.00000000szingularis, a második mátrixokra vonatkozik.
Az a baj, hogy néha a bemenet 33-as mátrix, így igen csak gondban vagyok, hogyan lehetne megoldani a main-ben, már próbáltam többszörösen is iterálni a main()-t de nem jött össze.
Valakinek van rá megoldás? Tényleg csak ennyin múlik az egész, ezzel küzdök már 1 napja.#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void inMatrix(int n, double **matrix)
{
int j, i;
for (i = 0; i < n; i++)
{
for (j= 0; j < n; j++)
{
scanf("%lf", &matrix[i][j]);
}
}
}
void inVector(double *vektor, int n)
{
int k;
for (k = 0; k < n; k++)
{
scanf("%lf", &vektor[k]);
}
}
void outVector(double *vektor, int n)
{
int k;
for (k = 0; k < n; k++)
{
printf("%.8lf ", vektor[k]);
}
}
void lup(int n, double **A, double *b)
{
int *Permutation = (int*)malloc(sizeof(int)*n);
int i,j;
double *max = (double*) malloc (sizeof(double)*n);
int m=0, p=0;
int tmp=0, tmp2=0;
int t=0, isSingular=0;
double largestElement=0.0;
double *helpVector = (double*) malloc (sizeof(double)*n);
double *helpVectorA = (double*) malloc (sizeof(double)*n);
double *helpVectorB = (double*) malloc (sizeof(double)*n);
for(i=0; i<n; i++)
Permutation[i]=i;
for(m=0; m<n-1; m++)
{
for(i=m; i<n; i++)
{
max[i]=fabs(A[i][m]);
}
for(i=m; i<n; i++)
{
if(max[i]>largestElement)
{
largestElement=max[i];
p=i;
}
}
for(i=0; i<n; i++)
{
helpVectorA[i]=A[m][i];
helpVectorB[i]=A[p][i];
}
for(i=0; i<n; i++)
{
A[m][i]=helpVectorB[i];
A[p][i]=helpVectorA[i];
}
tmp=Permutation[m];
tmp2=Permutation[p];
Permutation[m]=tmp2;
Permutation[p]=tmp;
if(fabs(A[m][m])>0.00000000000000001)
{
for(i=m+1; i<n; i++)
{
A[i][m]=A[i][m]/A[m][m];
for(j=m+1; j<n; j++)
{
A[i][j]=A[i][j]-A[i][m]*A[m][j];
}
}
}
if(fabs(A[m][m])<0.00000000001)
{
printf("szingularis\n");
isSingular=1;
break;
}
for(i=0; i<n; i++) max[i]=-1;
largestElement=0.0;
p=m+1;
}
if(isSingular==0)
{
if(fabs(A[n-1][n-1])<0.00000000001)
{
printf("szingularis\n");
isSingular=1;
}
}
if(isSingular==0)
{
for(i=0; i<n; i++)
{
t=Permutation[i];
helpVector[i]=b[t];
}
for(i=0; i<n; i++)
{
b[i]=helpVector[i];
}
for(i=1; i<n; i++)
{
for(j=0; j<i; j++)
{
b[i]=b[i]-A[i][j]*b[j];
}
}
for(i=(n-1); i>=0; i--)
{
for(j=(i+1); j<n; j++)
{
b[i]=b[i]-A[i][j]*b[j];
}
b[i]=b[i]/A[i][i];
}
}
}
int main()
{
int k, v,n;
int loop;
double **A;
double *b;
// read dimension of matrix and value
scanf("%d", &n);
//matrix
A = (double **) calloc(n, sizeof ( double*));
//vector
b = (double *) calloc(n, sizeof ( double));
loop=1;
while(n!=0)
{
for (k = 0; k < n; k++)
A[k] = (double *) calloc(n, sizeof ( double));
// read values of matrix
inMatrix(n, A);
// read values of vector
scanf("%d", &v);
for(k=0;k<v;k++)
{
inVector(b, n);
lup(n,A,b);
}
for(k=0; k<v;k++)
{
outVector(b, n);
printf("\n");
}
//free(matrix[k]);
loop++;
}
return 0;
} -
Feribacsi555
senior tag
Sziasztok!
Úgy döntöttem, hogy önszorgalomból nekilátok a c nyelvnek. Ilyen alap szinten írtam már 1-2 programot, de tényleg nagyon alap, gyakorlatilag csak printf és scanf van benne.
Most írtam egy progit, ami elég sok mindent ír ki és egy idő után összefolyik.
Kerestem neten elég sokat, de nem igazán találtam megfelelő függvényt. Színesíteni szeretném a szöveget. De nem mindegyik sort csak 1-2-t.
Én ezt találtam hozzá:
textcolor();
Viszont ezt nem bírja definiálni az alábbiakból:
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <windows.h>Tud valaki segíteni?
Köszi előre is! -
kltz
tag
válasz Feribacsi555 #2786 üzenetére
Hello!
A conio.h tartalmazza csak ugye megadod ,hogy textcolor(2) és utánna cprintf()-el íratod ki amit szeretnél.
Üdv KLtz
-
Feribacsi555
senior tag
Hali!
Nekem valahogy nem megy.
Így néz ki a program eleje:#include <conio.h>
#include <stdio.h>
#include <ctype.h>void main ()
{
float af, bar, bef, afg, gear, gvf, spor, bear, a;
textcolor(2);
cprintf("Megeri-e program v2.0-Feribacsi");Na erre a visual c ezt dobja ki:
error C3861: 'textcolor': identifier not foundVmit rosszul csináltam?
[ Szerkesztve ]
-
kltz
tag
válasz Feribacsi555 #2788 üzenetére
Nem tudom ,mert én csak turbo c-ben fordítok ansi c progikat abban hibátlanul megy. De úgy tudom ,hogy a visual c nem tudja kezelni a conio.h fejfájlt.
Üdv KLtz
-
kingabo
őstag
Ez a szabványos c-ben nincs benne, a Borland tette bele a turbo c-be (meg pascalba), tudtommal.
Feribacsi555 :Ezzel tehetsz egy próbát: changing text color in c
[ Szerkesztve ]
-
Jester01
veterán
válasz Feribacsi555 #2788 üzenetére
Ahogy említették szabvány C-nek ilyen függvény nem része, ez platformfüggő. Windowson nyilván a windows api cuccokat kell használni, pl. SetConsoleTextAttribute (példaprogram ugyanott)
[ Szerkesztve ]
Jester
-
Hujikolp
őstag
Üdv!
Maradék képzéssel nem jutok dűlőre.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
float c,as=0;
int n=100,sum=0,nn=1;
for(c=10,sum=0,nn; c<n; c++)
{
as=sqrt(c);
as=(as%nn);
sum++;
}
return 0;
}C:\Users\Hujikolp\c\Hujikolp\2 jegyu negyzetszamok.c|13|error: invalid operands to binary % (have 'float' and 'int')|
kicsit kusza a kód még, csak a maradékos dolgot akarnám működésre bírni, de nem engedi sehogysem. Sima c-ben, code::blocks programmal.
Majd egy olyat kellene megoldani, hogy a kétjegyű számok között hány négyzetszám van. Arra gondoltam, hogy a számból gyököt vonok, majd maradék számítással eggyel elosztom, ha 0, akkor négyzetszám, ha nem, akkor nem.
-
Korcsii
őstag
válasz Hujikolp #2792 üzenetére
A maradékképzés (xor) általában két egész szám között van, és azért warningol, mert az egyik float. Viszont a math.h-ban van egy olyan függvény, hogy fmod(a,b); /* még soha nem használtam */ Mondjuk math.h nélkül is 3 sor.
Még annyi, hogy az nn-nek mi a szerepe a for-ban?
[ Szerkesztve ]
-
Jester01
veterán
válasz Hujikolp #2792 üzenetére
Pedig elég egyértelmű a hibaüzenet. A % operátor csak egész típusra működik, neked meg float van.
Korcsii: hajnali kettőkor már elnézzük hogy a xor-t valahogy idekeverted
Hujikolp: a feladatra egyszerűbb megoldás lenne a négyzetszámokon végigmenni 100-ig. count = 0; for(i = 1; i * i < 100; ++i) count++;
sokadik mod: ja persze ha konkrétan kétjegyű kell, akkor 4-től nézni.
[ Szerkesztve ]
Jester
-
Hujikolp
őstag
válasz Jester01 #2794 üzenetére
Köszönöm mindkettőtöknek!
egyébként az mindegy, hogy =< vagy <= ?
a for fügvényben, az első kifejezéshez csak azokat a változókat kell felsorolni, amik a feltételhez szükségesek? mert én azért tettem bele az nn-t mert szerepel a függvényben. De gondolom, akkor ez nem szükséges?[ Szerkesztve ]
-
Jester01
veterán
válasz Hujikolp #2795 üzenetére
Nem mindegy, csak a <= a helyes.
A for-ban nem felsorolás van, ott a vessző mást jelent (operátor). Egyik részben sem kötelező semmit megadni. Az első kifejezés a ciklus előtt értékelődik ki egyszer, a második a ciklusban maradási feltétel, minden iteráció előtt fut, a harmadik pedig minden iteráció után.Jester
-
n00n
őstag
Sziasztok!
Lenne egy ilyen kódom:
#include <stdio.h>
#include <ctype.h>
void main(void)
{
int i;
char szoveg[14];
printf("Adjon meg egy maximum 15 karakter hosszú szöveget:\n");
fflush(stdin);
gets(szoveg);
for(i=0; i < 14; i++)
{
if(isalpha(szoveg[i]))
{
szoveg[i] = "a";
}
}
puts(szoveg);
}De mégsem működik. Lecseréli azt a tömb elemet amit kell, de egy zagyva karakterre (fekete rombusz, fehér kérdőjel benne). Valakinek ötlet, hogy mi lehet a hiba?
-
n00n
őstag
Újabb probléma. Ecplise és Ubuntu alatt programozok, viszont nem tudom a pow() függvényt életre kelteni.
#include <math.h>
float c;
c = pow(3, 2);Ezt a hibát kapom:
undefined reference to `pow'Próbáltam már az #include <cmath>-ot is, nem találja. Próbáltam már a GCC linkernek megadni a -lm opciót, de ugyanúgy nem jó. Valakinek ötlet?
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!