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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
ola312
0 / 0 / 0
Регистрация: 14.10.2008
Сообщений: 11
#1

Помогите разобраться со структурами - C++

09.11.2008, 17:19. Просмотров 2007. Ответов 18
Метки нет (Все метки)

Приветствую всех! Мне дали очередное задание с которым, конешноже я не могу самостоятельно справиться и именно поэтому вновь прошу вашей помощи . Вот задание:
В первом текставом файле (eda.txt) записаны рецепты приготовления разных блюд.
Рецепт состоит из нескольких строк, первая это название блюда, следующие стоки это список ингредиентов (название ингредиента и нужное количество), описание сомого приготовления это пустая строка. Во втором фаиле (recept.txt) список возможных ингредиентов и их цены. В третьем файле (zakaz.txt) список заказов: в первой строке имя и фамилия заказчика, в следующих список заказаных продуктов и в каком количестве. Данные о заказчиках отделены пустой строкой.
Создайте программу которая в отдельном файле будет записывать счет для каждого заказчика. В документе должно буть: имя, фамилия заказчика, а также ценник заказаных блюд: название блюда, его количество, цена одной порции, общая сумма, в конце списка должна быть общая сумма за весь заказ. При этом цена одной порции это сумма стоимости ингридиентов, нужных для приготовления этого блюда, и и еще 15% от этой стоимости.
Вот такое, длинное и непонятное задание. Помогите с ним справиться, пожалуйста.

Добавлено через 7 минут 20 секунд
Я застряла на самом начале, помогите понять что нитак.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h> 
#include <string.h> 
#include <fstream>
 
int main() 
{ 
ifstream ola ("eda.txt");
ifstream ela ("recept.txt"); 
ifstream ala ("zakaz.txt");
 
struct vaistai { char imja [10]; 
char familija [10];
char bliudo [10];
int kolporc; 
float cenaingred; 
float cenabliuda; 
}; 
 
system("pause");
return 0;
}
Компелятор это не пропускает и я непонимаю почему. Что нитак?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2008, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите разобраться со структурами (C++):

Помогите со структурами (дописать программу) - C++
Структуры вводятся с клавиатуры. В ряде вариантов заданий с клавиатуры вводится не вся структура, а только ее отдельные поля. Необходимо...

Помогите разобраться - C++
У меня есть координаты North,West,East,South. Мне нужно отобразить их на осях ОХ и ОУ. Допустим я ввожу North 5 East 3 South 1 ...

If else помогите разобраться - C++
Доброго времени суток всем. Не так давно начали программировать в C++ MS Visual Studio 2010? и возникло у меня затруднение в работе с if ...

помогите разобраться с gcc - C++
начал изучать c++. не могу скомпилировать первую программу. Вот что я делал. 1.запускаю файл gcc.exe. Создаю папку с адресом C:\gcc. В...

Помогите разобраться с switch - C++
Вот код программы: int i_1x; i_1x = 0; char a_n; ifstream input(&quot;input.txt&quot;); input &gt;&gt; a_n; switch...

ПОМОГИТЕ РАЗОБРАТЬСЯ В КОДЕ - C++
#include &lt;time.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;assert.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; using...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
09.11.2008, 17:22 #2
А ошибку слабо скопипастить?
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
10.11.2008, 11:49 #3
Добавь
Код
using namespace std;
после инклудов
ola312
0 / 0 / 0
Регистрация: 14.10.2008
Сообщений: 11
10.11.2008, 22:48  [ТС] #4
спасибо, глупая ошибка... но еще есть проблемы. вот что выбивает:
1 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31, from C:\Documents and Settings\Dmitrij\Рабочий стол\3 praca domowa\strukturos.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from C:\Documents and Settings\Dmitrij\Рабочий стол\3 praca domowa\strukturos.cpp
1 C:\Documents and Settings\Dmitrij\Рабочий стол\3 praca domowa\strukturos.cpp from C:\Documents and Settings\Dmitrij\Рабочий стол\3 praca domowa\strukturos.cpp
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
11.11.2008, 08:28 #5
можно спросить а зачем в перед main стоит int ,разве не void должен быть ? и как по мне структуру можно зделать глобальную , так красивее =)
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
11.11.2008, 10:25 #6
ola312, попробуй заменить
Код
#include <iostream.h> 
#include <string.h>
на
Код
#include <iostream> 
#include <string>
Casper!,
а зачем в перед main стоит int ,разве не void должен быть ?
Не должен. По стандарту http://www.csci.csusb.edu/dick/c++std/cd2/basic.html пункт 3.6.1[2]
-2- An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined.
У Страуструпа в "Bjarne Stroustrup's C++ Style and Technique FAQ"(http://www.research.att.com/~bs/bs_faq2.html#void-main):
The int returned by main() is a way for a program to return a value to "the system" that invokes it. On systems that doesn't provide such a facility the return value is ignored, but that doesn't make "void main()" legal C++ or legal C. Even if your compiler accepts "void main()" avoid it, or risk being considered ignorant by C and C++ programmers.
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
11.11.2008, 12:47 #7
незнаю что за стондарт но Visual C++ нас учат void main(){} это сам код программы
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
11.11.2008, 13:00 #8
Casper!, да тут еще и от компилятора все зависит...
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
11.11.2008, 13:58 #9
незнаю что за стондарт
Это международный стандарт языка Си++ISO/IEC 14882
но Visual C++ нас учат void main(){} это сам код программы
Не знаю, кто вас учит, но думаю Бьёрн Страуструп, который разработал язык C++, немного в нём разбирается Main() всего-лишь функция, которая определяет начало программы и по стандарту возвращает 0, если всё прошло успешно.
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
12.11.2008, 10:10 #10
Цитата Сообщение от Casper! Посмотреть сообщение
незнаю что за стондарт но Visual C++ нас учат void main(){} это сам код программы
Ну так пускай идут и читают стандарт, неучи .. =)
greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
12.11.2008, 10:14 #11
Стандарт, или нестандарт - ето все правила хорошего тона. Я считаю программист должен писать так, чтобы был баланс между быстродействием и занимаемой памятью. А как ето реализовать ето уже неважно, хоть void, хоть float...
ola312
0 / 0 / 0
Регистрация: 14.10.2008
Сообщений: 11
12.11.2008, 21:29  [ТС] #12
Смею прервать вашу дискуссию и снова вернуться к своей теме . Так вот свашей помощью я справилась с первой проблемой. Вот что имею:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream> 
#include <string>
#include <fstream>
 
using namespace std;
 
int main() 
{ 
ifstream ola ("eda.txt");
ifstream ela ("recept.txt"); 
ifstream ala ("zakaz.txt");
 
struct vaistai { char imja [10]; 
char familija [10];
char bliudo [10];
int kolporcyj; 
float cenaingrid; 
float cenabliuda; 
}; 
 
system("pause");
return 0;
}
Что делать дальше? Помогите составить алгоритм, а то я знаю что надо зделать, но не очень понимаю как...
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
13.11.2008, 10:55 #13
Что делать дальше? Помогите составить алгоритм, а то я знаю что надо зделать, но не очень понимаю как...
Одной структурой не обойдёшься, да и вообще, даже не представляю, как эту задачу можно решить только структурами - имхо нужны ещё и списки или (если можно использовать STL) контейнеры map. Тогда:
1. заполняешь из файла ингридиенты список из
Код
struct Ингридиент {
название
цена
}
2. из файла блюда - список из
Код
struct Блюдо {
название
список struct Ингридиент_в_блюде {название, цена}
описание приготовления
}
3. из файла заказы - список из
Код
struct Заказ {
имя,
фамилия,
список struct Блюдо_в_заказе {название, количество}
данные о заказчике
}
Далее создаёшь
Код
struct Счёт {
имя,
фамилия,
список struct Блюда_в_заказе {название, количество,цена 1 порции,общая цена}
общая сумма за заказ
}
Дальше просматриваешь все заказы, из каждого заказа берёшь фио заказчика (записываешь в структуру счёт) и просматриваешь в заказе список блюд.
Для каждого блюда - берёшь название блюда (записываень в Блюда_в_заказе.название) и просматриваешь список ингридиентов.
Для каждого ингридиента берёшь его цену из struct Ингридиент и умножаешь на количество ингридиентов в блюде.
Просмотрев все ингридиенты в блюде - суммируешь стоимость ингридиентов и умножаешь на 0.15- получаешь цену за 1 порцию. Заносишь в Блюда_в_заказе.цена 1 порции
Умножаешь цену за 1 порцию на Блюда_в_заказе.количество получаешь Блюда_в_заказе.общая цена
Просмотрев все блюда в заказе суммируешь общие цены - получаешь Счёт.общая сумма за заказ
смотришь следующий заказ....

В-общем как-то так. Надеюсь не слишком запутанно Если не понятно - просто на бумаге распиши все структуры, что куда записывается и что на что умножается. Задачи в-принципе не сложная, но писанИны будет много.
ola312
0 / 0 / 0
Регистрация: 14.10.2008
Сообщений: 11
17.11.2008, 23:57  [ТС] #14
gde tut osibka?
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
#include <iostream.h> 
#include <string.h> 
#include <fstream>
 
using namespace std;
const int CKiek = 30;
const int Ck   = 50;
int n;
 
    struct TPirkinys {
           char pav[Ck];
           double kai;
           int kie;
           double sum;
           };
int main() 
{ 
TPirkinys A[CKiek];
int n;
void mama
{
     bool Yra;
     Yra=Duomenys("eda.txt");
     if(Yra)
     {
            Pinigai();
            Spausdinti("lll.txt");
     }
}
 
   
  void Duomenys(char eda[]);
    {
         ifstream fd("eda.txt");
         if(fd.fail()) return false;
         n = 0;
         while(!fd.fail() && (n < CKiek))
                          {
                          fd.get(A[n].pav, Ck);
                          fd>>A[n].kai>>A[n].kie;
                          fd.ignore();
                          A[n].sum = A[n].kai * A[n].kie;
                          if(!fd.fail()) n = n+1;
                          }
                          fd.close();
                          return true;
                          }
   void Spausdinti(char lll[])
   {
         ofstream fr("lll.txt");
         fr <<"----------------------\n";
         fr <<"MOKEJIMAI\n";
         for(int i=0; i<n; i++)
         fr <<A[i].pav<< " "<<A[i].sum<<" Lt\n";
         fr <<"----------------------\n";
         fr <<"Studentas sumokejo:"<<suma<< " Lt\n");
         }
         
    void Pinigai()
    {
         suma=0;
         for(int i=0; i<n; i++)
         suma = suma + A[i].sum;
         }
                          
system("pause");
return 0;
}
vot shto vybrasyvajet:
23 G:\3 praca domowa\strukturos.cpp expected primary-expression before "void"
23 G:\3 praca domowa\strukturos.cpp expected `;' before "void"
53 G:\3 praca domowa\strukturos.cpp a function-definition is not allowed here before '{' token
53 G:\3 praca domowa\strukturos.cpp expected `,' or `;' before '{' token
63 G:\3 praca domowa\strukturos.cpp expected primary-expression before "void"
63 G:\3 praca domowa\strukturos.cpp expected `;' before "void"
xotabs
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 26
18.11.2008, 19:24 #15
Подскажите, как вводить структурированные данные. Вот исходник (спс casper'у), но что-то я не пойму как этот код запустить. У меня ошибки выдаёт.
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct Data{
    int day;
    int mondey;
    int yers;
};
void main()
{
Data a={15,10,2008};
cout<<a[i].a.day<<'.';
cout<<a[i].a.mondey<<'.';
cout<<a[i].a.yers<<'\n';
}
Добавлено через 1 час 13 минут 56 секунд
Вот написал, код вроде правильный, а всё равно выдаёт ошибку. В чём может быть дело?
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 <stdio.h>
#include <conio.h>
#define num 5
 
struct AVTO {
    char Name[100];
    char Collor[50];
    int Year_make;
};
 
void main {
    struct AVTO machine[num];
    int i;
 
    for (i=0; i<num; i++)
    {
        printf("Input model avto: ");
        scanf("%s",&machine[i].Name);
        
        printf("Input collor avto: ");
        scanf("%s",&machine[i].Collor);
 
        printf("Input year make: ");
        scanf("%d",&machine[i].Year_make);
    }
    getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2008, 19:24
Привет! Вот еще темы с ответами:

Помогите разобраться с try-catch - C++
#include &lt;iostream.h&gt; int main() { int s = 0; try { int a = 6 / s; } catch(char* exception) {

reinterpret_cast помогите разобраться - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int schet_not_null(int *matrix, int i_matrix, int j_matrix, int...

Помогите разобраться с шаблонами - C++
Пытаюсь реализовать новую для себя методику &quot;службы класса&quot;. Все хорошо работало, пока не возникла необходимость в качестве клиента слжбы...

Помогите новичку разобраться с С++ - C++
Доброго всем времени суток! Пытаюсь изучать С++ и у меня такие вопросы(накопились из разных тем): 1.Когда надо в конце типу float...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.11.2008, 19:24
Ответ Создать тему
Опции темы

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