Форум программистов, компьютерный форум CyberForum.ru

операции с текстовыми файлами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать функцию Compare http://www.cyberforum.ru/cpp-beginners/thread36143.html
Последняя из 6 задачек (5 осилил, 1 с вашей помощью) Описать функцию Compare(A,B,n), возвразающую 1, если можно преобразовать квадратную матрицу А размером n x n в матрицу B, отражениями относительно главной и побочной диагонали, и 0 в обратном случае. Очень приветствуется код. Заранее спасибо! Добавлено через 17 часов 56 минут 14 секунд Ну пожалуйста :)
C++ Редактирование текстового файла Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений. Заранее спасибо!+) http://www.cyberforum.ru/cpp-beginners/thread36142.html
C++ программо на чтение из текстового файла.
Задача программы имеется внешний текстовый файл. Написать программу печати первой из самых коротких строк. Что не так в коде? #include <iostream> #include <fstream> #include <string> #include <vector> #include <algorithm> using namespace std; int main()
Использование функций! C++
Задать значения целочисленным элементам матриц A = {aij}, B = {bij}, где i = 0, 1, 2,..., 5; j = 0, 1, 2, 3 и вычислить элементы массивов X = {xij}, Y = {yij} по формулам: xij=ln a(ij) yij=exp b(ij)
C++ Помогите решить задачу со строками http://www.cyberforum.ru/cpp-beginners/thread36130.html
Даны два числа : N1 и N2, и две строки : S1 и S2.Получить из этих строк новую строку, объединивши N1 первых символов строки S1 и N2 последних символов строки S2. Оч нужно,плизззз помогите=)
C++ Перевод int в символьный массив char Помогите плз реализовать алгоритм перевода целого числа в символьный массив.. К примеру: дано число int a=1234; нужно чтобы в массиве char b было: b=1, b=2, b=3, b=4, итд.. число a - произвольное, но четырехкратное) был бы благодарен за помощь)) подробнее

Показать сообщение отдельно
аkо
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 5
27.05.2009, 12:13  [ТС]
Ухху!!!!!!!! В таком виде она компилируется, но не работает
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

struct node
{
int number;
char soname[10];
char narush[40];
char shtraf[30];
node *right;
node *left;};

node *crnode(int val)
{
node *newnode;
newnode=new (node);
newnode->number=val;
newnode->left=NULL;
newnode->right=NULL;
return (newnode);
}
node *add_tree(node *a, int val)
{ if (a==NULL) {a=crnode(val); return (a);}
if (val<a->number)
if (a->left==NULL) a->left=crnode(val);
else add_tree(a->left,val);
if (val>a->number)
if (a->right==NULL) a->right=crnode(val);
else add_tree(a->right,val);
return (a);}

node *find_tree(node *a, int val)
{if (a==NULL) return (NULL);
if (a->number==val) return (a);
if (val<a->number) return(find_tree(a->left, val));
if (val>a->number) return(find_tree(a->right, val));
return(NULL);}

void travel(node *a)
{if(a!=NULL)
{cout<<"nomer mashini"<<a->number<<"familia vladel'ca"<<a->soname<<endl;
travel(a->left);
travel(a->right);
}
}

int main()
{
node *a=NULL;

FILE *inp, *out;
if((inp=fopen("inp.txt","r"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
if((out=fopen("out.txt","w+"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
const int dl=75;
char s[dl];

while(fgets(s,dl,inp))
{
a->number =atoi(&s[3]);
strncpy(a->soname ,&s[4],10);
a->soname [14]='\0';
strncpy(a->narush, &s[15],40);
a->narush [45]='\0';
strncpy(a->shtraf , &s[46], 23);
a->shtraf [69]='\0';
a=add_tree(a, a->number);
}
fclose(inp);

return 0;



}

Добавлено через 11 часов 35 минут 23 секунды
прога работает!!!!!!
осталось написать 2 и 3 пункт, помогите, кому не сложно
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

struct node
{
char soname[10];
int number;
char narush[10][40];
int pnumb;
node *right;
int shtraf[30];
node *left;
};

node *crnode(char s[75])
{
node *newnode=new (node);
newnode->number=atoi(&s[0]);
newnode->pnumb=1;\
strncpy(newnode->soname ,&s[4],10);
newnode->soname[10]='\0';
strncpy(newnode->narush[1], &s[14],40);
newnode->narush[1][39]='\0';
newnode->shtraf[newnode->pnumb]=atoi(&s[54]);
newnode->left=NULL;
newnode->right=NULL;
return (newnode);
}
node *add_tree(node *a,char s[75])
{
int k;
if (a==NULL)
{
a=crnode(s);
}
else
{
k=atoi(&s[0]);
// cout << endl << word << strcmp(word,a->Name) << a->Name << endl;
if (k<a->number)
{
if (a->left==NULL)
{
// cout << "Piwem v Levo" << endl;
a->left=crnode(s);
}else{
add_tree(a->left,s);
}
}
if (k>a->number)
{
if (a->right==NULL)
{
// cout << "Piwem v Pravo" << endl;
a->right=crnode(s);
}else{
add_tree(a->right,s);
}
}
if (k==a->number)
{
// cout << "Piwem v s'uda" << endl;
a->pnumb++;
strncpy(a->narush[a->pnumb], &s[14],40);
(a->narush[a->pnumb])[39]='\0';
a->shtraf[a->pnumb]=atoi(&s[54]);
}
}
return(a);

}

node *find_tree(node *a, int val)
{
if (a==NULL) return (NULL);
if (a->number==val) return (a);
if (val<a->number) return(find_tree(a->left, val));
if (val>a->number) return(find_tree(a->right, val));
return(NULL);
}

void travel(node *a)
{if(a!=NULL)
{cout<<"nomer mashini"<<a->number<<"familia vladel'ca"<<a->soname<<endl;
travel(a->left);
travel(a->right);
}
}

node *NumberContains(int k, node* a)
{
if (a!=NULL)
{
if (a->number==k)
{return(a);}
if (NumberContains(k,a->left)==NULL)
{return(NumberContains(k,a->right));}else{return(NumberContains(k,a->left));};
}else{return(NULL);}
return(a);
}

void print_tree(node* a)
{
int i;
if (a!=NULL)
{
cout << "NUMBER:" << a->number << endl ;
cout << "FAMILIJAAA:" << a->soname << endl;
for (i=1;i<=a->pnumb;i++)
{
cout << "\n" << a->narush[i] << "- " << a->shtraf[i] <<"\n__________________________\n";
}
cout << endl;
print_tree(a->left);
print_tree(a->right);
}
}

int main()
{
node *a=NULL, *b=NULL;
FILE *inp, *out;
if((inp=fopen("D:\\inp3.txt","r"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
if((out=fopen("D:\\out.txt","w"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
const dl=75;
char s[dl];
while(fgets(s,dl,inp))
{
a=add_tree(a,s);
}
print_tree(a);
fclose(inp);
return 0;
}

Добавлено через 12 часов 20 минут 16 секунд
Кому интересно, вот полное решение задачи
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct node
{
char soname[10];
int number;
char narush[10][40];
int pnumb;
node *right;
int shtraf[30];
node *left;
};

node *crnode(char s[75])
{
node *newnode=new (node);
newnode->number=atoi(&s[0]);
newnode->pnumb=1;\
strncpy(newnode->soname ,&s[4],10);
newnode->soname[10]='\0';
strncpy(newnode->narush[1], &s[14],40);
newnode->narush[1][39]='\0';
newnode->shtraf[newnode->pnumb]=atoi(&s[54]);
newnode->left=NULL;
newnode->right=NULL;
return (newnode);
}
node *add_tree(node *a,char s[75])
{
int k;
if (a==NULL)
{
a=crnode(s);
}
else
{
k=atoi(&s[0]);
if (k<a->number)
{
if (a->left==NULL)
{
a->left=crnode(s);
}else{
add_tree(a->left,s);
}
}
if (k>a->number)
{
if (a->right==NULL)
{
a->right=crnode(s);
}else{
add_tree(a->right,s);
}
}
if (k==a->number)
{
a->pnumb++;
strncpy(a->narush[a->pnumb], &s[14],40);
(a->narush[a->pnumb])[39]='\0';
a->shtraf[a->pnumb]=atoi(&s[54]);
}
}
return(a);

}

void print_narush(FILE *out, node *a)
{
int i;
if (a!=NULL)
fprintf(out,"%d",a->number);
fprintf(out,"%s",a->soname);
for (i=0; i<a->pnumb; i++)
{
fprintf(out,"%d",a->narush[i]);
fprintf(out,"%s",a->shtraf[i]);
}
}

node *find_tree(node *a, int val)
{
if (a==NULL) return (NULL);
if (a->number==val) return (a);
if (val<a->number) return(find_tree(a->left, val));
if (val>a->number) return(find_tree(a->right, val));
return(NULL);
}

void travel(node *a)
{if(a!=NULL)
{cout<<"nomer mashini"<<a->number<<"familia vladel'ca"<<a->soname<<endl;
travel(a->left);
travel(a->right);
}
}


int rightmost (node *a)
{
while (a->right!=NULL)
a=a->right;
return (a->number);
}

node *del_tree(node *a, int val)
{int zam;
if (a->number==val) {if ((a->left==NULL)&&(a->right==NULL))
{a=NULL;
cout<<a->soname <<" udalen is spiska narushitelej"<<endl;
return (a);}
if ((a->left==NULL)&&(a->right!=NULL))
{a=a->right;
cout<<a->soname <<" udalen is spiska narushitelej"<<endl;
return (a);}
if ((a->left!=NULL)&&(a->right==NULL))
{a=a->left;
cout<<a->soname <<" udalen is spiska narushitelej"<<endl;

return (a);}
if ((a->left!=NULL)&&(a->right!=NULL))
{zam=rightmost(a->left);
a->left=del_tree(a->left,zam);
a->number=zam;
return(a);}
}
if (a->number>val) {a->left=del_tree(a->left, val); return(a);}
if (val>a->number) {a->right=del_tree(a->right,val); return(a);}
return (a);
}

void PrintNode(node *a)
{
int i;
if (a!=NULL)
{
cout << "NUMBER:" << a->number << endl ;
cout << "FAMILIJAAA:" << a->soname << endl;
for (i=1;i<=a->pnumb;i++)
{
cout << "\n" << a->narush[i] << "- " << a->shtraf[i] <<"\n__________________________\n";
}
cout << endl;
};
}

node *NumberContains(int k, node* a)
{
if (a!=NULL)
{
if (a->number==k)
{return(a);}
if (NumberContains(k,a->left)==NULL)
{return(NumberContains(k,a->right));}else{return(NumberContains(k,a->left));};
}else{return(NULL);}
return(a);
}

void print_tree(node* a)
{
int i;
if (a!=NULL)
{
cout << "NUMBER:" << a->number << endl ;
cout << "FAMILIJAAA:" << a->soname << endl;
for (i=1;i<=a->pnumb;i++)
{
cout << "\n" << a->narush[i] << "- " << a->shtraf[i] <<endl;
}
cout << endl;
print_tree(a->left);
print_tree(a->right);
}
}



int main()
{
node *a=NULL, *b=NULL;
FILE *inp, *out;
if((inp=fopen("D:\\inp3.txt","r"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
if((out=fopen("D:\\out.txt","w"))==NULL)
{cout<<"Oshibka faila"<<endl; return(1);}
const dl=75;
char s[dl];
while(fgets(s,dl,inp))
{
a=add_tree(a,s);
}
print_tree(a);
fclose(inp);



node *poisk;
int t,i, opl, inn;
cout <<"hotite oplatit' shtraf? if yes najmite 1, if not najmite 2"<<endl;
cin>>t;
if (t==2) cout<<"ne hotite, kak hotite"<<endl;
if(t==1)
{
cout <<"Vvedite nomer masini"<<endl;
cin>>inn;
poisk=find_tree (a, inn);
if (poisk==NULL)
{
cout <<"takoj mashini net v spiske narushitelej"<<endl;
}else{
PrintNode(poisk);
cout<<"Vvedite summy dla oplati"<<endl;
cin>>opl;
int summa=0;
for (i=1; i<=poisk->pnumb; i++)
{
cout<<poisk->shtraf[i] <<endl;
summa=summa+poisk->shtraf[i];
}

if (summa>opl) cout <<"nedostatochno deneg dla pogashenia shtrafa"<<endl;
if (summa<= opl)
{
cout <<"shtraf oplachen"<<endl;
del_tree (a,a->number);
}
}
}
cout <<"hotite polychit' informacij o narusheniah, if yes najmite 1, if not najmite 2"<<endl;
cin>>t;
poisk=NULL;

if (t==2) cout<<"ne hotite, kak hotite"<<endl;
if (t==1)
{
cout <<"Vvedite nomer masini"<<endl;
cin>>inn;
poisk=find_tree (a, inn);
if (poisk==NULL)
{
cout <<"takoj mashini net v spiske narushitelej"<<endl;
}else{
// PrintNode(poisk);
fprintf(out,"%d",poisk->number);
fprintf(out,"%s","\n");
// strcpy(word,poisk->soname);
fprintf(out,"%s",poisk->soname);
fprintf(out,"%s","\n");
for (i=1; i<=poisk->pnumb; i++)
{
fprintf(out,"%s","\t");
fprintf(out,"%s",poisk->narush[i]);
fprintf(out,"%s","-");
fprintf(out,"%d",poisk->shtraf[i]);
fprintf(out,"%s","\n");
}
}
}
fclose(out);
return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru