- Honor Magic6 Pro - kör közepén számok
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- Samsung Galaxy S24 FE - később
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Csíkszélességben verné az Exynos 2600 a Snapdragon 8 Elite 2-t
- Samsung Galaxy S23 Ultra - non plus ultra
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Milyen okostelefont vegyek?
- Xiaomi Mi 11 Ultra - Circus Maximus
Új hozzászólás Aktív témák
-
Dirty_Pio
csendes tag
Sziasztok, van egy kis problemam a listakkal c -ben. Nem a hagyomanyos pointeres modon szeretnem megoldani a feladatot, azaz letrehozni egy listat es kivenni, beletenni elemeket es kiiratni, hanem a kurzoros megoldassal, amikor egy listat vektor segitsegevel szimulalsz. Itt jon a kod:
#include <stdio.h>
#include <stdlib.h>
#define maxlen 100
typedef char tipcursor;
typedef int tipnod;
typedef struct tipelem{
tipnod element;
tipcursor next;
}tipelement;
typedef tipcursor tiplista;
void init(tipelement z[maxlen])
{
int i;
for (i=0;i<maxlen-1;i++)
z[i].next=i+1;
z[maxlen].next=-1;
}
tiplista add(tiplista *d,tiplista p,tipelement z[maxlen],tipnod e)
{
if (p==-1) {
p=*d;
z[*d].element=e;
*d=z[*d].next;
z[p].next=-1;
}
else{
tipcursor k=p;
while ((z[k].element<e)&&(k!=-1)&&(z[k].next!=-1))
{
k=z[k].next;
}
tipnod temp;
while (k!=-1)
{
temp=z[k].element;
z[k].element=e;
e=temp;
if(-1==(k=z[k].next)) z[k].next=*d;
}
z[*d].element=e;
temp=*d;
*d=z[*d].next;
z[temp].next=-1;
}
return p;
}
void list(tiplista s,tipelement z[maxlen])
{
while (s!=-1)
{
printf("%i ",z[s].element);
printf("%i ",z[s].next);
s=z[s].next;
}
}
int main(void)
{
tipelement zona[maxlen];
tiplista l=-1,m=-1,*disp;
disp=(tiplista*)malloc(sizeof(tiplista));
*disp=0;
init(zona);
l=add(disp,l,zona,16);
l=add(disp,l,zona,5);
list(l,zona);
l=add(disp,l,zona,41);
list(l,zona);
return 0;
}Nos a problemam az, hogy a program nem helyezi jol be az elemeket a helyukre, azaz miutan betettem a 16-ost utana az o helyere teszi az 5-t, de nem tolja arrebb a 16-t, pedig az add fuggvenybe minden jol megy, csak kiirataskor mar nem oks a lista.
Elore is koszonom.
-
Dirty_Pio
csendes tag
Sziasztok, akarok irni egy nagyjabol katalogizalo programot ami eloszor megnyit egy data.txt fielot amiben el vannak mentve a katalogus elemei es a kodjai. A felhasznalo ezutan beirja a kodjat a kivant reszlegnek ami utan a program megnyitja a filet amibe az elemek vannak, es ki is iratja a kepernyore. Ezutan rakerdez hogy akarok-e hozzaadni uj elemet vagy meglevot kitorolni.Minden reszleg, azaz file elso soraba el van mentve hogy hany elem van benne. A problemam az lenne hogy amikor ki akarok torolni egy elemet akkor azt ugy oldalam meg hogy szepen az alatta levo sortol kezdodoen mindent ramasolnak es az utolso sort pedig elhagynam. Itt a kod
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
struct tm * timeinfo;
int rm(FILE *f)
{
fseek(f,0,0);
char buff[255];
int max,linelen,n;
fgets(buff,100,f);
max=atoi(buff);
printf("type the nr of the product");
scanf("%i",&n);
printf("the number %i, and max %i",n,max);
while (n>0)
{
fgets(buff,250,f);
n--;
}
fgets(buff,250,f);
while (fgets(buff,250,f))
{
linelen=strlen(buff);
fseek(f,-linelen,1);
fprintf(f,"%s",buff);
};
return 0;
}
int add(FILE *f)
{
char name[20],price[15],buff[101]="",*s;
int linelen,max;
fseek(f,0,0);
fgets(buff,19,f);
max=atoi(buff);
max++;
// printf("max=%i",max);
fseek(f,0,0);
fprintf(f,"%i\n",max);
fseek(f,0,2);
time_t rawtime;
time(&rawtime);
timeinfo=localtime(&rawtime);
s=asctime(timeinfo);
s[strlen(s)-1]='\0';
fprintf ( f,"\n %i %s ",max,s);
fseek(f,1,1);
gets(buff);
printf("product name:");
scanf("%s",name);
fprintf(f," %s ",name);
printf("product prince:");
gets(buff);
scanf("%s",price);
fprintf(f," %s",price);
return 0;
}
int list(FILE *f)
{
fseek(f,0,0);
char c;
fgetc(f);
while( (c=fgetc(f))!=EOF)
{
putchar(c);
}
printf("\n");
return 0;
}
int main(void)
{
FILE *f,*g;
if (!(g=fopen("data.txt","r"))) {
printf("missing data file");
exit (1);
}
char s[3],c;
int a=1;
list(g);
fclose (g);
while (a)
{
printf("\nchoose the code of the product type\n");
scanf("%s",s);
if (strlen(s)==2)
switch (s[strlen(s)-1])
{
case '1' :
if (!(f=fopen("a1.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
case '2' :
if (!(f=fopen("a2.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
case '3' :
if (!(f=fopen("a3.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
case '4' :
if (!(f=fopen("a4.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
case '5' :
if (!(f=fopen("a5.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
case '6' :
if (!(f=fopen("a6.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
case '7' :
if (!(f=fopen("a7.txt","r+")))
{
printf("missing data file");
exit (1);
}
a=!a;
break;
default :
printf("wrong code\n");
}
}
list(f);
a=1;
while (a)
{
printf("press 1 to add an element, 2 to remove one and 0 to exit");
scanf("%i",&a);
switch(a)
{
case 1:
add(f);
break;
case 2:
rm(f);
break;
default :break;
}
}
fclose (f);
return 0;
}Az rm fuggveny oldana meg a torlest, de ehelyett vegtelen ciklusba kot ki es egyre csak noveli a file meretet. Egy peldat is mellekelek:
file data.txt:
code name
a1 = PC/notebook/server
a2 = cash register/balance
a3 = software
a4 = Husqvarna
a5 = audio systems
a6 = home/car security
a7 = PC/camera accesorriesfile a3.txt
4
nr. __date__ __product_name__ ___price___
1 Mon Oct 05 17:13:14 2009 elem1 1234
2 Mon Oct 05 17:13:22 2009 elem2 3214
3 Mon Oct 05 17:13:28 2009 elem3 2114
4 Mon Oct 05 17:13:33 2009 elem4 2145Es ha tudtok jol fogna egy modszer amivel szepen kozepre tudom amjd igazitani a fielba, mert eddig nekem csak az jutott az eszembe hogy mindig fix szamu karakter keruljon minden nev ala. ELore is kosz.
-
Dirty_Pio
csendes tag
Hihetetlen de mindig az ilyen huesegeken akadok fent: szoval van egy file es be kene olvasni belole par adatot, az elso sorban egy lebegopontos valtozo(k) van es egy egesz tipusu(n) szunettel elvalasztva. N a kovetkezo ket sorban tallahato elemek szamat adja meg. A kovetkezo sorban n darab lebegopontos valtozo van es az azt koveto sorban n darab egesz. a kodom igy nez ki:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *f;
int n,i;
float k;
if ( !(f=fopen("thief.in","r")) ){
printf("error input file");
exit (1);
}
fscanf(f,"%f %d",&k,&n);
int v[n];
float d[n];
for (i=0;i<n;i++)
{
fsncaf(f,"%d",&v[i]);
printf("%d ",v[i]);
}
for (i=0;i<n;i++)
{
fsncaf(f,"%f",&d[i]);
printf("%f ",d[i]);
}
close(f);
return 0;
}A program nem, a kovetkezo errorra hivatkozva: [Linker error] undefined reference to'fscanf'. Ha jo tudom az fscanf a stdio.h header filebe van definialva szoval kene menjen nem?
-
Dirty_Pio
csendes tag
Sziasztok, mi itt a baj, a file ugy nez, ki, hogy az elso sorban a sorok(oszlopok) szama van es a tobbiben emg szunettel elvalasztva a matrix elemei.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *f;
int n,i,j;
if ( !(f=fopen("input.in","r")) ) {
printf("no input file found");
exit (1);
}
fscanf(f,"%d",&n);
int x[n][n];
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
fscanf(f,"%d",x[i][j]);
//fgetc(f); - ez kell-e az enter beolvasasara? Ha hagyom ugyse megy szoval ki kene segitsetek.
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%3d",x[i][j]);
printf("\n");
}
close(f);
system("pause");
return 0;
} -
Dirty_Pio
csendes tag
válasz
Jester01 #943 üzenetére
Szoval ha ki szeretned szamitani az Euler-fele szam egyik x-ik hatvanyat( e^x -t ), akkor az a dolgod, hogy veszed a Taylor fele felbontasat a szamnak, ami lenyegebe a megoldas: e^x=1+e^1/1!+e^2/2!+e^3/3!+... egeszen egy megfeleloen nagy szamig. Es magyarazas kozbe ra is jottem mi is a problema, azaz en nem valasztottam eleg nagy szamot azaz enm eleg pontos az osszegem, mivel az elso x db szamot vettem igy ha mondjuk az e^4-t szeretnem kiszamolni csak az osszeg elso 4 tagjat veszem, es a kovetkezo szamok nem eleg kicsik ahhoz, hogy lehanyagolhato legyen. A kodban a kovetkezo javitasokat eszkozoltem :
#include <stdio.h>
int ex(int n, int x)
{
if (n>0) return x*ex(n-1,x);
else return 1;
}
int fact(int n)
{
if (n>0) return n*fact(n-1);
else return 1;
}
float xex(int n, int x)
{
float q;
if (n>0) {q=(float)ex(n,x)/fact(n);
// printf("%f \n",q);
return q+xex(n-1,x);
}
-->>else return 0;<<-- mivel igy ketszer szamolna a 0 faktorialist h
}
int main(void)
{
int x,n;
scanf("%d",&x);
->>printf("%f",xex(32,x)); <<- ennyit bit meg a float vagy a memoria... ha nagyobb pontossaggal probalkozok akkor errort kapok. Mondjuk igy sem olyan pontos a szamitas, mint amilyent a google mutat, de azt hiszem nincs mar mas hiba. Ha ti talaltok szoljatok!
system("pause");
return 0;
} -
Dirty_Pio
csendes tag
Sziasztok! Ki kellene szamolnom az Euler fele szam adott hatvanyat. Rekurzioval oldottam meg a dolgot:
#include <stdio.h>
int ex(int n, int x)
{
if (n>0) return x*ex(n-1,x);
else return 1;
}
int fact(int n)
{
if (n>0) return n*fact(n-1);
else return 1;
}
float xex(int n, int x)
{
float q;
if (n>0) {q=(float)ex(n,x)/fact(n);
printf("%f \n",q);
return q+xex(n-1,x);
}
else return 1;
}
int main(void)
{
int x,n;
scanf("%d",&x);
printf("%f",xex(x,x));
system("pause");
return 0;
}Amint latjatok, a Taylor polinom ahsznalataval probaltam megoldani a dolgot, de az eredmeny hibas. Tudnatok segiteni?
-
Dirty_Pio
csendes tag
Ok, rajottem a dologra, szal en allapitom meg hogy miylen tipusu memoriamezobe olvasom be a fielbol a byteot es azt is, hogy hany byteot akarok ott latni. A kerdesem az lenne, hogy ha tegyuk fel en csak egy 1 byteon abrazolt szamot akarok kiolvasni es short intet hasznalok ami 2 bytet folglal, akkor a tobbit keegesziti 0-kal a program? Amugy a dolog azert kellett, hogy egy binaris fileban levo adatokbol kirajzoljak egy kepet a kepernyore.
-
Dirty_Pio
csendes tag
Sziasztok, az volna a kerdesme, hgoy hogyan tudok egy binaris filebol kiolvasni szamokat. Azaz ha meg van adva hogy pl. az elso 2 byteon van egy szam ami egy tulajdonsagat jeloli a filenak aminek majd a feldolgozas soran veszem hasznat, es utana meg byteonkent vannak mas szamok( ha jol tudom igy maximum 0-255 intervallumba lehetnek). Szoval az a kerdesem hogy hogyna csinalok ezekbol a byteokbol ujra szamokat? Esetleg ha tudtok kuldeni egy tenyleg osszetett es ertelemse leirast a binaris filokkal valo dolgozasrol c ben szovesen vennem.
-
Dirty_Pio
csendes tag
válasz
Jester01 #839 üzenetére
Koszi. Meg volna egy kerdesem : mivel olvassam be az adatokat, mert a scanf elcseszi nekem eleg rendesen, mivel a buffert szepen betologatja az adatok helyere es nincs igazan semmi 5letem mit hasznaljak helyette, mar azon kivutl johu irok egy fuggvenyt ami szepen beolvassa a getchar() ral a neveket meg a kulonbozo szovegeket. Akkor mukodne ha csak a scanf() -el a szamokat olvasnam be?
-
Dirty_Pio
csendes tag
válasz
Dirty_Pio #837 üzenetére
Kozbe reajottem egy-ket hibara szoval az uj kod mar igy nez ki
#include <stdio.h>
#include <stdlib.h>
enum star_type{ MA,BIN,VAR};
typedef struct {
char name[51];
enum star_type tp;
union star{
struct mai{
unsigned char type:2;
unsigned char age:2;
char color[11];
}m;
struct bin{
float r1;
float r2;
unsigned char t1:2;
unsigned char t2:2;
}b;
struct var{
float lowlmn;
float highlmn;
float period;
}v;
}u;
}stars;
int main(void){
enum star_type a;
int n,i;
stars *x=(stars *)malloc(sizeof(stars)*10);
printf("which type of definition would you like to use for the stars?\n");
scanf("%d",&a);
printf("How many stars?(max 10)\n");
scanf("%d",&n);
for (i=0;i<n;i++){
switch (a){
MA:
scanf("%50s",x.name);
x.tp=a;
scanf("%c %c %s",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %c %c",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %f",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
for (i=0;i<n;i++)
switch (x.tp){
MA:
printf("%c %c %s\n",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
printf("%f %f %c %c\n",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
printff("%f %f %f\n",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
system("pause");
return(0);
}de meg mindig nem megy
-
Dirty_Pio
csendes tag
Sziasztok, volna egy problemam a kovetkezo feladatban :
#include <stdio.h>
#include <stdlib.h>
enum star_type{ MA,BIN,VAR};
typedef struct s{
char name[51];
enum star_type tp;
union star{
struct mai{
unsigned char type:2;
unsigned char age:2;
char color[11];
}m;
struct bin{
float r1;
float r2;
unsigned char t1:2;
unsigned char t2:2;
}b;
struct var{
float lowlmn;
float highlmn;
float period;
}v;
}u;
}stars;
int main(void){
enum star_type a;
int n,i;
stars *x=malloc(sizeof(stars)*10);
printf("which type of definition would you like to use for the stars?\n");
scanf("%d",&a);
printf("How many stars?(max 10)\n");
scanf("%d",&n);
for (i=0;i<n;i++){
switch (a){
MA:
scanf("%50s",x.name);
x.tp=a;
scanf("%c %c %s",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %c %c",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
scanf("%50s",x.name);
x.tp=a;
scanf("%f %f %f",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
for (i=0;i<n;i++)
switch (x.tp){
MA:
printf("%c %c %s\n",x.u.m.type, x.u.m.age, x.u.m.color);
break;
BIN:
printf("%f %f %c %c\n",x.u.b.r1,x.u.b.r2,x.u.b.t1,x.u.b.t2);
break;
VAR:
printff("%f %f %f\n",x.u.v.lowlmn,x.u.v.highlmn,x.u.v.period);
break;
default break;
};
system("pause");
return(0);
}nos, azt az errort adja, hogy name is not a struct or union. Probaltam siman csak egy valtozoba beolvasni az elemeket de ugy meg amikor a unionba akarok olvasni akkor szepen elmegy vegtelenbe, szoval nem igazan tudom mihez kezdjek.
-
Dirty_Pio
csendes tag
Annak a printfnek semmi baja... amugy az ANSIC ben lehet hasznalni %i -t az integerek kiirasara, nem szukseges feltetlenul a %d (decimal) placeholder hasznalata. A masik printf -fel van baj: azzal amelyikben az a[i].name szerepel, es nem tudom hogy miert :az error igy hangzik: undefined reference to printf es a masodik a printstudentben is ugyanez az error jelentkezik. Es axitcode 1 el kilep a fordito.
-
Dirty_Pio
csendes tag
Na... kozbe rajottem egy-ket nagyobb hibamra, szoval igy nez ki a javitott kod:
#include <stdio.h>
#include <stdlib.h>
#define MAXST 20
#define MAXNL 50
struct student {
char *name;
float mark;
} ;
int getname(char *p)
{
int i=0;
char *q,c;
q=p;
while ( (c=getchar()!='\n') && i<MAXNL)
{
q[i]=c;
i++;
}
q[i]='\0';
return (i);
}
read_student ( struct student a[], int n)
{
char *p;
int i,e;
p=malloc(sizeof(char)*MAXST);
for (i=0;i<n;i++)
{
pritnf("\n the %i th student is:");
e=getname(p);
a[i].name=malloc(e*sizeof(char));
strcpy(a[i].name,p);
printf("\n mark for %s :",a[i].name);
scanf("%i",&a[i].mark);
}
free(p);
}
pritnstudnets(struct student a[], int n)
{
int i;
struct student *p;
p=a;
for (i=0;i<n;i++)
printf("%s\n",a[i].name);
}
int main(void){
struct student a[MAXST];
int nstdnt;
printf("students nr is:");
scanf("%i",&nstdnt);
read_student(a,nstdnt);
printstudenst(a,nstdnt);
return(0);
}A forditas elindul, de a lineker problemat talal a pritntf -ben a readstudent fuggvenyen belul, szovla mi a tehendom ?
-
Dirty_Pio
csendes tag
Itt megint problemam van :
#include <stdio.h>
#include <stdlib.h>
#define MAXST 20
#define MAXNL 50
struct student {
char *name;
float mark;
} ;
int getname(char *p)
{
int i=0;
char *q,c;
q=p;
while ( (c=getchar()!='\n') && i<MAXNL)
{
q[i]=c;
i++;
}
q[i]='\0';
return (i);
}
read_student ( struct student a, int n)
{
char *p;
int i,e;
p=malloc(sizeof(char)*MAXST);
for (i=0;i<n;i++)
{
pritnf("\n the %i th student is:");
e=getname(p);
a[i].name=malloc(e*sizeof(char));
a[i].name=*p;
printf("\n mark for %s :",a[i].name);
scanf("%i",&a[i].mark);
}
free(p);
}
pritnstudnets(struct student a, int n)
{
int i;
stdnt *p;
p=a;
for (i=0;i<n;i++)
printf("%s\n",a[i].*name);
}
int main(void){
struct student a[MAXST];
int nstdnt;
printf("students nr is:");
scanf("%i",&nstdnt);
read_student(a,nstdnt);
printstudenst(a,nstdnt);
return(0);
}NEm tudom hogy hogyan vonatkozzak egy sturkturaban levo pointerre
-
Dirty_Pio
csendes tag
válasz
Jester01 #799 üzenetére
Hi, erre nem igazan tudom a valaszt, hogy miert nem megy:
#include <stdio.h>
#include <stdlib.h>
void create_and_fill_array2(int * a, int n) {
a=(int *)malloc(sizeof(int)*n);
int i;
for (i=0; i<n; i++)
*(a + i)=i;
}
void print_array(int *tab,int n) {
int i;
for (i=0; i<n; i++)
printf("%d ",tab[i]);
}
int main (void) {
int *b;
create_and_fill_array2(b,5);
print_array(b,5);
return 0;
}ha a figgvenyen kivul hasznalom a malloc() -t akkor nincsen semmi problema.
-
Dirty_Pio
csendes tag
válasz
Jester01 #797 üzenetére
Nos egy utolso hiba maradt amivel nem sikerult megbirkoznom: az mreadben amikor a q[i][j] -nek ertekul akarom adni a readnr fuggvegy erteket akkor kidobja azt az errort, hogy invalid conversion from 'int(*)()' to 'int '. Ez mit jelent es a masik dolog: miert nem fogadta el a ROW/COL helyett a max1/max2 -t ?
-
Dirty_Pio
csendes tag
Na megint van egy kerdesem. Egy matrixot probalok beolvasni de azt a hibauzenetet kapom, hogy max1 was not declared in this scope. Az ha jol tudom valami oylasmit jelent hogy a fuggveny nem tudja ahsznalni mert kivul esik a hataskoren.
#include <stdio.h>
#include <stdlib.h>
#define ROW 4
#define COL 5
int readnr (void)
{
int i=0;
char x[5],c;
while ( ((c=getchar()) != '\n') && (i<5))
{
x[i]=c;
i++;
}
if (x[i-1]=='\n') x[i-1]='\0';
else x[i]='\0';
i = atoi(x);
return i;
}
void mread (int max1, int max2, int q[max1][pmax2])
{
int i,j;
for (i=0; i<=max1;i++)
for (j=0; j<=max2; j++)
q[i][j]=readnr;
}
printm (int max1, int max2, int q[max1][pmax2])
{
int i,j;
for (i=0; i<=max1;i++)
{
for (j=0; j<=max2; j++)
printf("%4i ",q[i][j];
printf("\n");
}
}
int main (void)
{
int max1=ROW,max2=COL;
int a[ROW][COL];
mread(max1,max2,a);
printm(max1,max2,a);
system("pasue");
return(0);
} -
Dirty_Pio
csendes tag
válasz
Dirty_Pio #791 üzenetére
Nos, a problemanak azt a felet megoldottam, amiert eredetileg ide irtam, de a javitott programban problemaim vannak a vektor ertekeinek a beolvasasaval, azaz minden esetben az vektor erteke -47 lesz. Beirom a javitott programot mert kozben voltak meg kissebb hibak a fentebbiben:
//program 5.6 (lab)
#define MAX 81
#include <stdio.h>
#include <stdlib.h>
int reading(int x[],int max)
{
int i=0,k,c;
while ((c=getchar()!=EOF)&&(i<max))
{
x[i]=c-'0';
i++;
}
i--;
return i;
}
int add(int a, int b, int r)
{
int s;
s=(a+b+r)%10;
return s;
}
int reminder(int a, int b, int r)
{
int s;
s=(a+b+r)/10;
return s;
}
int main(void)
{
int i,j,k,r;
int x[MAX],y[MAX],z[MAX];
for (k=0;k<80;k++)
{
x[k]=0;
y[k]=0;
}
i=reading(x,MAX);
j=reading(y,MAX);
printf("%i %i\n",i,j);
r=0;
for (k=0; (k<=i) && (k<=j); k++)
{
z[k]=add(x[k],y[k],r);
r=reminder (x[k],y[k],r);
}
if (i<j) for (i=k; i<=j; i++)
{
z[i]=add(0,y[i],r);
r=reminder(0,y[i],r);
}
else
for (j=k; j<=i; j++)
{
z[j]=add(0,x[j],r);
r=reminder (0,x[j],r);
}
z[k++]=r;
for (i=0;i<(k+1);i++)
printf("%i \n",z[i]);
system("pause");
return(0);
} -
Dirty_Pio
csendes tag
Sziasztok, volna egy kis problemam egy programmal... eleg sok errort kidob, de en nem ertem mia baja. Az errorok a figgvenyekre vonatkoznak nagyreszben, azzal a szoveggel, hogy pl. az elso fuggvenybe x has a forward declaration. A feladat szovege
rite a program to add two large integer numbers of length up to 80 digits (no predefined type offers this range/precision !). One approach is to treat each number as an array of digits. The two integers (arrays) are added element by element, carrying from one element to the next when necessary. Each number is read digit by digit (a loop of getchar() until end of line is encountered) and stored in an array of digits.
//program 5.6 (lab)
#define MAX 81
#include <stdio.h>
#include <stdlib.h>
int reading(int x[];int max)
{
int i,c;
while (c=getchar()!=EOF)
{
x[i]=c-'0';
i++;
}
i--;
return i;
}
int add(int a; int b; int r)
{
int s;
s=a+b+r;
return s;
}
int reminder(int a; int b; int r)
{
int s;
s=(a+b+r)/10;
return s;
}
int main(void)
{
int i,j,k,r;
int x[MAX],y[MAX],z[MAX];
i=reading(x,MAX);
j=reading(y,MAX);
r=0;
for (k=0; (k<=i) && (k<=j); k++)
{
z[k]=add(x[k],y[k],r);
r=reminder (x[k],y[k],r);
}
if (i<j) for (k; k<=j; k++)
{
z[k]=add(0,y[k],r);
r=reminder(0,y[k],r);
};
else
for (k; k<=j; k++)
{
z[k]=add(0,x[k],r);
r=reminder (0,x[k],r);
};
z[k++]=r;
for (i=0;i<(k+1);i++)
printf("%i \n",z[i]);
system("pause");
return(0);
}
na asszem megvan a baj... a figgvenybe ; hasznaltam , helyett grrr..
Ú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!
- Harmadszorra is haladékot adott a TikToknak Trump
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Bluetooth hangszórók
- OLED monitor topik
- OLED TV topic
- ZIDOO médialejátszók
- Házimozi belépő szinten
- Casco és kötelező gépjármű felelősségbiztosítás
- RAM topik
- Honor Magic6 Pro - kör közepén számok
- További aktív témák...
- Seasonic Focus GX 1000W 80+ gold
- Latitude 5530 27% 15.6" FHD IPS i7-1265U 16GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- Samsung Galaxy S24 Ultra 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- Eladó Konfig Ryzen 7 7700 32GB DDR5 1TB SSD RTX5070 12GB!
- Precision 5550 15.6" 4K+ IPS érintő i7-10750H Quadro T1000 16GB 512GB NVMe ujjlolv IR kam gar
- Azonnali A320 B350 X370 B450 X470 A520 B550 X570 chipset alaplap felvásárlás személyes/csomagküldés
- Okosóra felvásárlás!! Samsung Galaxy Watch 6, Samsung Galaxy Watch 7, Samsung Galaxy Watch Ultra
- DDR3 BAZÁR! 8GB 16GB 1333MHz 1600MHz 2400MHz DDR3 memória garanciával hibátlan működéssel
- Apple iPhone 14 128GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Lenovo Legion Slim 5 Gamer notebook - R7 7435HS 16GB RAM 1TB SSD RTX 4070 8GB GDDR6 WIN11
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest