powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ерунда, но куда мне...
7 сообщений из 7, страница 1 из 1
Ерунда, но куда мне...
    #33129910
Feanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!!!
Это опять Ваш всемилюбимый лентяй, т.е. Я =)
Сразу хочу сказать, что задание легче лёгкого, но опять Я не справляюсь, т.к. опыта у меня почти нет...

Мне нужно сделать так, чтобы программа выводила все номера телефонов, оканчивающиеся на ОДНУ ПОСЛЕДНЮЮ цифру, помогите, кому не жаль времени и сил, это последняя моя просьба, обращённая к Титанам программирования.

P.S. программа выполнена Borland C++ v.1.3
Огромная просьба к тем, кто всё же возьмётся за реализацию, не изменяйте пожалуйста самого написания программы, изменить надо лишь маленькую её часть.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
struct stud
{
char Name[ 20 ],Tel[ 20 ];
int Age;
char Sex;
};

char*fname(){char *f=new char[ 40 ];
	cout<<"Enter FileName: ";cin>>f;
	return f;}


void save(fstream& f,stud x){f<<x.Name<<' '<<x.Tel<<
	' '<<x.Age<<' '<<x.Sex<<' ';}

void save(char fn[],stud x[],int n){int i;fstream f;
	f.open(fn,ios::out);f<<n<<' ';
	for(i= 0 ;i<n;i++)save(f,x[i]);
	f.close();}

void load(fstream& f,stud& x){f>>x.Name>>x.Tel
	>>x.Age>>x.Sex;}

void load(char fn[],stud x[],int& n){int i;fstream f;
	f.open(fn,ios::in); f>>n;
	for(i= 0 ;i<n;i++)load(f,x[i]);
	f.close();}


void input (stud&record)
{
cout<<"input Name:";cin>>record.Name;
cout<<"input Age:";cin>>record.Age;
cout<<"input Sex:";cin>>record.Sex;
cout<<"input Tel:";cin>>record.Tel;
}

void output(stud& record)
{
cout<<endl<<record.Name<<'\t'<<record.Age<<'\t'<<record.Sex
<<'\t'<<record.Tel<<endl;
}

void output_all(stud records[], int cout)
{
for (int i= 0 ;i<cout;i++)
output(records[i]);
}

void the_tel(stud records[], int count,char*beg,int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++){ flag= 1 ;
for(j= 0 ;j<k;j++)
if (beg[j]!=records[i].Tel[j])
{
flag= 0 ;
break;
}
if(flag) output(records[i]);}
}

void the_name(stud records[], int count,char*beg, int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++){ flag= 1 ;
for(j= 0 ;j<k;j++)
if (beg[j]!=records[i].Name[j])
{
flag= 0 ;
break;
}
if(flag) output(records[i]);}
}

char menu()
{
char b;
cout<<"1-new record"<<endl;
cout<<"2-show all record"<<endl;
cout<<"3-the_telefon"<<endl;
cout<<"4-the_name"<<endl;
cout<<"5-Exit"<<endl;
cout<<"6-Save"<<endl;
cout<<"7-Load"<<endl;
cout<<"input:";
b=getch();
return b;
}

void main()
{
stud table[ 20 ];char beg[ 20 ];int k;
int cur= 0 ;
char key= 0 ;
do {textcolor( 12 );
clrscr();
key=menu();
switch (key)
{
case'1':
if (cur< 20 )
{
input(table[cur]);
cur++;
}
else
cout<<"error:input max record"<<endl;
break;
case'2':
output_all(table, cur);
break;

case'3':
cout<<"Enter Beginning: ";
cin>>beg;
k=strlen(beg);
the_tel(table, cur, beg,k);
break;

case'4':
cout<<"Enter Beginning:";
cin>>beg;
k=strlen(beg);
the_name(table, cur, beg, k);
break;
case'5':     exit( 0 );

case'6':save(fname(),table,cur);cout<<"Save Is OK!";break;

case'7':load(fname(),table,cur);output_all(table,cur);break;

  }        getch();
 } while( 1 );
}

По всей видимости изменять нужно сдесь, при чём вместо Enter Beginning наверное будет что-то вроде, ну Я не знаю...

