Форум программистов, компьютерный форум CyberForum.ru

Найти название предприятия, заплатившего меньше всего налогов - C++

Восстановить пароль Регистрация
 
Mutlu
11 / 11 / 1
Регистрация: 26.09.2011
Сообщений: 185
29.02.2012, 16:36     Найти название предприятия, заплатившего меньше всего налогов #1
Добрый день,
Вот задание:
1. Добавлять данные структуры с указанными полями в файл
2. Просматривать структуры из файла
3. Функции программы сделать в виде меню
4. Поля записи: код предприятия, название, сумма уплаченных налогов. Операция: найти название предприятия, заплатившего меньше всего налогов.
Вот отдельно написал работу с файлом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
struct Firm
{
    char code[20];
    char name[30];
    float tax;
};
 
void Entering(Firm *);
void Search_Print(Firm *,int );
 
int main()
{
    int n;
    printf("Please enter number of firms: ");
scanf("%i",&n);
    Firm* fr=new Firm[n];
    for (int i=0;i<n;i++)
    {
        Entering(&fr[i]);
    }
 
    FILE * fp;
    fp=fopen("C:\\Programming\\Programs\\Firm.dat","wb");
    fwrite(fr,sizeof(Firm),n,fp);
    fclose(fp);
    
    fp=fopen("C:\\Programming\\Programs\\Firm.dat","rb");
    int fsize;
    fseek(fp,0,SEEK_END);
    fsize=ftell(fp);
    
    n=fsize/sizeof(Firm);
    Firm* fr2=new Firm[n];
    fseek(fp,0,SEEK_SET);
    fread(fr2,sizeof(Firm),n,fp);
    Search_Print(fr2,n);
    getch();
    return 0;
}
 
void Entering(Firm *f)
{
getchar();
printf("Code of firm: ");
gets(f[i].code);
printf("Name of firm: ");
gets(f[i].name);
printf("Summ of paid taxes: ");
scanf("%f",&f[i].tax);
}
 
void Search_Print(Firm *f,int n)
{
    int m=0; 
float min=f[0].tax;
for (int i=1;i<n;i++)
if (f[i].tax<min)
{
min=f[i].tax;
m=i;
}
printf("The company paid the least taxes called: %s \n",f[m].name);
    }
но как их соединить,
во второй программе вылетают ошибки, проверьте пожалуйста.



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include<iostream>
#include<conio.h>
struct Firm
{
    char code[20];
    char name[30];
    float tax;
};
int main()
{
int n,i;
printf("Enter number of firms>"); 
scanf("%d",&n);
Firm* fr=new Firm[n];
    for (int i=0;i<n;i++)
        {
getchar();
printf("Code of firm: ");
gets(fr[i].code);
printf("Name of firm: ");
gets(fr[i].name);
printf("Summ of paid taxes: ");
scanf("%f",&fr[i].tax);
}
 
{
printf("Enter information about %d firm:\n\tFirm's ID >",i+1);
scanf("%s",fr[i].code);
printf("\tName of firm >");
scanf("%s",fr[i].name);
printf("\tSumm of paid taxes >");
scanf("%f",&fr[i].tax);
}
printf("Enter any key to continue\n");
int c;
do
{
system("cls");
printf("Choice menu:\n\t1. View firms\n\t2.Search\n\t3.Minimal paid taxes\n\t4.Sort\n\t5.Exit\nEnter your choice >");
scanf("%d",&c);
switch (c)
{
case 1: for (int i=0;i<n;i++){
printf("--------%d--------\n",i+1);
printf("Name: %s\nName: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
}
getch();
break;
case 2: {char * s=new char[]; printf("Enter firm's name >"); 
    scanf("%s",s);
bool flag=false;
for (int i=0;i<n;i++)
 
if(strcmp(fr[i].name,s)==0){
printf("Name: %s\nName: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
flag=true;
}
if(!flag) printf("Not found\n");
getch();
break;}
case 3: {
    int m=0;
    float f;
float min=f[0].tax;
for (int i=1;i<n;i++)
if (f[i].tax<min)
{
min=f[i].tax;
m=i;
}
 
printf("The company paid the least taxes called: %s \n",f[m].name);
getch();
break;}
case 4: {
    for (int i=0;i<n-1;i++)
for(int j=n-1;j>i;j--)
if (fr[j].tax<fr[j-1].tax)
{
Firm temp=fr[j];
fr[j]=fr[j-1];
fr[j-1]=temp;
}
for (int i=0;i<n;i++){
printf("--------%d--------\n",i+1);
printf("Name: %s\nName: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
}
getch();
break;
}
}
}
while (c<5);
printf("Bye!")
getch();
return 0;
}
Огромное спасибо!


Я по адресу вообще обратился или не в ту степь забрёл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2012, 16:36     Найти название предприятия, заплатившего меньше всего налогов
Посмотрите здесь:

C++ Найти индекс первого элемента массива, модуль которого меньше всего отличается от 5
C++ Запросить у пользователя 5 строк и высвети на экран ту, в которой содержится меньше всего букв «а»
В каком слове текста меньше всего согласных звуков? C++
C++ В каком слове текста меньше всего гласных звуков?
Работа с файлами и структурами. Найти название предприятия, заплатившего меньше всего налогов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
29.02.2012, 17:04     Найти название предприятия, заплатившего меньше всего налогов #2
Цитата Сообщение от Mutlu Посмотреть сообщение
найти название предприятия, заплатившего меньше всего налогов
Не смотря ваш код: алгоритм поиска min всегда одинаковый
1)Предполагаем что min это нулевой элемент в списке (min=elem[0])
2)Циклом проходим от первого до последнего элемента и если i'ый меньше нашего min то min=elem[i]
3)Используем результаты.
Mutlu
11 / 11 / 1
Регистрация: 26.09.2011
Сообщений: 185
01.03.2012, 15:46  [ТС]     Найти название предприятия, заплатившего меньше всего налогов #3
Цитата Сообщение от Gepar Посмотреть сообщение
Не смотря ваш код: алгоритм поиска min всегда одинаковый
1)Предполагаем что min это нулевой элемент в списке (min=elem[0])
2)Циклом проходим от первого до последнего элемента и если i'ый меньше нашего min то min=elem[i]
3)Используем результаты.
У меня там такой и есть алгоритм поиска...
C++
1
2
3
4
5
6
7
       int m=0; 
float min=f[0].tax;
for (int i=1;i<n;i++)
if (f[i].tax<min)
{
min=f[i].tax;
m=i;
Добавлено через 22 часа 13 минут
Люди добрые, помогите пожалуйста!!!
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 16:30     Найти название предприятия, заплатившего меньше всего налогов #4
ну в теме написано
найти название предприятия, заплатившего меньше всего налогов
тебе на этот вопрос ответили.


Цитата Сообщение от Mutlu
во второй программе вылетают ошибки, проверьте пожалуйста.
держи рабочий код второго фрагмента.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include<iostream>
#include<conio.h>
struct Firm
{
    char code[20];
    char name[30];
    float tax;
};
int main()
{
    int n,i;
    printf("Enter number of firms>"); 
    scanf("%d",&n);
    Firm* fr=new Firm[n];
    for (int i=0;i<n;i++)
    {
        getchar();
        printf("Code of firm: ");
        gets(fr[i].code);
        printf("Name of firm: ");
        gets(fr[i].name);
        printf("Summ of paid taxes: ");
        scanf("%f",&fr[i].tax);
    }
 
    /*{
        printf("Enter information about %d firm:\n\tFirm's ID >",i+1);
        scanf("%s",fr[i].code);
        printf("\tName of firm >");
        scanf("%s",fr[i].name);
        printf("\tSumm of paid taxes >");
        scanf("%f",&fr[i].tax);
    }*/
    printf("Enter any key to continue\n");
    int c;
    
    do
    {
        system("cls");
        printf("Choice menu:\n\t1. View firms\n\t2.Search\n\t3.Minimal paid taxes\n\t4.Sort\n\t5.Exit\nEnter your choice >");
        scanf("%d",&c);
        switch (c)
        {
        case 1: for (int i=0;i<n;i++){
            printf("--------%d--------\n",i+1);
            printf("Name: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
                }
                getch();
                break;
        case 2: {
            char *s = new char[30];
            printf("Enter firm's name >"); 
            scanf("%s",s);
            bool flag=false;
            for (int i=0;i<n;i++)
 
                if(strcmp(fr[i].name,s)==0){
                    printf("Name: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
                    flag=true;
                }
                if(!flag) printf("Not found\n");
                getch();
                break;
                delete []s;
            }
        case 3: {
            int m=0;
            //float f;
            float min=fr[0].tax;
            for (int i=1;i<n;i++)
                if (fr[i].tax<min)
                {
                    min=fr[i].tax;
                    m=i;
                }
 
                printf("The company paid the least taxes called: %s \n",fr[m].name);
                getch();
                break;}
        case 4: {
            for (int i=0;i<n-1;i++)
                for(int j=n-1;j>i;j--)
                    if (fr[j].tax<fr[j-1].tax)
                    {
                        Firm temp=fr[j];
                        fr[j]=fr[j-1];
                        fr[j-1]=temp;
                    }
                    for (int i=0;i<n;i++){
                        printf("--------%d--------\n",i+1);
                        printf("Name: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
                    }
                    getch();
                    break;
                }
        }
    }
    while (c<5);
        printf("Bye!");
    getch();
    return 0;
}
Mutlu
11 / 11 / 1
Регистрация: 26.09.2011
Сообщений: 185
02.03.2012, 17:26  [ТС]     Найти название предприятия, заплатившего меньше всего налогов #5
Цитата Сообщение от d3v1l Посмотреть сообщение
держи рабочий код второго фрагмента.
За Ваш труд и код, большое спасибо!
Вопрос, если я запускаю программу один раз ввожу туда данные, потом из меню выбираю выход из программы он вроде как должен всё сохранять.
Если я запускаю второй раз эту программу, то в этом же файле не должно сохраниться всё то, что было введено в первый раз??? Код внизу, Спасибо за ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<conio.h>
#include<stdio.h>
#include<iostream>
struct Firm
{
    char code[20];
    char name[30];
    float tax;
};
void Entering(Firm *);
int main()
{
    int n=0;
    Firm *fr=new Firm[n];
    FILE *fp, *fw;
    fp=fopen("C:\\Programming\\Programs\\Firm.dat","rb");
    int fsize;
    fseek(fp,0,SEEK_END);
    fsize=ftell(fp);
 
    n=(int)fsize/sizeof(Firm);
    Firm* fr2=new Firm[n];
    fseek(fp,0,SEEK_SET);
    fread(fr2,sizeof(Firm),n,fp);
    int c;
 
    do
    {
        system("cls");
        printf("Menu:\n\t1.View firms\n\t2.Add firms\n\t3.Minimal paid taxes\n\t4.Sort\n\t5.Exit\nEnter your choice: ");
        scanf("%d",&c);
        switch (c)
        {
        case 1: for (int i=0;i<n;i++){
            printf("--------%d--------\n",i+1);
            printf("Name: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
                }
                getch();
                break;
        case 2: {
            printf("Enter number of firms: "); 
            scanf("%d",&n);
            fw=fopen("C:\\Programming\\Programs\\Firm.dat","wb");
            for (int i=0; i<n; i++)
            {
                Entering(&fr[i]);
            }
            fwrite(&fr,sizeof(Firm),n,fw);
            fclose(fw);
            break;}
 
        case 3: {
            int m=0;
            float min=fr[0].tax;
            for (int i=1;i<n;i++)
                if (fr[i].tax<min)
                {
                    min=fr[i].tax;
                    m=i;
                }
                printf("The company paid the least taxes called: %s \n",fr[m].name);
                getch();
                break;}
        case 4: {
            for (int i=0;i<n-1;i++)
                for(int j=n-1;j>i;j--)
                    if (fr[j].tax<fr[j-1].tax)
                    {
                        Firm temp=fr[j];
                        fr[j]=fr[j-1];
                        fr[j-1]=temp;
                    }
                    for (int i=0;i<n;i++){
                        printf("--------%d--------\n",i+1);
                        printf("Name: %s\nDepartment ID: %d\nPaid taxes: %f\n",fr[i].name,fr[i].code,fr[i].tax);
                    }
                    getch();
                    break;
                }
        }
    }
    while (c<5);
    printf("Bye!");
    getch();
    return 0;
}
void Entering(Firm *f)
{
    getchar();
    printf("Code of firm: ");
    gets(f->code);
    printf("Name of firm: ");
    gets(f->name);
    printf("Summ of paid taxes: ");
    scanf("%f",&f->tax);
}
Mutlu
11 / 11 / 1
Регистрация: 26.09.2011
Сообщений: 185
04.03.2012, 17:19  [ТС]     Найти название предприятия, заплатившего меньше всего налогов #6
Добрый день,
как к этому коду примонтировать меню "удалить" вместо сортировки, как этот код будет выглядеть?
Алгортим, он должен найти вначале по названию или коду фирмы, а потом переписать уже без этой строки. А вот вопрос кода???
Mutlu
11 / 11 / 1
Регистрация: 26.09.2011
Сообщений: 185
07.03.2012, 15:47  [ТС]     Найти название предприятия, заплатившего меньше всего налогов #7
Значит никто не поможет, не подскажет.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 10:41     Найти название предприятия, заплатившего меньше всего налогов
Еще ссылки по теме:

Вывести название предприятия, в порядке убывания средней заработной платы C++
C++ Найти минимально возможное значение суммы налогов на пути из заданного города в столицу
Структуры: найти название предприятия, заплатившего меньше всего налогов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mutlu
11 / 11 / 1
Регистрация: 26.09.2011
Сообщений: 185
09.03.2012, 10:41  [ТС]     Найти название предприятия, заплатившего меньше всего налогов #8
Цитата Сообщение от Mutlu Посмотреть сообщение
Значит никто не поможет, не подскажет.....
Мдяяя, спасиб, что хоть не обругали
Yandex
Объявления
09.03.2012, 10:41     Найти название предприятия, заплатившего меньше всего налогов
Ответ Создать тему
Опции темы

Текущее время: 07:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru