Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/126: Рейтинг темы: голосов - 126, средняя оценка - 4.67
двоешник
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 14
1

Нужны примеры структур

13.09.2010, 18:39. Просмотров 23796. Ответов 5
Метки нет (Все метки)

Ребят мне нужно сделать структуру что бы закрыть практику DDD

так как я слаб в си, киньте сюда пример разных структур типа:

маршруты автобусов самолётов, расписание и т. п.

если у кого то есть задачка на структуры по теме: автобусный маршрут, номер автобуса, время и т. п. буду очень благодарен...заранее спасибо!!))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2010, 18:39
Ответы с готовыми решениями:

Нужны примеры ООП
Всем привет! Кто может дать примеры задач с Объектами? А точнее мне нужна...

Инкапсуляция, абстракция и полиморфизм - нужны примеры
Здравствуйте! Можете пожалуйста привести примеры абстракции, инкапсуляции и...

Составить массив структур состоящий из имени и цены,по введенному имени изменить цену,вывести обновленный массив структур
составить массив структур состоящий из имени и цены,по введенному имени...

Приведите примеры рекурсии
наведите примеры рекурсии. спасибо.

Не работают простые примеры из книги
Всем доброго времени суток. Сегодня начал программировать на Си, для этого...

5
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
13.09.2010, 18:41 2
вот тут есть инфа про структуры на агл.
1
Mencey
151 / 98 / 12
Регистрация: 22.07.2010
Сообщений: 426
13.09.2010, 23:09 3
Пример структуры:

Структура времени
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
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
 
struct Time {
  int hour;     // Часы
  int minute;  // Минуты 
  int second; // секунды
};
 
// Пример работы структуры
int main(void)
{
  struct Time t;
  // Ввод часов
  printf("Enter hour: ");
  scanf("%i", &t.hour);
  // Ввод минут
  printf("Enter minute: ");
  scanf("%i", &t.minute);
  // Ввод секунд
  printf("Enter second: ");
  scanf("%i", &t.second);
  // Вывод времени
  printf("Time  %i:%i:%i", t.hour, t.minute, t.second);
  getch();
  return 0;
}


Струтура Point
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
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
struct Point {
  int x;
  int y;
};
 
// Пример работы структуры
int main(void)
{
  struct Point p1, p2;
  // Ввод данных
  printf("Enter x0: ");
  scanf("%i", &p1.x);  
  printf("Enter y0: ");
  scanf("%i", &p1.y);  
  printf("Enter x1: ");
  scanf("%i", &p2.x);  
  printf("Enter y1: ");
  scanf("%i", &p2.y);  
  
  printf("Dlina = %.2f", sqrt( pow( p1.x - p2.x, 2 ) + pow( p1.y - p2.y, 2 ) ) );
  getch();
  return 0;
}
3
asics
Freelance
Эксперт С++
2860 / 1795 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
14.09.2010, 00:45 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
#include <iostream>
#include <conio.h>
using namespace std;
struct Distance
{
   int feet;
   float inches;       
};
int main()
{
  Distance d1, d3;
  Distance d2 = {11, 6.25};
  cout << "BBedute feet: ";
  cin >> d1.feet;
  cout << "BBedute inches: ";
  cin >> d1.inches;
  d3.inches = d1.inches + d2.inches;
  d3.feet = 0;
  if(d3.inches >= 12.0)
  {
           d3.inches -= 12.0;
           d3.feet++;  
  }
  d3.feet += d1.feet + d2.feet;
  cout << d1.feet << "\'-" << d1.inches << "\" + ";
  cout << d2.feet << "\'-" << d2.inches << "\" = ";
  cout << d3.feet << "\'-" << d3.inches << "\ " << endl;
getch();
return 0;    
}
Перевести в Си думаю не составит труда.
3
Mencey
151 / 98 / 12
Регистрация: 22.07.2010
Сообщений: 426
14.09.2010, 08:15 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

В C будет так.

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
#include <stdio.h>
#include <conio.h>
 
struct Distance
{
   int feet;
   float inches;       
};
 
int main()
{
  struct Distance d1, d3;
  struct Distance d2 = {11, 6.25};
  printf( "BBedute feet: " );
  scanf( "%i", &d1.feet );
  printf( "BBedute inches: " );
  scanf( "%f", &d1.inches );
  d3.inches = d1.inches + d2.inches;
  d3.feet = 0;
  if(d3.inches >= 12.0)
  {
           d3.inches -= 12.0;
           d3.feet++;  
  }
  d3.feet += d1.feet + d2.feet;
  printf("%i\'-%f\"+", d1.feet, d1.inches );
  printf("%i\'-%f\" = ", d2.feet, d2.inches );
  printf("%i\'-%f\"\n", d3.feet, d3.inches);
  getch();
  return 0;    
}
2
ForEveR
В астрале
Эксперт С++
8002 / 4760 / 653
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.09.2010, 14:54 6
Давно это было. Что-то типа очереди)

Очередь
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
#include <stdio.h>
struct list
{
    int n;
    list*next;
};
list*f_el(int n)
{
    list*t=new list;
    t->n=n;
    t->next=0;
    return t;
}
void ins(list*h, int N)
{
    list*p; list*c;
    p=h; c=h->next;
    while (c!=0)
    {
        if (c->n<N) break;
        p=c; c=c->next;
    }
    list*t=f_el(N);
    t->next=p->next;
    p->next=t;
}
void pr(list*h)
{
    for (h->next;h!=0;h=h->next)
        printf("%d\n",h->n);
}
int main ()
{
    list*h=new list;
    h->n=0;
    h->next=0;
    int n;
    printf ("Vvedite znachenie\n");
    scanf("%d",&n);
    while(n!=0)
    {
        ins(h,n);
        printf("Vvesite 4islo\n");
        scanf("%d",&n);
    }
    pr(h->next);
    return 0;
}


"База данных"
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct proc
{
    char*marka;
    char*tip;
    int kol;
    float price;
};
proc input ()
{
    proc t;
    char str[100];
    puts ("Vvedite marku");
    while(getchar()!='\n')continue;
    gets (str);
    t.marka=new char[strlen(str)+1];
    strcpy(t.marka,str);
    strcat(t.marka,"\n");
    puts ("Vvedite tip");
    gets (str);
    t.tip=new char[strlen(str)+1];
    strcpy(t.tip,str);
    strcat(t.tip,"\n");
    puts ("Vvedite kol-vo");
    scanf ("%d",&t.kol);
    puts ("Vvedite cenu");
    scanf ("%f",&t.price);
    while(getchar()!='\n')continue;
    return t;
}
void output (proc t)
{
    puts ("Marka");
    puts (t.marka);
    puts ("Tip");
    puts (t.tip);
    puts ("\nKol-vo");
    printf ("%d",t.kol);
    puts ("\nCena");
    printf ("%f",t.price);
    puts("\n-----------------------------------------\n");
}
proc input_f(FILE*f)
{
    proc t;
    char str[100];
    fgets (str,100,f);
    t.marka=new char[strlen(str)+1];
    strcpy(t.marka,str);
    fgets (str,1000,f);
    t.tip=new char[strlen(str)+1];
    strcpy(t.tip,str);
    fscanf (f, "%d\n", &t.kol);
    fscanf (f, "%f\n", &t.price);
    return t;
}
int fill (FILE*f, proc m[])
{
    int n;
    f=fopen("D:\\IS-2009\\Lavr\\DB\\db2.txt","r");
    fscanf (f, "%d\n", &n);
    for (int i=0; i<n; i++)
        m[i]=input_f(f);
    return n;
}
void output_m (proc m[],FILE*f)
{
    int n;
    fscanf (f, "%d\n", &n);
    for (int i=0;i<n;i++)
        output(m[i]);
}
void put_into_file (FILE*f, proc t)
{
    fputs (t.marka,f);
    fputs (t.tip,f);
    fprintf (f, "%d \n", t.kol);
    fprintf (f, "%f \n", t.price);
}
int put_all_into_file (proc m[], int n)
{
    FILE*f=fopen("D:\\IS-2009\\Lavr\\DB\\db2.txt", "w");
    if (f==NULL)
    {
        printf ("No file");
        return -1;
    }
    fprintf (f, "%d \n", n);
    for (int i=0;i<n;i++)
        put_into_file (f, m[i]);
    fclose(f);
    return 0;
}
void add (proc &t)
{
    t=input ();
}
bool search (proc t, float max, float min)
{
    if ((max>t.price)&&(min<t.price))
        return 1;
    return 0;
}
int search_m (proc m[], int n, int l,float min,float max)
{
    for (int i=l;i<n;i++)
        if (search(m[i],max,min))
            return i;
    printf("Fail. V zadannom diapazone cen informacii ne naideno \n");
    return -1;
}
int search_str(proc m[], int n, int l, char*wrd, int mod)
{
    if (mod==1)
    for (int i=l;i<n;i++)
        if(strncmp(m[i].marka,wrd,strlen(wrd))==0)
            return i;
 
    if (mod==0)
    for(int i=l;i<n;i++)
            if (strncmp(m[i].tip,wrd,strlen(wrd))==0)
                return i;
    printf("Fail. Net takogo slova\n");
    return -1;
 
}
 
