Описать массив записей - телефонный справочник - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребят, помогите пожалуйста, иначе очислят((((( Надо написать четыре проги, 3 мне написали, но они выдают ошибку и одну я не написал... пожалуйста помогите 1) Написать программу, которая выводит на экран содержимое файла A:/numbers.txt 2) Составьте программу, которая описывает массив записей-телефонный справочник и обеспечивает ввод данных, поиск номера телефона по фамилии 3) Создайте функцию, которая возвращает количество элементов массива, меньших, чем число, заданное пользователем. Целочисленный массив и число передаются в качестве параметра. При этом массив передается через указатель 4) Создайте функцию возвращающую значение квадрата своего аргумента. Перегрузите функцию так, чтобы она могла вызываться или с целой или со строкой, задающей целое значение аргумента.Например, оба эти вызова должны подсчитывать значение 5вквадрате=25 1,3,4 мне сделали, но там ошибки проверьте где может быть плиззззз 1я:
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. FILE *fd;
  6. fd=fopen("file_name.txt","r");// – открываем файл в режим чтения , файл должен существовать !!!
  7. if(fd==NULL)
  8. {
  9. printf("\n Ошибка открытия файла");
  10. return 0;
  11. }
  12. char c=getc(fd); // getc Возвращает следующий символ из файла
  13. while(c!=EOF) //– сравниваем c константой EOF – конец файла
  14. {
  15. printf("%c",c);
  16. c=getc(fd);
  17. }
  18. fclose(fd); // закрываем файл
  19. getch();
  20. return 0;
  21. }
3я :
Листинг программы
  1. #include <iostream.h>
  2. #include <conio.h>
  3. int f=0;
  4. int * SortMass(int *addr,int num_elements,int x)
  5. {
  6. int *tmp = new int [num_elements];
  7. int k=0;
  8. for(int i=0;i<num_elements;i++)
  9. {
  10. if(addr[i]<x)
  11. {
  12. tmp[k]=addr[i];
  13. k++;
  14. }
  15. }
  16. f=k;
  17. return tmp;
  18. }
  19. int main()
  20. {
  21. int n = 5 , x ; // 5 ел-ов
  22. int *M = new int [n];
  23. cout << "Source Massive is : " ;
  24. randomize();
  25. for(int i=0;i<n;i++) // Забьём массив рандоммными значениями
  26. {
  27. M[i]=rand()%11; // От 0 до 11
  28. cout << M[i] << " ";
  29. }
  30. cout << endl << "Get x = ";
  31. cin >> x;
  32. int *N = SortMass(M,n,x); // Функция даст нам новый указатель на массив
  33. cout << "New Massive is : " ;
  34. for(int i=0;i<f;i++)
  35. {
  36. cout << N[i] << " ";
  37. }
  38. getch();
  39. return 0;
  40. }
4я :
Листинг программы
  1. #include <iostream.h>
  2. #include <conio.h>
  3. long kv(int x){return x*x;}
  4. long kv(char *str) { return atoi(str)*atoi(str);}
  5. int main()
  6. {
  7. int x;
  8. cout << "Get x = ";
  9. cin >> x;
  10. if(isdigit(x)==0)return 0;
  11. cout << "Kak chislo -> result = " << kv(x);
  12. int *m = &x; // m указатель на x
  13. cout << "Kak stroka -> result = " << kv(*m);
  14. getch();
  15. return 0;
  16. }

Решение задачи: «Описать массив записей - телефонный справочник»

textual
Листинг программы
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. class phone
  7. {
  8.  friend istream& operator >> (istream& in, phone& numbi);
  9.  friend ostream& operator << (ostream& out, phone numbo);
  10. public:
  11.  char firstname[20];
  12.  char lastname[20];
  13.  char middlename[20];
  14.  char number[15];
  15. };
  16. istream& operator >> (istream& in, phone& numbi)
  17. {
  18.  in >> numbi.firstname >> numbi.lastname >> numbi.middlename >> numbi.number;
  19.  return in;
  20. }
  21. ostream& operator << (ostream& out, phone numbo)
  22. {
  23.  out << numbo.firstname << " " << numbo.lastname << " " << numbo.middlename << " " << numbo.number;
  24.  out << endl;
  25.  return out;
  26. }
  27. int main()
  28. {
  29.  phone name[75], namen[75];
  30.  char next;
  31.  char lastname[20];
  32.  int i, b;
  33.  cout << "1.Add contact, 2.Search contact, 3.Exit" << endl;
  34.  cin >> b;
  35.  if(b==1)
  36.  {
  37.  ofstream fileout("file.txt", ios::app);
  38.  if(!fileout)
  39.  {
  40.  cerr << "Error: opening file" << endl;
  41.  return 1;
  42.  }
  43.  for(i=0;i<1;i++)
  44.  {
  45.  cout << "Enter firstname, lastname, middlename, number" << endl;
  46.  cin >> name[i];
  47.  fileout << name[i];
  48.  }
  49.  }
  50.  else
  51.      if(b==2)
  52.      {
  53.  cout << "Enter lastname of the contact:";
  54.  cin >> lastname;
  55.  ifstream filein("file.txt");
  56.  if(!filein)
  57.  {
  58.   cerr << "Error: opening file";
  59.   return 2;
  60.  }
  61.  i=0;
  62.  while(1)
  63.  {
  64.   filein >> namen[i];
  65.   if(!strcmp(namen[i].lastname, lastname))
  66.   {
  67.   cout << namen[i];
  68.   break;
  69.   }
  70.   next=filein.peek();
  71.   if(next==EOF)break;
  72.   i++;
  73.  }
  74.      }
  75.      else
  76.          if(b==3) return 1;
  77.  return 0;
  78. }

Объяснение кода листинга программы

  1. Создается класс phone для представления записей телефонного справочника.
  2. В классе phone создаются четыре приватных переменных: firstname, lastname, middlename, number.
  3. Определяются два дружественных оператора для ввода и вывода объектов класса phone.
  4. В функции main() создается массив из 75 объектов класса phone, name и namen.
  5. Пользователю предлагается ввести число от 1 до 3.
  6. Если выбрано добавление контакта (1), создается файл для записи данных, и пользователю предлагается ввести данные о контакте.
  7. Данные о контакте записываются в файл.
  8. Если выбрано поиск контакта (2), пользователю предлагается ввести фамилию искомого контакта.
  9. Файл открывается для чтения, и данные о контактах с указанной фамилией читаются из файла.
  10. Если выбрано выход (3), программа завершается.
  11. Если введенная фамилия не совпадает ни с одной фамилией в файле, выводится сообщение об ошибке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы