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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2011, 12:04   #1
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию Не могу разобраться с ошибками, голову сломал

Был у меня иходник программы. Я его перелопатил под себя. При компиляции вылтают такие ошибки. Ничего не могу понять, вроде всё как надо.

Вот иходник.
И ошибки.

ПОМОГИТЕ!!! Погибаю.

В С++ я начинающий. А вот в универе сразу задали вот такую байду сделать. Поэтому просьба сильно ногами не пинать.

Последний раз редактировалось Cyber; 14.02.2011 в 13:13.
Cyber вне форума Ответить с цитированием
Старый 14.02.2011, 12:27   #2
pacniwassano
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 81
По умолчанию

код сюда выкладывайте и суть задачи
pacniwassano вне форума Ответить с цитированием
Старый 14.02.2011, 12:33   #3
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Суть задачи:

Используя структуры и функции работы с файлами создать приложение «Учет компьютеров». Реализовать возможность поиска, создания, удаления и редактирования записей. Информация хранится в текстовых файлах (файл со списком компьютеров, файл с конфигурацией компьютеров, файл с программным обеспечением). Каждая запись содержит поля: Номер компьютера, Имя пользователя, Кабинет; Конфигурация (мат. плата, видеокарта, жесткий диск, оперативная память, сетевая карта и т.д.); Программное обеспечение (операционная система, версия, дата установки, дополнительное ПО и т.д.).

Код:
#include "stdafx.h"
#include <stdio.h>
// файл протоитпа функциий ввода вывода
#include <fstream>
#include <iostream>
// файл протоитпа функциий работы с патоками
#include <malloc.h>
 //файл протоитпа функциий распределения памяти
#include <string.h>
// файл протоитпа функциий строкового типа
#include <stdlib.h>
 //файл протоитпа функциий функции преобразованиятипов
using namespace std;

struct StrComputer // обявление структуры хронящей данные о обонентах
	{
	char Nomer[50];
	//Обьявление полей стнруктуры строкового типа
	char User[20];
	//Обьявление полей стнруктуры строкового типа
	char Room[15];
	//Обьявление полей стнруктуры строкового типа
	
};

struct StrConfig // обявление структуры хроняшей данные о телефонах
	{
	char MB[50];
	//Обьявление полей стнруктуры строкового типа
	char CPU[50];
	//Обьявление полей стнруктуры строкового типа
	char RAM[50];
	//Обьявление полей стнруктуры строкового типа
	char HDD[50];
	//Обьявление полей стнруктуры строкового типа
	char VGA[50];
	//Обьявление полей стнруктуры строкового типа
	};

struct StrSoft // обявление структуры хроняшей данные о телефонах
	{
	char OS[50];
	//Обьявление полей стнруктуры строкового типа
	char Date[50];
	//Обьявление полей стнруктуры строкового типа
	char Ver[50];
	//Обьявление полей стнруктуры строкового типа
	};

//Описание процедуры поиска данных
//Входнве параметры : принцип поиска, с каким значением сравнивать
// количество итераций. Массив в котором призводить поиск
//Выходнве параметры : Индекс найденного элемента массива.
int poisk(int vibor, char *parametr,int kolIter,struct  StrComputer *MestoPoiska)
{int i,index;
//обьявление рабочих перменных
 index = 32000;
//начальнве парметры пременной
 switch (vibor)
//Оператор выбора
		{			
		case 1:
//1ый случай выбора
			for ( i = 0 ; i < kolIter ; i++)	
			//Оператор цикла прохода по массиву
			{
				if ((strcmp(MestoPoiska[i].Nomer, parametr)) == 0)
				//Сранение Элемента массива хронящего ФИО
				//и ключевого слова введенного пользователем
					{cout << "Po zaprosu bil naiden abonent:"<< endl;
					cout << MestoPoiska[i].Nomer              << endl;
					//вывод фамилии обонента
					cout << MestoPoiska[i].User			<< endl;
					//вывод адресса
					cout << MestoPoiska[i].Room			<< endl;
					//вывод Телефона 				
					index = i;}
					//Сохранение индекса элемента массива
				}
			break;
			//Операция досрочного выхода из цикла(необходима по синткасису)
		case 2:
//2ый случай выбора
			for ( i = 0 ; i < kolIter ; i++)	
			//Оператор цикла прохода по массиву
			{
				if ((strcmp(MestoPoiska[i].User , parametr)) == 0)
					//Сранение Элемента массива хронящего телефон
					//и ключевого слова введенного пользователем
					{cout << "Po zaprosu bil naiden abonentt:"<< endl;
				
					cout << MestoPoiska[i].Nomer             << endl;
					//вывод фамилии абонента
					cout << MestoPoiska[i].User			<< endl;
					//вывод группы
					cout << MestoPoiska[i].Room		    << endl;
					//вывод номереа телефона
					index = i;}
					//Сохранение индекса элемента массива
				}
			break;
			//Операция досрочного выхода из цикла(необходима по синткасису)
		case 3:
		//3ый случай выбора
			for ( i = 0 ; i < kolIter ; i++)
			//Оператор цикла прохода по массиву	
				{
				if ((strcmp(MestoPoiska[i].Room , parametr)) == 0)
				//Сранение Элемента массива хронящего группы
				//и ключевого слова введенного пользователем
					{cout << "Po zaprosu bil naiden abonent:"<< endl;
					
					cout << MestoPoiska[i].Nomer             << endl;
					//вывод фамилии аабонента
					cout << MestoPoiska[i].User			<< endl;
					//вывод адресса
					cout << MestoPoiska[i].Room		    << endl;
					//вывод номереа телефона
					index = i;}
					//Сохранение индекса элемента массива
			}
			break;;}
			//Операция досрочного выхода из цикла(необходима по синткасису)	
		return (index);	
		//возврат из процедуры индекса элемента
			;}