int show()
{
    int k=0;
    char u[10];
    puts ("Choose option 1, for see DB");
    puts ("Choose option 2 for add information in DB");
    puts ("Choose option 3 for search by price");
    puts ("Choose option 4 for search by mark or type");
    puts ("Choose option 5, for exit");
    scanf("%s",u);
    if ((u[0]>='0')&&(u[0]<='9'))
        k=atoi(u);
    return k;
}
int sw (proc m[], int n, int k)
{
    int l=0;
    switch (k)
    {
        case 1: for (int i=0;i<n;i++)output(m[i]);
               break;
        case 2: {
            add(m[n]);
            n++;
            break;
                }
        case 3: {
                float min=-1;
                printf("Vvedite min price\n");
                scanf ("%f",&min);
                if (min==-1)
                {
                    printf("Fail. Vvedite chislovoi diapazon\n");
                    while(getchar()!='\n')continue;
                    break;
                }
                float max=-1;
                printf("Vvedite max price\n");
                scanf ("%f",&max);
                if (max==-1)
                {
                    printf("Fail. Vvedite chislovoi diapazon\n");
                    while(getchar()!='\n')continue;
                    break;
                }
                while (l<n)
                {l=search_m(m,n,l,min,max);
                if (l==-1)break;
                printf("Rezult:%s %s %d\n %f\n",m[l].marka,m[l].tip,m[l].kol,m[l].price);
                l++;
                }
                printf ("Poisk okonchen\n");
                l=0;
                break;
                }
        case 4:{
            int mod=0;
            printf("Zadaite znachenie mod:0-tip,1-marka\n");
            scanf("%d",&mod);
            char wrd[20]="";
            printf("Vvedite slovo\n");
            scanf("%s",wrd);
            while (l<n)
            {
            l=search_str(m,n,l,wrd,mod);
                if(l==-1)break;
            printf("Rezult:%s %s %d\n %f\n",m[l].marka,m[l].tip,m[l].kol,m[l].price);
            l++;
            }
            printf ("Poisk okonchen\n");
            l=0;
            break;
               }
        case 5: return 0;
            break;
        default:
            printf ("Fail. Choose other option of menu\n");
    }
    return n;
}
int menu (proc m[], int n)
{
    int k=show();
    while(k!=5)
    {
        n=sw(m,n,k);
        k=show();
    }
    return n;
}
int main()
{
    proc M[1000];
    int n;
    FILE*f=fopen("D:\\IS-2009\\Lavr\\DB\\db2.txt","r");
    if (f==0)
    {
        printf ("No file");
        return 0;
    }
    fclose(f);
    n=fill(f,M);
    n=menu (M,n);
    put_all_into_file ( M,n);
}
2
14.09.2010, 14:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2010, 14:54

Примеры в книгах не работают корректно
Добрый день, товарищи! Начал изучение СИ по pdf книге К.Поляков...

Не получаются примеры из Керигана и Ричи
Добрый день! Решил на досуге почитать книжку по языку Си Керигана и Ричи. В...

Привести примеры использования функций fread и fwrite
Назначение функций fread( ) и fwrite( ) . Прототипы функций, формальные...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru