Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Проверьте код, найдите ошибку

Ответить
Настройки темы
C/C++ - Проверьте код, найдите ошибку

Новый участник


Сообщения: 5
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 26-12-2012
Описание: tag code...
Создать файл, содержащий сведения о сотрудниках фирмы. Запись включает: Ф.И.О. сотрудников; табельный номер; количество проработанных часов за месяц; почасовой тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. ВЫВЕСТИ РАЗМЕР ЗАРАБОТНОЙ ПЛАТЫ КАЖДОГО СОТРУДНИКА ФИРМЫ ЗА ВЫЧЕТОМ ПОДОХОДНОГО НАЛОГА, КОТОРЫЙ СОСТАВЛЯЕТ 12% ОТ СУММЫ ЗАРАБОТНОЙ ПЛАТЫ.

Код: Выделить весь код
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct ved
{
	char name[20];
	int number;
	int chasi;
	int tarif;
	//int zarplata;
};

void main()
{
	int z=0;
	struct ved mas[20];
	int size=0;
	FILE *f;
	f=fopen("1.txt","r+");
	while(!feof(f))
	{
		fgets(mas[size].name,50,f);	
		fscanf(f,"%d\n",&mas[size].number);
		fscanf(f,"%d\n",&mas[size].chasi);
		fscanf(f,"%d\n",&mas[size].tarif);
		//fscanf(f,"%d\n",&mas[size].zarplata);
		size++;
	}
	size--;
	fclose(f);
	int a=12;
	while (a!=0)
	{
		printf("\nVibor\n");
		printf("1 prosmotr vseh\n");
		printf("2 add\n");
		printf("3 del\n");
		printf("4 edit\n");
		printf("5 vivod viplat po otd+sr.zp\n");
		printf("0 exit\n");
		printf("_____________________________\n\n");
		fflush(stdin);
		scanf("%d",&a);
		switch(a)
		{
			case 1:
			{	
				for (int i=0; i<=size; i++)
				{
					printf("\n");
					printf("name\t\t");
					fputs(mas[i].name,stdout);
					printf("number\t\t");
					printf("%d\n",mas[i].number);
					printf("chasi\t\t");
					printf("%d\n",mas[i].chasi);
					printf("tarif\t\t");
					printf("%d\n",mas[i].tarif);
					printf("zarplata\t");
					if(mas[i].chasi>120)
					{
						z=(mas[i].chasi-120)*(mas[i].tarif*2)+(120*mas[i].tarif);
					}
					else 
					{
						z=mas[i].chasi*mas[i].tarif;
					}
					fprintf(stdout,"%d\n", z);
					printf("\n");
				}
				break;
			}
			case 2:
			{
				//добавление
				size++;
				fflush (stdin);
				printf("name\t");
				fgets(mas[size].name,50,stdin);
				fflush (stdin);
				printf("number\t");
				scanf("%d", &mas[size].number);
				fflush (stdin);
				printf("chasi\t");
				scanf("%d", &mas[size].chasi);
				fflush (stdin);
				printf("tarif\t");
				scanf("%d", &mas[size].tarif);
				break;
			}
			case 3:
			{
				//удаление
				int k;
				int c;
				bool m=false;
				fflush (stdin);
				fputs("vvedite number\t",stdout);
				scanf("%d",&c);
				for(int i=0; i<=size; i++)
				{
					if(mas[i].number==c)
					{
						k=i;
					    m=true;
						break;
					}
				}
				while((k<=size)&m)
				{
					mas[k]=mas[k+1];
					k++;
				}
				size--;
				break;
			}
			case 4:
			{
				//редактирование
				int temp;
				fflush (stdin);
				puts("vvedite number\t");
				scanf("%d",&temp);
				for(int i=0; i<=size; i++)
				{
					if(temp==mas[i].number)
					{
						puts("1 - change name");
						puts("2 - change number");
						puts("3 - change chasi");
						puts("4 - change tarif");
						int op;
						fflush (stdin);
						scanf("%d",&op);
						fflush (stdin);
						switch (op)
						{
						case 1:
							{
								fflush (stdin);
				                printf("name\t");
				                fgets(mas[size].name,50,stdin);
								break;
							}
						case 2:
							{
								puts("vvedite new number\t");
						        scanf("%d", &mas[i].number);
								break;
							}
						case 3:
							{
								puts("vvedite new chasi\t");
						        scanf("%d", &mas[i].chasi);
								break;
							}
						case 4:
							{
								puts("vvedite new tarif\t");
						        scanf("%d", &mas[i].tarif);
								break;
							}
						}
						break;
					}
				}
				break;
			}
			
		}
		//сохранение в файл
		f=fopen("1.txt","w+");
		for (int i=0; i<=size; i++)
		{
			fputs(mas[i].name,f);
			fprintf(f,"%d\n",mas[i].number,f);
			fprintf(f,"%d\n",mas[i].chasi,f);
			fprintf(f,"%d\n",mas[i].tarif,f);
			//fprintf(f,"%d\n",mas[i].zarplata,f);
		}	
		fclose(f);
	}	
	return;
}

Отправлено: 20:37, 25-12-2012

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


кэп, два раза пытаюсь увидеть ошибку, два раза эта каша (код) идет полотенцем. Т.е. ни о чем.
На этом форуме есть тег code #. Он нужен для оформления программ.
В программе нет комментариев. Обычно ошибку видно. Она портит красоту структуры программы.
То, что написано, мне понять сложно. Транслит читать сложно. Есть множество break к месту и не к месту используемые.
Цитата кэп:
if(mas[i].chasi>120)
{
z=(mas[i].chasi-120)*(mas[i].tarif*2)+(120*mas[i].tarif);
}
else
{
z=mas[i].chasi*mas[i].tarif;
} »
Я так понял, это самое интересное условие задачи?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:07, 26-12-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата lxa85:
На этом форуме есть тег code #. »
Лучше так: «…есть тэг [code]».
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:51, 26-12-2012 | #3


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Лучше всего из цельного монолитного кода сделать модульный и вызывать в множественном выборе необходимую функцию, в которой будет описаны:

1. Функция печати
2. Функция редактирования
3. Функция добавления
4. Функция удаления
_______________

Из ошибок:
1. Нет проверки открытия пустого файла. При открытии пустого файла первый элемент струтуры получает какие-то дикие значения
Код: Выделить весь код
1

name            ГвС|    ¶¤↕number               2089883808
chasi           1310720
tarif           1354704
zarplata        -825264512
2. После добавления второго персонажа выводится всё правильно, но когда меню выбора выбираю удалить первого персонажа, удаляется второй, а первый остаётся. Не корректно происходит удаление выбраного персонажа.
3. Пункты меню с 4 и 5 не работает вообще. Причём пятый не работает вообще, а четвёртый предлагает ввести какую-то цифру, после ввода которой появляется снова выбор меню.
4. Нет проверки корректности выбранного пункта.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:38, 26-12-2012 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Проверьте код, найдите ошибку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Найдите ошибку в программе (Turbo Pascal). pamirs@vk Тест-форум 0 05-12-2012 16:05
Найдите друзей по форуму на карте Tigr О сайте и форуме 54 04-11-2011 17:26
C/C++ - Проверьте перевод BrdNLSrg Программирование и базы данных 0 01-05-2011 14:55
Разное - Проверьте решение mike38 Программирование и базы данных 5 27-03-2011 15:01
Проверьте скриптик Kosiak Вебмастеру 8 25-04-2003 23:42




 
Переход