0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 22
1

Ошибки C2143, С2144

22.10.2015, 15:24. Показов 1261. Ответов 5
Метки нет (Все метки)

Задача - реализовать телефонную книгу.
Ошибки - отсутствие ";"

Не могу найти, где я провинилась. Не могу понять, работает ли программа.

ListFunctions.cpp
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
#include <iostream>
#include "ListFunctions.h"
 
using namespace std;
 
ElementOfList *newElement(char *name, char *number, ElementOfList *next, ElementOfList *previous)
{
    ElementOfList *auxiliary = new ElementOfList;
    auxiliary->next = next;
    auxiliary->previous = previous;
    auxiliary->name = name;
    auxiliary->number = number;
    return auxiliary;
}
 
List *newList()
{
    List *list = new List;
    ElementOfList *auxiliary = newElement(nullptr, nullptr, nullptr, nullptr);
    list->head = auxiliary;
    return list;
}
 
void add(char *name, char *number, ElementOfList *&element)
{
    if (element->name == nullptr)
    {
        ElementOfList *auxiliary = newElement(name, number, nullptr, nullptr);
        element = auxiliary;
    }
    else
    {
        ElementOfList *firstAuxiliary = element;
        while (firstAuxiliary->next)
        {
            firstAuxiliary = firstAuxiliary->next;
        }
        ElementOfList *secondAuxiliary = newElement(name, number, nullptr, firstAuxiliary);
        firstAuxiliary->next = secondAuxiliary;
    }
    return;
}
 
void addElement(char *name, char *number, List *list)
{
    return add(name, number, list->head);
}
 
void removeList(List *list)
{
    while (list->head)
    {
        ElementOfList *auxiliary = list->head->next;
        delete list->head;
        list->head = auxiliary;
    }
}
 
bool findByName(char *name, List *list)
{
    ElementOfList *auxiliary = list->head;
    while (auxiliary->next && auxiliary->name != name)
    {
        auxiliary = auxiliary->next;
    }
    return (auxiliary->name == name);
}
 
bool findByNumber(char *number, List *list)
{
    ElementOfList *auxiliary = list->head;
    while (auxiliary->next && auxiliary->number != number)
    {
        auxiliary = auxiliary->next;
    }
    return (auxiliary->number == number);
}
 
void printList(List *list)
{
    ElementOfList *auxiliary = list->head;
    while (auxiliary->next != nullptr)
    {
        cout << auxiliary->name << ' ' << auxiliary->number << endl;
        auxiliary = auxiliary->next;
    }
    cout << endl;
}
ListFunctions.h:
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
#pragma once
#include <iostream>
 
struct ElementOfList
{
    char *name;
    char *number;
    ElementOfList *next;
    ElementOfList *previous;
    ElementOfList()
    {
        number = nullptr;
        name = nullptr;
        next = nullptr;
        previous = nullptr;
    }
};
 
struct List
{
    ElementOfList *head;
    List()
    {
        head = nullptr;
    }
};
 
ElementOfList *newElement(char *name, char *number, ElementOfList *next, ElementOfList *previous);
 
List *newList();
 
void addElement(char *name, char *number, List *list);
 
//void removeElement(char *name, int number, List *list);
 
void printList(List *list);
 
void removeList(List *list);
 
bool findByName(char *name, List *list);
 
bool findByNumber(char *number, List *list)
Choice.h:
C++
1
2
3
4
#pragma once
#include "ListFunctions.h"
 