Последний раз редактировалось Cyber; 14.02.2011 в 16:38.
Cyber вне форума Ответить с цитированием
Старый 14.02.2011, 13:03   #4
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Код:
void main(int argc, char* argv[])
//основная процедура программы
{
	int deistvie, vibor, indexx, size, i;
	//определение рабочих переменных
	indexx = 0;
	char parametr[50];
	struct  StrComputer *mas; 
	struct  StrConfig  *mas1;
	struct  StrSoft  *mas2;


	cout << "Vas privetstvuet pogramma tel spravochnika" << endl;
	//выведение строки преветствия 
	ifstream infile  ("Computers.txt");	 
	//организация потока даннвх при работе с тексовым файлом хронящим информацию о обонентах 
	infile.seekg(0, ios ::end);
	//перенос укзателя нв последний хлемент файла
	 //size = 0;
	 //начальный размер массива хроняшего даннве о обонентах
	 size = infile.tellg();
	 // считывание размера файла
	 size = size/40;
     //определение количества записей(труктура занимает около 40 килобайт)
	 cout << "Kolichestvo zapisei v file s dannymi o abonentah" << size << endl;
	 //выведение строки сообшения о вол - ве данных в файле
	 mas =  (struct  StrComputer*) malloc (size * sizeof(struct  StrComputer));
     //бьявление массива структурного типа и выделение под него памяти
	 infile.seekg(0, ios ::beg);
	 //перенос укзателя нв последний хлемент файла
	 for (int i = 0; i < size; i++)
	 //цикл заполнения массива из потока данных
	 //цикл от 0 элемента по количество элемента
	 {infile .getline(mas[i].Nomer,10);
	  //считывание и запись в массив фамилии
	 infile .getline(mas[i].User,100);
	 //считывание и запись в массив адреса
	 infile .getline(mas[i].Room,10);}
     //считывание и запись в массив номера телефоона
	 infile.close();
	 //закрытие потока данных

     ifstream infile1 ("Config.txt");
	 //организация потока даннвх при работе с тексовым файлом хронящим информацию о оценках
	 mas1 =  (struct  StrConfig*) malloc (size * sizeof(struct  StrConfig));
     //бьявление массива структурного типа и выделение под него памяти
	 infile.seekg(0, ios ::beg);
	 //перенос укзателя нв последний хлемент файла
	 for (i = 0; i < size; i++)
	 //цикл заполнения массива из потока данных
	 //цикл от 0 элемента по количество элемента
		{
		infile1 .getline(mas1[i].MB,50);
		infile1 .getline(mas1[i].CPU,10);
		infile1 .getline(mas1[i].RAM,50);
		infile1 .getline(mas1[i].HDD,10);
		infile1 .getline(mas1[i].VGA,50);
		}
	 infile1.close();
	 //закрытие потока данных

     ifstream infile2 ("Soft.txt");
	 //организация потока даннвх при работе с тексовым файлом хронящим информацию о оценках
	 mas2 = (struct StrSoft*) malloc (size * sizeof(struct StrSoft));
     //бьявление массива структурного типа и выделение под него памяти
	 infile.seekg(0, ios ::beg);
	 //перенос укзателя нв последний хлемент файла
	 for (i = 0; i < size; i++)
	 //цикл заполнения массива из потока данных
	 //цикл от 0 элемента по количество элемента
		{infile2 .getline(mas2[i].OS,50);
		infile2 .getline(mas2[i].Date,15);
		infile2 .getline(mas2[i].Ver,50);}
	 infile2.close();
	 //закрытие потока данных

Последний раз редактировалось Cyber; 14.02.2011 в 16:38.
Cyber вне форума Ответить с цитированием
Старый 14.02.2011, 13:05   #5
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Код:
for (i = 0; i < size; i++)
	//цикл прохода по массиву и выведения даннвх
	//на дисплэй
	{   cout << mas[i].Nomer     << endl;
	    cout << mas[i].User   << endl;
		 cout << mas[i].Room << endl;
		 cout << mas1[i].MB << " " << mas1[i].CPU << endl;
		 cout << mas1[i].HDD << " " << mas1[i].VGA << endl;
		 cout << mas2[i].OS << " " << mas2[i].Ver << endl;
	 }
	 
	//блок сообщений для работы с консольным пиложением
	cout << "****************************************************************************" << endl;
	cout << "Dlia poiska opredelennoi zapisi vvedite 1"           << endl;
	cout << "Dlia sozdania zapisi vvedite 2"                      << endl;
	cout << "Dlia ydalenia zapisi vvedite 3"					  << endl;
	cout << "Dlia redaktirovania opredelennoi zapisi vvedite  4"  << endl;
	cout << "Dlia vyborki luchshix i xudshix albomov nagmite 5" << endl; 		 
	cout << "****************************************************************************" << endl;
	
	cin >> deistvie;
	//считывание выбранного действия
	switch (deistvie)
	//оператор выбора действия призводимого программой
	{
		case 1:
			//если выбрано действие 1
			cout << "****************************************************************************" << endl;
			cout << "Po 4emy proizvodit' poisc???"					<< endl;
			cout << "Iskat' po Fio nozmite - 1"						<< endl;
			cout << "Iskat' po Adresu  - 2"  << endl;
			cout << "Iskat' po telefonu   - 3"					<< endl;
			// заппрс по какому пинципу призводить поиск??
			cin >> vibor;
			//инициализация поиска
			printf("Vvedite interesyus4ii vas parametr");
			//предложение ввести параметр поиска
			gets_s(parametr);
			//считывание 	
			indexx = poisk(vibor,parametr,size,mas);
			//переходна поцедуру поиска
			//индекс найденного элемента на данном этапе ненужен			
		break;
			//функция прерывание цикла
		case 2:
			//если выбрано действие 2
			//добавление данных в структуру
			size = size + 1;
			//увеличение количества массивов на 1 
            mas  = (struct  StrComputer*)realloc(mas,size* sizeof(struct  StrComputer));
			//переспределение памяти в массиве содержащем записи о студентах
			mas1 = (struct  StrConfig*) realloc (mas1,size * sizeof(struct  StrConfig));
			//переспределение памяти в массиве содержащем записи о предметах и иценкам по ним. студентов
			mas1 = (struct  StrConfig*) realloc (mas1,size * sizeof(struct  StrConfig));
			//переспределение памяти в массиве содержащем записи о предметах и иценкам по ним. студентов
			cout << "****************************************************************************" << endl;
			
			printf("Vvedite Fio: ");
			//предложение ввести ФИО абонента
			gets_s(mas[size - 1].Nomer);// = FIO;
			//считывание в массив ФИО абонента
			printf("Vvedite Adres ");
			//предложение ввести адрес
			gets_s(mas[size - 1].User);// = Adres;
			//считывание в массив Adres
			printf("Vvedite Telefon ");
			//предложение ввести telefon
			gets_s(mas[size - 1].Room);// = Tel;
			//считывание в массив телефона абонента
			printf("Vvedite 1 Mobilu ");
			//предложение ввести мобильник
			gets_s(mas1[size - 1].MB);
			//считывание в массив мобильник
			printf("Vvedite  nomer1 "); 		 
			gets_s(mas1[size - 1].CPU);
	    	printf("Vvedite nomer ");
			gets_s(mas1[size - 1].RAM);
			printf("Vvedite Work "); 		 
			gets_s(mas1[size - 1].HDD);;
			printf("Vvedite Imail ");
			gets_s(mas1[size - 1].VGA);
			printf("Vvedite  "); 		 
			gets_s(mas2[size - 1].OS);			
			printf("Vvedite  "); 		 
			gets_s(mas2[size - 1].Date);			
			printf("Vvedite  "); 		 
			gets_s(mas2[size - 1].Ver);			
			cout << "****************************************************************************" << endl;
			//выведение сипоратора
		break;
		// команда досрочного выхода из цикла

Последний раз редактировалось Cyber; 14.02.2011 в 16:38.
Cyber вне форума Ответить с цитированием
Старый 14.02.2011, 13:05   #6
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Код:
case 3:
			//если выбрано действие 3
			//процедура удаления
			cout << "****************************************************************************" << endl;
			cout << "Po 4emy proizvodit' poisc dlia ydaleni9l???"					<< endl;
			cout << "Iskat' po Fio nozmite - 1"						<< endl;
			cout << "Iskat' po Adres nozmite - 2"  << endl;
			cout << "Iskat' po Tel - 3"					<< endl;
			//запрос по какому параметру необходимо найти элемент для удаления
			cin >> vibor;
			//считывание параметра
			printf("Vvedite interesyus4ii vas parametr");
			//инициализация параметра
			gets_s(parametr);
			//считвание строки с парметро для поиска
			indexx = poisk(vibor,parametr,size,mas) - 1;
			//переход на функцию поиска с передачей параметров
			if (indexx == 32000)
			//если ниодной записи не найдено возвращается число 32000
				cout << "Po danniomy parametry ne naideno neodnoi zapisi"<< endl;
			//вцыведенние строки сообшения о том что ненайдено ни 1 го элемента
			else
			// в противном случае(если элемент найден)
				
				for (i = indexx; i < size; i++)
				//цикл прохода по массиву от индекса найденого элемента по конц массива
				{mas[i] = mas[i + 1];
				//перприсваение данных в массиве со списком студентов на элемент ранее (-1)
				mas1[i] = mas1[i + 1];}
				//перприсваение данных в массиве со списком предметов и оценок элемент ранее (-1)	
				mas2[i] = mas2[i + 1];}
				//перприсваение данных в массиве со списком предметов и оценок элемент ранее (-1)	
				size = size - 1;
				//уменьшение на 1 количества элементов
				realloc(mas,(size)  * sizeof(struct  StrComputer));
				//перераспределние памяти в массиве
				realloc(mas1,(size) * sizeof(struct  StrConfig));
				//перераспределние памяти в массиве				
				realloc(mas2,(size) * sizeof(struct  StrSoft));
				//перераспределние памяти в массиве				
		break;
		//функция досрочного выхода из цикла
		case 4:
		//если выбрано действие 4
		//редактирование записи
			cout << "****************************************************************************" << endl;
			cout << "Po 4emy proizvodit' poisc dlia redaktirovania???"<< endl;
			cout << "Iskat' po Fio nozmite - 1"						<< endl;
			cout << "Iskat' po Adres nozmite - 2"  << endl;
			cout << "Iskat' po Tel - 3"					<< endl;
			//запрос по какому параметру необходимо найти элемент для редактирования
			cin >> vibor;
			//считывание параметра
			printf("Vvedite interesyus4ii vas parametr");
			//инициализация параметра
			gets_s(parametr);
			//считвание строки с парметро для поиска
			indexx = poisk(vibor,parametr,size,mas) ;
			//переход на функцию поиска с передачей параметров
			if (indexx == 32000)
			//если ниодной записи не найдено возвращается число 32000
				cout << "Po danniomy parametry ne naideno neodnoi zapisi"<< endl;
				//вцыведенние строки сообшения о том что ненайдено ни 1 го элемента
			else
				//в пративном случае:
				cout << "****************************************************************************" << endl;
				//перезаписывние данных с клавиатуры на элемент  с найденным индексом			
				printf("Vvedite Fio: ");
				gets_s(mas[indexx].Nomer);
				printf("Vvedite Adres ");
				gets_s(mas[indexx].User);
				printf("Vvedite Tel ");
				gets_s(mas[indexx].Room);
				printf("Vvedite 1 nomer ");
				gets_s(mas1[indexx].MB);
				printf("Vvedite Work "); 		 
				gets_s(mas1[indexx].CPU);
				printf("Vvedite 2 nomer ");
				gets_s(mas1[indexx].RAM);
				printf("Vvedite nomet "); 		 
				gets_s(mas1[indexx].HDD);
				printf("Vvedite Imail  ");
				gets_s(mas1[indexx].VGA);
				printf("Vvedite Imail "); 		 
				gets_s(mas2[indexx].OS);
				printf("Vvedite Imail "); 		 
				gets_s(mas2[indexx].Date);
				printf("Vvedite Imail "); 		 
				gets_s(mas2[indexx].Ver);

		break;
		ofstream outfile ("Computers.txt");
		//организация потока для выведения в файл со списком абонентов		
		ofstream outfile1 ("Config.txt");
		//организация потока для выведения в файл со списком тедлефонов
		ofstream outfile2 ("Soft.txt");
		//организация потока для выведения в файл со списком тедлефонов

		  		 for (i = 0; i < size; i++)
				//Цикл проходки по массиву
		{
		outfile << mas[i].Nomer     << endl;
		//передача из массива в поток ФИО
	    outfile << mas[i].User   << endl;
		//передача из массива в адреса
		outfile << mas[i].Room << endl;
		}
	//Потоковое сохранение оценок и предметов из редактированного массива структур
			for (i = 0; i < size; i++)
		{   
		outfile1 << mas1[i].MB  << endl;
	    outfile1 << mas1[i].CPU << endl;
		outfile1 << mas1[i].RAM  << endl;
		outfile1 << mas1[i].HDD << endl;
		outfile1 << mas1[i].VGA  << endl;
		} 

			for (i = 0; i < size; i++)
		{   
		outfile2 << mas2[i].OS  << endl;
	    outfile2 << mas2[i].Onstdate << endl;
		outfile2 << mas2[i].Ver  << endl;
		} 

		}

Последний раз редактировалось Cyber; 14.02.2011 в 16:37.
Cyber вне форума Ответить с цитированием
Старый 14.02.2011, 13:12   #7
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

В итоге выдает такие ошибки:
1>------ Построение начато: проект: Kursovik, Конфигурация: Debug Win32 ------
1> Kursovik.cpp
1>d:\учеба\контрольные\аяп\курсовик \kursovik\kursovik\kursovik.cpp(151 ): warning C4244: =: преобразование "std::streamoff" в "int", возможна потеря данных
1>d:\учеба\контрольные\аяп\курсовик \kursovik\kursovik\kursovik.cpp(339 ): error C2043: недопустимый break
1>d:\учеба\контрольные\аяп\курсовик \kursovik\kursovik\kursovik.cpp(341 ): error C2046: недопустимый вариант выбора
1>d:\учеба\контрольные\аяп\курсовик \kursovik\kursovik\kursovik.cpp(389 ): error C2043: недопустимый break
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Cyber вне форума Ответить с цитированием
Старый 14.02.2011, 16:29   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

кнопочка , вставьте весь код в такие кнопочки, будьте добры
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 14.02.2011, 16:40   #9
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
кнопочка , вставьте весь код в такие кнопочки, будьте добры
Как просили! Я просто не знал. Каюсь, мануал по форуму не читал.
Cyber вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование алгоритмов с использованием подпрограмм - функций, не могу справиться с ошибками Positive-z Общие вопросы C/C++ 4 13.06.2010 17:25
Всю голову сломал lesha_firs Общие вопросы Delphi 6 17.06.2009 16:59
Помогите разобраться с ошибками в Delphi7 Statusbar Виноградик Помощь студентам 2 05.06.2009 11:26
Прошу помочь разобраться с ошибками при компиляции проекта keeper555 Общие вопросы Delphi 4 27.03.2009 21:02
Помогите разобраться с ошибками в исходнике С++ Go6a Помощь студентам 1 03.05.2008 17:43