Код: plaintext
1.
2.
3.
4.
5.
case'3':
cout<<"Enter Beginning: ";
cin>>beg;
k=strlen(beg);
the_tel(table, cur, beg,k);
break;

И ещё, даже мне понятно, что теберь авторchar beg[20]; будет уже не 20, а один, вот все мои доводы...
...
Рейтинг: 0 / 0
Ерунда, но куда мне...
    #33130215
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FeanorЗдравствуйте!!!
Это опять Ваш всемилюбимый лентяй, т.е. Я =)
Сразу хочу сказать, что задание легче лёгкого, но опять Я не справляюсь, т.к. опыта у меня почти нет...

"Теория без практики суха, мертва, безжизненна..." (В.И.Ленин). На чужом опыте практиком не станешь... Так что соберись - и вперед, решать проблемы самостоятельно...

FeanorМне нужно сделать так, чтобы программа выводила все номера телефонов, оканчивающиеся на ОДНУ ПОСЛЕДНЮЮ цифру, помогите, кому не жаль времени и сил, это последняя моя просьба, обращённая к Титанам программирования.

Звучит как:"Брат помирает, ушицы просит..." (вроде бы из "Неуловимых мстителей")

Feanor
P.S. программа выполнена Borland C++ v.1.3

Нет такого у борланда... Есть v.3.1... Аккуратнее надо быть... А то вместо экзамена по информатике попадешь на экзамен по биологии...

Feanor
... изменить надо лишь маленькую её часть.


Лови изменения (и только изменения):

[src c++]

//Функция будет искать и 1, и 2, и даже 20 цифр в номере...
//Правда, полный федеральный номер любого телефона 10 цифр
//(ну или 11, если сделать выход через 7). Что значат остальные 10
//-ума не приложу...

void the_tel(stud records[], int count,char*beg,int k)
{
int flag,j,i;
for (i=0;i<count;i++)
{
flag=1;
k=strlen(records .Tel)-k;//Определяем позицию, с которой будем начинать поиск в каждой конкретной записи
if(k>=0)
{
for(j=k;j<strlen(records.Tel);j++)
{
if (beg[j]!=records.Tel[j])
{
flag=0;
break;
}
}
}
else
flag=0;
if(flag) output(records);
}
}

И ещё, даже мне понятно, что теберь авторchar beg[20]; будет уже не 20, а один, вот все мои доводы...[/quot]
Можно оставить и 20, а использовать 1...

И все-таки: "...Учиться, учиться и еще раз учиться..." (В.И.Ленин)
...
Рейтинг: 0 / 0
Ерунда, но куда мне...
    #33130747
Feanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо товарищь, огоромное, Я Вам очень благодарен!!!
А это вот так выйдет???
Или нет??? А то сказал в case всё это писать...
А телефон Он обычно вводит типа 432-12 3 и надо вот эту 3 и поймать.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
struct stud
{
char Name[ 20 ],Tel[ 20 ];
int Age;
char Sex;
};

char*fname(){char *f=new char[ 40 ];
	cout<<"Enter FileName: ";cin>>f;
	return f;}


void save(fstream& f,stud x){f<<x.Name<<' '<<x.Tel<<
	' '<<x.Age<<' '<<x.Sex<<' ';}

void save(char fn[],stud x[],int n){int i;fstream f;
	f.open(fn,ios::out);f<<n<<' ';
	for(i= 0 ;i<n;i++)save(f,x[i]);
	f.close();}

void load(fstream& f,stud& x){f>>x.Name>>x.Tel
	>>x.Age>>x.Sex;}

void load(char fn[],stud x[],int& n){int i;fstream f;
	f.open(fn,ios::in); f>>n;
	for(i= 0 ;i<n;i++)load(f,x[i]);
	f.close();}


void input (stud&record)
{
cout<<"input Name:";cin>>record.Name;
cout<<"input Age:";cin>>record.Age;
cout<<"input Sex:";cin>>record.Sex;
cout<<"input Tel:";cin>>record.Tel;
}

void output(stud& record)
{
cout<<endl<<record.Name<<'\t'<<record.Age<<'\t'<<record.Sex
<<'\t'<<record.Tel<<endl;
}

void output_all(stud records[], int cout)
{
for (int i= 0 ;i<cout;i++)
output(records[i]);
}

void the_tel(stud records[], int count,char*beg,int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++)
{ 
flag= 1 ;
k=strlen(records.Tel)-k;//Определяем позицию, с которой будем начинать поиск в каждой конкретной записи
if(k>= 0 )
{
for(j=k;j<strlen(records.Tel);j++)
{
if (beg[j]!=records.Tel[j])
{
flag= 0 ;
break;
}
}
}
else
flag= 0 ;
if(flag) output(records);
}
}

void the_name(stud records[], int count,char*beg, int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++){ flag= 1 ;
for(j= 0 ;j<k;j++)
if (beg[j]!=records[i].Name[j])
{
flag= 0 ;
break;
}
if(flag) output(records[i]);}
}

char menu()
{
char b;
cout<<"1-new record"<<endl;
cout<<"2-show all record"<<endl;
cout<<"3-the_telefon"<<endl;
cout<<"4-the_name"<<endl;
cout<<"5-Exit"<<endl;
cout<<"6-Save"<<endl;
cout<<"7-Load"<<endl;
cout<<"input:";
b=getch();
return b;
}

void main()
{
stud table[ 20 ];char beg[ 1 ];int k;
int cur= 0 ;
char key= 0 ;
do {textcolor( 12 );
clrscr();
key=menu();
switch (key)
{
case'1':
if (cur< 20 )
{
input(table[cur]);
cur++;
}
else
cout<<"error:input max record"<<endl;
break;
case'2':
output_all(table, cur);
break;

case'3':
cout<<"Enter Beginning: ";
cin>>beg;
k=strlen(beg);
the_tel(table, cur, beg,k);
break;

case'4':
cout<<"Enter Beginning:";
cin>>beg;
k=strlen(beg);
the_name(table, cur, beg, k);
break;
case'5':     exit( 0 );

case'6':save(fname(),table,cur);cout<<"Save Is OK!";break;

case'7':load(fname(),table,cur);output_all(table,cur);break;

  }        getch();
 } while( 1 );
}
...
Рейтинг: 0 / 0
Ерунда, но куда мне...
    #33131010
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FeanorСпасибо товарищь, огоромное, Я Вам очень благодарен!!!
А это вот так выйдет???
Или нет??? А то сказал в case всё это писать...
А телефон Он обычно вводит типа 432-12 3 и надо вот эту 3 и поймать.


Я в предыдущем сообщении с тегами запутался, поэтому индекс у records и исчез. Правильно должно быть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
void the_tel(stud records[], int count,char*beg,int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++)
{ 
flag= 1 ;
k=strlen(records[i].Tel)-k;//Определяем позицию, с которой будем начинать поиск в каждой конкретной записи
if(k>= 0 )
{
for(j=k;j<strlen(records[i].Tel);j++)
{
if (beg[j]!=records[i].Tel[j])
{
flag= 0 ;
break;
}
}
}
else
flag= 0 ;
if(flag) output(records[i]);
}
}

А поконкретнее можно узнать, что писать в case? Функция вроде бы и так из case вызывается...
...
Рейтинг: 0 / 0
Ерунда, но куда мне...
    #33131186
Feanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он сказал, что можно в case'3' это дописать...
Вот. А можешь прямо в программу вставить, то, что ты написал (Станислав С.), Я вроде правильно сделал.
Т.е. ты сделал, что требовалось, ну т.е. программа теперь отбирает всех у кого номер телефона заканчивается определённой цифрой (последней)?
...
Рейтинг: 0 / 0
Ерунда, но куда мне...
    #33131337
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FeanorОн сказал, что можно в case'3' это дописать...
Вот. А можешь прямо в программу вставить, то, что ты написал (Станислав С.), Я вроде правильно сделал.
Т.е. ты сделал, что требовалось, ну т.е. программа теперь отбирает всех у кого номер телефона заканчивается определённой цифрой (последней)?
Элементарно. Берешь текст the_tel (то что между первой { и последней }) и вставляешь в case, туда где идет вызов функции the_tel...
Потом отлавливаешь ошибки (будет ругаться на отсутствие некоторых переменных), исправлешь и запускаешь...

Я сделал, если ты разбирал мой код внимательно, поиск по тому количеству цифр, которое было задано при вводе. Например, если было задано 3 (цифра три), то именно эта цифра (первая справа в номере) и будет искаться... Если задано 23, то будут искаться телефоны заканчивающиеся на 23 и т.д...
...
Рейтинг: 0 / 0
Ерунда, но куда мне...
    #33132016
Feanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда сставлю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
struct stud
{
char Name[ 20 ],Tel[ 20 ];
int Age;
char Sex;
};

char*fname(){char *f=new char[ 40 ];
	cout<<"Enter FileName: ";cin>>f;
	return f;}


void save(fstream& f,stud x){f<<x.Name<<' '<<x.Tel<<
	' '<<x.Age<<' '<<x.Sex<<' ';}

void save(char fn[],stud x[],int n){int i;fstream f;
	f.open(fn,ios::out);f<<n<<' ';
	for(i= 0 ;i<n;i++)save(f,x[i]);
	f.close();}

void load(fstream& f,stud& x){f>>x.Name>>x.Tel
	>>x.Age>>x.Sex;}

void load(char fn[],stud x[],int& n){int i;fstream f;
	f.open(fn,ios::in); f>>n;
	for(i= 0 ;i<n;i++)load(f,x[i]);
	f.close();}


void input (stud&record)
{
cout<<"input Name:";cin>>record.Name;
cout<<"input Age:";cin>>record.Age;
cout<<"input Sex:";cin>>record.Sex;
cout<<"input Tel:";cin>>record.Tel;
}

void output(stud& record)
{
cout<<endl<<record.Name<<'\t'<<record.Age<<'\t'<<record.Sex
<<'\t'<<record.Tel<<endl;
}

void output_all(stud records[], int cout)
{
for (int i= 0 ;i<cout;i++)
output(records[i]);
}

void the_tel(stud records[], int count,char*beg,int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++)
{ 
flag= 1 ;
k=strlen(records.Tel)-k;//Определяем позицию, с которой будем начинать поиск в каждой конкретной записи
if(k>= 0 )
{
for(j=k;j<strlen(records.Tel);j++)
{
if (beg[j]!=records.Tel[j])
{
flag= 0 ;
break;
}
}
}
else
flag= 0 ;
if(flag) output(records);
}
}

void the_name(stud records[], int count,char*beg, int k)
{
int flag,j,i;
for (i= 0 ;i<count;i++){ flag= 1 ;
for(j= 0 ;j<k;j++)
if (beg[j]!=records[i].Name[j])
{
flag= 0 ;
break;
}
if(flag) output(records[i]);}
}

char menu()
{
char b;
cout<<"1-new record"<<endl;
cout<<"2-show all record"<<endl;
cout<<"3-the_telefon"<<endl;
cout<<"4-the_name"<<endl;
cout<<"5-Exit"<<endl;
cout<<"6-Save"<<endl;
cout<<"7-Load"<<endl;
cout<<"input:";
b=getch();
return b;
}

void main()
{
stud table[ 20 ];char beg[ 1 ];int k;
int cur= 0 ;
char key= 0 ;
do {textcolor( 12 );
clrscr();
key=menu();
switch (key)
{
case'1':
if (cur< 20 )
{
input(table[cur]);
cur++;
}
else
cout<<"error:input max record"<<endl;
break;
case'2':
output_all(table, cur);
break;

case'3':
cout<<"Enter Beginning: ";
cin>>beg;
k=strlen(beg);
the_tel(table, cur, beg,k);
break;

case'4':
cout<<"Enter Beginning:";
cin>>beg;
k=strlen(beg);
the_name(table, cur, beg, k);
break;
case'5':     exit( 0 );

case'6':save(fname(),table,cur);cout<<"Save Is OK!";break;

case'7':load(fname(),table,cur);output_all(table,cur);break;

  }        getch();
 } while( 1 );
}
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ерунда, но куда мне...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]