Описать массив записей - телефонный справочник - 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), программа завершается.
- Если введенная фамилия не совпадает ни с одной фамилией в файле, выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д