Описать массив записей - телефонный справочник - C (СИ)
Формулировка задачи:
Ребят, помогите пожалуйста, иначе очислят((((( Надо написать четыре проги, 3 мне написали, но они выдают ошибку и одну я не написал...
пожалуйста помогите
1) Написать программу, которая выводит на экран содержимое файла A:/numbers.txt
2) Составьте программу, которая описывает массив записей-телефонный справочник и обеспечивает ввод данных, поиск номера телефона по фамилии
3) Создайте функцию, которая возвращает количество элементов массива, меньших, чем число, заданное пользователем. Целочисленный массив и число передаются в качестве параметра. При этом массив передается через указатель
4) Создайте функцию возвращающую значение квадрата своего аргумента. Перегрузите функцию так, чтобы она могла вызываться или с целой или со строкой, задающей целое значение аргумента.Например, оба эти вызова должны подсчитывать значение 5вквадрате=25
1,3,4 мне сделали, но там ошибки проверьте где может быть плиззззз
1я:
3я :
4я :
#include <stdio.h>
#include <conio.h>
main()
{
FILE *fd;
fd=fopen("file_name.txt","r");// – открываем файл в режим чтения , файл должен существовать !!!
if(fd==NULL)
{
printf("\n Ошибка открытия файла");
return 0;
}
char c=getc(fd); // getc Возвращает следующий символ из файла
while(c!=EOF) //– сравниваем c константой EOF – конец файла
{
printf("%c",c);
c=getc(fd);
}
fclose(fd); // закрываем файл
getch();
return 0;
}#include <iostream.h>
#include <conio.h>
int f=0;
int * SortMass(int *addr,int num_elements,int x)
{
int *tmp = new int [num_elements];
int k=0;
for(int i=0;i<num_elements;i++)
{
if(addr[i]<x)
{
tmp[k]=addr[i];
k++;
}
}
f=k;
return tmp;
}
int main()
{
int n = 5 , x ; // 5 ел-ов
int *M = new int [n];
cout << "Source Massive is : " ;
randomize();
for(int i=0;i<n;i++) // Забьём массив рандоммными значениями
{
M[i]=rand()%11; // От 0 до 11
cout << M[i] << " ";
}
cout << endl << "Get x = ";
cin >> x;
int *N = SortMass(M,n,x); // Функция даст нам новый указатель на массив
cout << "New Massive is : " ;
for(int i=0;i<f;i++)
{
cout << N[i] << " ";
}
getch();
return 0;
}#include <iostream.h>
#include <conio.h>
long kv(int x){return x*x;}
long kv(char *str) { return atoi(str)*atoi(str);}
int main()
{
int x;
cout << "Get x = ";
cin >> x;
if(isdigit(x)==0)return 0;
cout << "Kak chislo -> result = " << kv(x);
int *m = &x; // m указатель на x
cout << "Kak stroka -> result = " << kv(*m);
getch();
return 0;
}Решение задачи: «Описать массив записей - телефонный справочник»
textual
Листинг программы
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
class phone
{
friend istream& operator >> (istream& in, phone& numbi);
friend ostream& operator << (ostream& out, phone numbo);
public:
char firstname[20];
char lastname[20];
char middlename[20];
char number[15];
};
istream& operator >> (istream& in, phone& numbi)
{
in >> numbi.firstname >> numbi.lastname >> numbi.middlename >> numbi.number;
return in;
}
ostream& operator << (ostream& out, phone numbo)
{
out << numbo.firstname << " " << numbo.lastname << " " << numbo.middlename << " " << numbo.number;
out << endl;
return out;
}
int main()
{
phone name[75], namen[75];
char next;
char lastname[20];
int i, b;
cout << "1.Add contact, 2.Search contact, 3.Exit" << endl;
cin >> b;
if(b==1)
{
ofstream fileout("file.txt", ios::app);
if(!fileout)
{
cerr << "Error: opening file" << endl;
return 1;
}
for(i=0;i<1;i++)
{
cout << "Enter firstname, lastname, middlename, number" << endl;
cin >> name[i];
fileout << name[i];
}
}
else
if(b==2)
{
cout << "Enter lastname of the contact:";
cin >> lastname;
ifstream filein("file.txt");
if(!filein)
{
cerr << "Error: opening file";
return 2;
}
i=0;
while(1)
{
filein >> namen[i];
if(!strcmp(namen[i].lastname, lastname))
{
cout << namen[i];
break;
}
next=filein.peek();
if(next==EOF)break;
i++;
}
}
else
if(b==3) return 1;
return 0;
}
Объяснение кода листинга программы
- Создается класс phone для представления записей телефонного справочника.
- В классе phone создаются четыре приватных переменных: firstname, lastname, middlename, number.
- Определяются два дружественных оператора для ввода и вывода объектов класса phone.
- В функции main() создается массив из 75 объектов класса phone, name и namen.
- Пользователю предлагается ввести число от 1 до 3.
- Если выбрано добавление контакта (1), создается файл для записи данных, и пользователю предлагается ввести данные о контакте.
- Данные о контакте записываются в файл.
- Если выбрано поиск контакта (2), пользователю предлагается ввести фамилию искомого контакта.
- Файл открывается для чтения, и данные о контактах с указанной фамилией читаются из файла.
- Если выбрано выход (3), программа завершается.
- Если введенная фамилия не совпадает ни с одной фамилией в файле, выводится сообщение об ошибке.