Իսկ ինչ լեզվով եք ծրագրեր գրում:
Իսկ ինչ լեզվով եք ծրագրեր գրում:
Ծանոթ չեմ, չեմ էլ լսել այդ լեզվի մասին, ես մենակ C++ գիտեմ:
կարող եք ասել ինչու է էռռոռ տալի ու չի մտնում class MyFile--ի open ֆունկցիա
Կոդ:#include "stdafx.h" #include <stdio.h> #include <iostream> using namespace std; struct Student { char name[100]; char lName[100]; int age; }; class MyFile { private: FILE *f; public: void open(const char *path, const char *mode) { f=fopen(path,mode); if(f==NULL) cout<<"Error, cant't create file"<<endl; } unsigned int getSize(){ if(f==NULL) return 0; fseek(f,0,SEEK_END); return ftell(f); } void read(void *p) { if(f==NULL) cout<<"Can't create file"<<endl; int l=getSize(); fseek(f,0,SEEK_END); fread(p,l,1,f); } void write(void *p) { if(f==NULL) cout<<"Can't create file"<<endl; int l=getSize(); fwrite(p,l,sizeof(Student),f); } bool close() { fclose(f); return true; } }; int _tmain(int argc, _TCHAR* argv[]) { MyFile * mf; char mode; cout<<"Enter mode (w/r) : "; cin>>mode; cout<<"Enter number of students: "; int n; if(mode=='W'||mode=='w') { cin>>n; Student * x=(Student*) malloc(n*sizeof(Student)); for(int i=0;i<n; i++) { cout<<"Name \t"; cin>>x[i].name; cout<<"Last Name \t"; cin>>x[i].lName; cout<<"Age \t"; cin>>x[i].age; } mf->open("MyFile.txt","wb"); mf->write(x); mf->close(); free(x); } if(mode=='R'||mode=='r') { mf->open("MyFile","rb"); Student *x = (Student*) malloc (n*sizeof(Student)); mf->read(x); for(int i=0; i<n; i++){ cout<< x[i].name; cout<<x[i].lName; cout<<x[i].age; cout<<endl; } mf->close(); free(x); } return 0; }
Վերջին խմբագրող՝ V!k: 25.03.2014, 20:41:
. . . DREAM ABOUT TOMORROW
BUT LIVE FOR TODAY . . .
Վիկ ջան ոնց որ շատ եմ ուշացել բայց՝
Ստեղ դու MyFile տիպի օբյեկտ չես սարքել, դու ընդամենը սարքել ես ցուցիչ։Կոդ:MyFile * mf;
Հիմա քեզ էդ ցուցիչ տիպի համար պետք ա հիշողության մեջ քո օբյեկտի չափով հիշողություն վերցնես ու դրա հասցեն տաս քո ցուցիչին։
malloc—ը վերադարձնում ա void * այսինքն քո հայտարարած MyFile տիպի ցուցիչը հասցե ա ստանում արդեն հիշողության մեջ MyFile տիպի օբյեկտի վրա։Կոդ:mf = malloc(sizeof(MyFile));
Դրանից հետո արդեն կարաս՝
Մի բան էլ, -> օգտագործում ես, որովհետև mf-դ օբյեկտ չի ինքը ցուցիչ ա, եթե դու սկզբում գրեիր՝Կոդ:mf->open("MyFile.txt","wb"); mf->write(x); mf->close();
Էդ դեպքում արդեն ոչ թե -> կգրեիր այլ՝Կոդ:MyFile mf = new MyFile();
Կոդ:mf.open("MyFile.txt","wb"); mf.write(x); mf.close();
Վերջին խմբագրող՝ Արամ: 07.10.2014, 21:56:
եթե հնարավորա. օգնեք էս խնդիրը գրեմ. (Չեմ հասկանում որ մասում եմ սխալը անում):
***
Տրված է n բնական թիվը և n տարր պարունակող X վեկտորը:Կազմել այնպիսի նոր Y վեկտորի ստացման և տպման բլոկսխեման ու ծրագիրը,որի տարրերը ստացվում են X վեկտորից՝ նրա մեջ տեղերով փոխելով յուրաքանչյուր կենտ ինդեքս ունեցող տարրի և իրեն նախորդող զույգ ինդեքսով տարրի արժեքները,եթե կենտ ինդեքս ունեցող տարրը բացասական է,հակառակ դեպքում այդ զույգի արժեքները թողնել անփոփոխ:
***
(((Իմ գրած ծրագիրը աշխատումա մենակ երբ n-ը զույգ թիվա. ))
#include <iostream>
#include <math.h>
#include "conio.h"
using namespace std;
int main()
{int n,m,i,j;
double y[10],x[10];
cin>>n;
for(i=0;i<n;i++)
cin>>x[i];
if(n % 2==1)
{m=n;}
else
{m=n-1;}
j=0;
for(i=1;i<=m;i++)
{ if(i % 2==1 && x[i]<0)
{y[j]=x[i]; y[j+1]=x[i-1];}
else if(i % 2==1 && x[i]>=0)
{y[j]=x[i-1];
y[j+1]=x[i];
}
{i++;j=j+2;}
}
for(i=0;i<=m;i++)
cout<<y[i];
_getch();
return 0;
}
Նախ ՝
Իսկ դու գրել ես ՝Տրված է n բնական թիվը և n տարր պարունակող X վեկտորը
n-ը 10 մուտք անելուց ծրագիրդ պարկելու ա։Կոդ:double y[10],x[10];
Հետո չտեսա թե որտեղ ես օգտագործել ՝
-ը։Կոդ:#include <math.h>
Խորհուրդ կտամ ծրագրի կոդի ֆորմատավորմանը ուշադրություն դարձես, չէ՞ որ քո գրած կոդը հետագայում մենակ դու չես կարդալու։
Իսկ խնդիրը այստեղ ա ՝
Եթե դու n-ը մուտք արեցիր 5
m-ին վերագրելու ա 5, քանի որ 5%2=1, իսկ զանգվածիդ վերջին էլեմենտը լինելու ա x[4]-ը, քանի որ 0-ից ենք հաշվում։
Իսկ ցիկլդ ֆռալու ա ՝
for(i=1;i<=m;i++)
այսինքն ցիկլիդ վերջին քայլում, երբ i = 5 իսկ x[5] -ն գոյություն չունի։
#include <iostream>
using namespace std;
void main()
{
int n;
cout << "Nermuceq tarreri qanak@" << endl ;
cin >> n;
double *x = new double[n] ;
double *y = new double[n] ;
for(int i=0; i<n; i++)
cin >> x[i] ;
y[n-1] = NULL ;
for(int i=0; i<n; i++)
{
if(i%2==1)
{
if(x[i]>0)
{
y[i-1] = x[i-1] ;
y[i] = x[i] ;
}
else
{
y[i-1] = x[i];
y[i] = x[i-1];
}
}
}
if(y[n-1]=NULL)
y[n-1] = x[n-1] ;
for(int i=0; i<n; i++)
cout << y[i] << ' ' ;
}
ահա լուծումը
Վերջին խմբագրող՝ Ծյէլեպորտ: 31.10.2014, 21:27:
Ծյէլեպորտ մերսի , բայց չի աշխատում )
Վերջին խմբագրող՝ Dawson: 31.10.2014, 22:28:
NULL-ը "stdio.h" -ում define ա արած որպես սովորական 0, այսինքն պրոստո 0 ա։
Եթե լոգիկան ես հարցնում, իմաստը կայանում ա նրանում, որ եթե n-ը զույգ ա, ուրեմն x-ի վերջին էլէմենտի վրա իսկի չի էլ կանգնելու, ու արդյունքում 0 ա մնալու y-ում իրա արժեքը(քանի որ վերևում վերագրել ա 0), դրա համար ստուգում ա եթե 0 ա ուրեմն թող x-ի վերջին էլեմենտը վերագրի։
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