|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Проверьте код, найдите ошибку |
|
C/C++ - Проверьте код, найдите ошибку
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать
Создать файл, содержащий сведения о сотрудниках фирмы. Запись включает: Ф.И.О. сотрудников; табельный номер; количество проработанных часов за месяц; почасовой тариф. Рабочее время свыше 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 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать кэп, два раза пытаюсь увидеть ошибку, два раза эта каша (код) идет полотенцем. Т.е. ни о чем.
На этом форуме есть тег code #. Он нужен для оформления программ. В программе нет комментариев. Обычно ошибку видно. Она портит красоту структуры программы. То, что написано, мне понять сложно. Транслит читать сложно. Есть множество break к месту и не к месту используемые. Цитата кэп:
|
|
------- Отправлено: 00:07, 26-12-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 02:51, 26-12-2012 | #3 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Лучше всего из цельного монолитного кода сделать модульный и вызывать в множественном выборе необходимую функцию, в которой будет описаны:
1. Функция печати 2. Функция редактирования 3. Функция добавления 4. Функция удаления _______________ Из ошибок: 1. Нет проверки открытия пустого файла. При открытии пустого файла первый элемент струтуры получает какие-то дикие значения 2. После добавления второго персонажа выводится всё правильно, но когда меню выбора выбираю удалить первого персонажа, удаляется второй, а первый остаётся. Не корректно происходит удаление выбраного персонажа. 3. Пункты меню с 4 и 5 не работает вообще. Причём пятый не работает вообще, а четвёртый предлагает ввести какую-то цифру, после ввода которой появляется снова выбор меню. 4. Нет проверки корректности выбранного пункта. |
------- Отправлено: 03:38, 26-12-2012 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Найдите ошибку в программе (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 |
|