int choice(int answer, List *list, const char *fileName
Choice.cpp:
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
#include <iostream>
#include "Choice.h"
#include "ListFunctions.h"
#include <fstream>
 
using namespace std;
 
int choice(int answer, List *list, const char *fileName)
{
    switch (answer)
    {
    case 0: return 0;
    case 1:
    {
        int length = 0;
        char *name = new char[length];
        char *number = new char[length];
        cout << "Enter the name: ";
        cin >> name;
        cout << "Enter the phone number: ";
        cin >> number;
        addElement(name, number, list);
        return 5;
    }
    case 2:
    {
        int length = 0;
        char *name = new char[length];
        cout << "Enter name: ";
        cin >> name;
        findByName(name, list);
        return 5;
    }
    case 3:
    {
        int length = 0;
        char *number = new char[length];
        cout << "Enter phone number: ";
        cin >> number;
        findByNumber(number, list);
        return 5;
    }
    case 4:
    {
        ofstream phonebook(fileName);
        phonebook << printList;
        return 5;
    }
    }
    return 5;
}
Список ошибок:
Миниатюры
Ошибки C2143, С2144  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2015, 15:24
Ответы с готовыми решениями:

Программа учета покупок - Error C2143: syntax error: missing ';' before 'type'
Нужно написать программу учёта покупок (название и цена товара) в магазине, данные хранить в...

Ошибка: error C2143 функция void deleteEnd(void)
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; #define MAXNAME 56...

Error C2143: syntax error : missing ';' before '.'
#include &lt;fstream&gt; #include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; using...

For(auto const& val : stime) .cpp(47) : error C2143: синтаксическая ошибка: отсутствие "," перед ":"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdexcept&gt; #include &lt;locale&gt; #include...

5
Эксперт С++
3064 / 1404 / 423
Регистрация: 19.01.2009
Сообщений: 3,808
22.10.2015, 15:28 2
Almanack, ListFunctions.h строка 42
0
2 / 2 / 2
Регистрация: 07.10.2015
Сообщений: 11
22.10.2015, 15:30 3
Цитата Сообщение от Almanack Посмотреть сообщение
bool findByNumber(char *number, List *list)
добавь ; в конец
0
Эксперт С++
3064 / 1404 / 423
Регистрация: 19.01.2009
Сообщений: 3,808
22.10.2015, 15:45 4
ну и присмотритесь к Choice.h, а именно к функции choice()

Добавлено через 14 минут
C++
1
2
3
4
5
        int length = 0;
        char *number = new char[length];
        cout << "Enter phone number: ";
        cin >> number;
        findByNumber(number, list);
Almanack, у вас в choice() часто повторяется подобный код - он ошибочен:

1) само по себе выделять массив 0-ой длинны не является ошибкой, но ошибка будет дальше где из консоли читается строка в память, на которую указывает number, т.к. для массива было выделено ноль символов этот код затрет какую-то другую память.
2) динамически выделять память под number будет неверно, т.к. в findByNumber(), память на которую указывает number передается только для чтения и никуда за пределы данной функции не уходит - поэтому здесь имеется memory leak.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 22
22.10.2015, 17:25  [ТС] 5
GreenWizard, спасибо.
schdub, спасибо, а как следует исправить choice()?
0
Модератор
Эксперт С++
12088 / 9763 / 5906
Регистрация: 18.12.2011
Сообщений: 26,213
22.10.2015, 17:40 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
int choice(int answer, List *list, const char *fileName)
{
    if(ansver==0)
         return 0;
    char name[100],number[100];
    switch (answer)
    {
    case 1:
        cout << "Enter the name: ";
        cin >> name;
        cout << "Enter the phone number: ";
        cin >> number;
        addElement(name, number, list);
        break;
    case 2:
        cout << "Enter name: ";
        cin >> name;
        findByName(name, list);
        break;
    case 3:
        cout << "Enter phone number: ";
        cin >> number;
        findByNumber(number, list);
        break;
    case 4:
    {
        ofstream phonebook(fileName);
        phonebook << printList;
        phonebook.close();
        break;
    }
    }
    return 5;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2015, 17:40
Помогаю со студенческими работами здесь

error C4430, error C2143
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "строка"
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "<<"
Программа Microsoft Visual C++ 2010 // площадь прямоугольника.cpp: главный файл проекта. ...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
Вот текст класса, где собственно говоря вылезает ошибка. Где я мог пропустить &quot;;&quot; никак не пойму....

error C2143: синтаксическая ошибка: отсутствие ";" перед "using"
Сколько смотрю в код, не могу найти где я ошибку совершил, возможно вы поможете) main.cpp...

error C2143: синтаксическая ошибка: отсутствие "]" перед ";"
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; using namespace std; // Программа int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru