Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Что вы предпочтете?
Visual Studio 2005 4 3.77%
Visual Studio.net 0 0%
Borland Builder 6 1 0.94%
Delphi 7 1 0.94%
Опрос закрыт (rpy3uH) 100 94.34%
Голосовавшие: 106. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2008, 19:13   #1
Aliance
 
Регистрация: 29.09.2008
Сообщений: 3
Вопрос Работа с массивами и структурами (С/С++)

Код:
#include <iostream>
using namespace std;
#include <string.h>
#include "rchar.h"
// описание структуры Читатель
struct chita
{ char fam[30];
  char pol;
  int god;
  int mes;
  int chis;
};
chita * makemas(int razmer)
{ chita * d;
  d=new chita[razmer];
  return d;
}
void input(chita * m, int & k)
{ if (m!=NULL)
	{ cout<<R("Фамилия: ");
      cin.getline((m+k)->fam,29);
      cin.getline((m+k)->fam,29);
      cout<<R("Пол: ");
      cin>>(m+k)->pol;
      cout<<R("Год рождения: ");
	  cin>>(m+k)->god;
	  cout<<R("Месяц:        ");
	  cin>>(m+k)->mes;
	  cout<<R("Число:        ");
	  cin>>(m+k)->chis;
      k++;
	} else cout<<R("Массив не создан!\n");
}
int poisk_chita(chita * m,int k,char * family,char p,chita & z)
{ int i;
  if (m!=NULL)
  {for (i=0;i<k;i++)  
    if (strcmp((m+i)->fam,family)==0)
		{ z=*(m+i);return 1;};             
  } else cout<<R("Массив не создан!\n");
  return 0;
}
void output(chita * m, int  k)     //Мною написана функция вывода
{
     for(int i=0;i<k;i++)
	 {cout<<R("Фамилия: ");cout<<(m+i)->fam,29;cout<<'\n';
      cout<<R("Пол: ");    cout<<(m+i)->pol;cout<<'\n';
	  cout<<R("Год рождения: ");cout<<(m+i)->god;cout<<'\n';
	  cout<<R("Месяц: ");  cout<<(m+i)->mes;cout<<'\n';
	  cout<<R("Число: ");  cout<<(m+i)->chis;cout<<'\n';}

}
void main()
{ chita * ukazmas=NULL;   // Указатель на массив читателей
  int razm=0;             // размер массива
  int kol=0;              // количество читателей
  int kod;                // код операции
  char pol;               // пол 
  char f[30];             // фамилия
  chita info;             // сведения о читателе
  do
  { cout<<R("1. Создание массива заданного размера\n");
    cout<<R("2. Ввод нового читателя\n");
    cout<<R("3. Данные читателя с заданной фамилией\n");
	cout<<R("4. Уничтожение массива\n");
	cout<<R("5. Вывод информации обо всех читателях\n");
	cout<<R("9. Конец работы\n");
	cin>>kod;
	switch (kod)
	{  case 1: if (razm==0)
				{ do
					{cout<<R("Размер массива=");cin>>razm;}
				  while (razm<=0);
	              ukazmas=makemas(razm);
				} else 
				{cout<<R("Массив уже был создан ранее!\n");
				 cout<<R("Его размер=")<<razm<<'\n';
				}
			 if(razm<kol)
				 ukazmas=new chita[razm];
	           break;
	   case 2: input(ukazmas,kol);
	           cout<<R("Всего введено: ")<<kol;
			   cout<<R(" человек")<<'\n';
			   break;
	   case 3: cout<<R("Пол:     ");cin>>pol;
		       cout<<R("Фамилия: ");
		       cin.getline(f,29);cin.getline(f,29);			   
			   if (poisk_chita(ukazmas,kol,f,pol,info)==1)
			   { cout<<R("Фамилия:      ")<<info.fam<<'\n';
			     cout<<R("Пол:          ");
				 if (info.pol=='1') cout<<R("мужской\n");
				 else cout<<R("женский\n");
				 cout<<R("Год рождения: ")<<info.god<<'\n';
				 cout<<R("Месяц:        ")<<info.mes<<'\n';
				 cout<<R("Число:        ")<<info.chis<<'\n';
			   } else cout<<R("Данных нет\n");
		       break;
	   case 4: if (razm>0) 
			   { delete [] ukazmas;
		         razm=0;
		         cout<<R("Массив уничтожен\n");
			   } else cout<<R("Массив не создавался!\n");
		       if(razm>kol)
			   {
			    delete [] ukazmas;
				razm=0;
				cout<<R("Масив уничтожен\n");
			   }
		       break;
	   case 5: output(ukazmas,kol); // значеие вывода
		       break;
	   case 9: break;
	   default: cout<<R("Задание неверно! \n");
	}
  }
  while (kod!=9);
}
2. Попробуйте полностью заполнить массив данными. Для этого создайте массив небольшого размера (например, на 2 читателя), введите данные на двух человек, а затем попробуйте ввести данные на третьего читателя. Что будет? Измените функцию ввода так, чтобы она контролировала число ввод данных сверх заданного размера и возвращала признак 0, если данные не введены, или 1, если введены
3. Разработайте функцию, обеспечивающую сортировку массива данных по году рождения. Желательно учесть месяц и число
4. Разработайте функцию, обеспечивающую удаление из массива данных о читателе с заданной фамилией. Размер массива при этом должен остаться прежним, но сведения должны быть расположены последовательно. Например, при удалении данных о втором читателе на его место должны переместиться данные о третьем, на место третьего – данные четвертого и т.д. Число читателей должно уменьшиться на 1

Последний раз редактировалось rpy3uH; 27.10.2008 в 20:50.
Aliance вне форума Ответить с цитированием
Старый 27.10.2008, 19:56   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Хех... наш люд я вижу на месте не стоит Прогрессирует так сказать молодежь!!!
Значит так, парень, сформулируй вопрос и что именно НЕ ПОЛУЧАЕТСЯ. А то так - написал код, написал задание, а дальше типа сами все сами.
Попробуй сам написать, а то ты я вижу расчитываешь на халяву. И код свой причеши хоть чуток. Хотя бы тегом правильным сделай.

ПыСы: а насчет опроса, хех... неожиданный такой стратегический ход
MaTBeu вне форума Ответить с цитированием
Старый 27.10.2008, 20:55   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
ПыСы: а насчет опроса, хех... неожиданный такой стратегический ход
а как вам мой стратегический подход?
rpy3uH вне форума Ответить с цитированием
Старый 28.10.2008, 22:28   #4
Aliance
 
Регистрация: 29.09.2008
Сообщений: 3
По умолчанию

Да я уже пробовал писать логически понимаю все как должно быть а вот код не пишется уж очень там ошибок много выходит!!!Че вы так ко мне жестоко эт моя первая тема на форуме и первый мой вопрос!!!И прошу помочь (а не ищу халяву) как говорят тут некоторые не будем тыкать пальцем.Извините если что... и Помогите! А не разглагольствуйте!!!
Aliance вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивами mager JavaScript, Ajax 5 27.08.2008 22:02
Работа с массивами Stelix Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2008 11:37
Работа с массивами в C# MaskEdit Общие вопросы .NET 3 17.05.2008 17:59
Работа с массивами rexec Microsoft Office Excel 12 21.04.2008 13:29
Работа с массивами DeN1308 Помощь студентам 3 09.11.2007 11:50