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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
#1

Внешний интерфейс - C++

23.06.2012, 18:56. Просмотров 1342. Ответов 34
Метки нет (Все метки)

Здравствуйте, помогите написать программу с использованием внешнего интерфейса для программы:
Все четные элементы целочисленного массива К(п) поместить в массив L(n), а нечетные — в массив М(п). Подсчитать количество тех и других.
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
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
main() 
{
    int n,ch,nech;
    system("chcp 1251");                 
    system("cls");
    cout<<"Кол-во элементов массива: ";
    cin>>n;
    int *p=new int[n];          // выделение памяти под n элементов
    cout<<endl<<"\tВведите элементы массива\n";
    for (int i = 0; i < n; i++)
    {
        cin>>*(p+i);cout<<setw(2);
    }
 
    ch=0;nech=0;
    for (int i = 0; i < n; i++)
    {
        if (*(p+i)%2)                // проверка на нечетность элемента
        {
            nech++;                // подсчитывание кол-ва нечетных элементов
        }
        if (!(*(p+i)%2) && p[i]!=0)  // проверка на четность элемента
        {
            ch++;                  // подсчитывание кол-ва четных элментов
        }
    }
 
    int *p1=new int[nech];      // выделение памяти для нечетных элементов
    int *p2=new int[ch];       // выделение памяти для четных элементов
    ch=0;nech=0;
 
    for (int i = 0; i < n; i++)
    {
        if (*(p+i)%2)             // проверка на нечетность элемента
        {
            *(p1+nech)=*(p+i);
            nech++;              // подсчитывание кол-ва нечетных элментов
        }
        if (!(*(p+i)%2) && *(p+i)!=0)        // проверка на четность элемента
        {
            *(p2+ch)=*(p+i);
            ch++;              // подсчитывание кол-ва четных элментов
        }
        
    }
    
    cout<<"\nКол-во нечетных элементов : "<<nech;
    cout<<"\nМассив из нечетных элементов: ";
    for (int i = 0; i <= nech-1; i++)
    {
        cout<<setw(3)<<*(p1+i);     
    }
 
    cout<<"\n\nКол-во четных элементов : "<<ch;
    cout<<"\nМассив из четных элементов: ";
    for (int i = 0; i <= ch-1; i++)
    {
        cout<<setw(3)<<*(p2+i);
    }
    cout<<"\n\n";
    system("pause");
    delete(p); delete(p1); delete(p2);
}
1.Входные данные должны вводиться из файла.
2.Выходные данные должны выводиться в файл.
3.Обеспечить в программе многовариантную обработку данных, т.е. во входном файле должны находиться не один вариант данных, а любое количество вариантов данных.
4.В выходном файле должны находиться все варианты данных в соответствии с входным файлом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2012, 18:56     Внешний интерфейс
Посмотрите здесь:

Внешний файл - C++
Нужно, чтобы: 1 программа:Брала числа из внешнего файла 2 программа:Брала матрицу из внешнего файла setlocale(LC_CTYPE,&quot;Russian&quot;); ...

Внешний файл - C++
есть программа нужно, чтобы она брала данные через внешний файл #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; ...

интерфейс - C++
qt, winAPI, wxWidgets, winForms, MFC... что там еще можно использовать для создания графического интерфейса? Хотелось бы вкратце...

Интерфейс в с++ - C++
Нужно использовать интерфейс. От которого будут наследоваться несколько классов. Но я так понял что нужно использовать абстрактный класс?

Интерфейс - C++
Задание по практике состоит из программ на си. Нужно написать интерфейс, где пользователь может выбрать номер программы и увидеть решение....

Неразрешенный внешний символ - C++
Ошибка LNK1120 неразрешенных внешних элементов: 1 Ошибка LNK2019 ссылка на неразрешенный внешний символ &quot;void __cdecl print(struct...

Неразрешенный внешний символ - C++
Подскажите, пожалуйста, что эта может быть за ошибка fatal error LNK1120: 1 неразрешенных внешних элементов и warning C4996: 'getch': The...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
23.06.2012, 21:37     Внешний интерфейс #16
flock, Ошибку в студию!
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
23.06.2012, 21:47  [ТС]     Внешний интерфейс #17
При запуске выскакивает окно и сообщение:"Project1 Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004011D8. Read of address 00000012'.Process stopped. Use Step or Run to continue." Окно просто так не закрывается, только принудительно

Посмотрите, пожалуйста, еще раз, может какой косяк есть:
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
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
FILE *F1;
main()
{
    F1=fopen("C:\temp\1.txt","r");
    int n,ch,nech;
    system("chcp 1251");
    system("cls");
    int *p=new int[n];
    int i=0;
    while(!feof(F1)||i<n)
    {
       fscanf(F1,"%d",p[i]);
       i++;
    }
 if(i-n!=1)
    n=i+1;
    ch=0;nech=0;
    for (int i = 0; i < n; i++)
    {
        if (*(p+i)%2)                // i?iaa?ea ia ia?aoiinou yeaiaioa
        {
            nech++;                // iian?eouaaiea eie-aa ia?aoiuo yeaiaioia
        }
        if (!(*(p+i)%2) && p[i]!=0)  // i?iaa?ea ia ?aoiinou yeaiaioa
        {
            ch++;                  // iian?eouaaiea eie-aa ?aoiuo yeiaioia
        }
    }
 
    int *p1=new int[nech];      // auaaeaiea iaiyoe aey ia?aoiuo yeaiaioia
    int *p2=new int[ch];       // auaaeaiea iaiyoe aey ?aoiuo yeaiaioia
    ch=0;nech=0;
 
    for (int i = 0; i < n; i++)
    {
        if (*(p+i)%2)             // i?iaa?ea ia ia?aoiinou yeaiaioa
        {
            *(p1+nech)=*(p+i);
            nech++;              // iian?eouaaiea eie-aa ia?aoiuo yeiaioia
        }
        if (!(*(p+i)%2) && *(p+i)!=0)        // i?iaa?ea ia ?aoiinou yeaiaioa
        {
            *(p2+ch)=*(p+i);
            ch++;              // iian?eouaaiea eie-aa ?aoiuo yeiaioia
        }
 
    } 
     fprintf(F1,"%d",p[i]);               //a ooo ia?aou a oaee. ?aae ainieoaoaeuiiai yooaeoa ia ieoo)
    system("pause");
    delete(p); delete(p1); delete(p2);
}
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
23.06.2012, 22:33     Внешний интерфейс #18
flock, Грубый доступ. Самая коварная ошибка. Ищется тяжело. надо посмотреть, где есть выход за пределы массива
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
23.06.2012, 23:32  [ТС]     Внешний интерфейс #19
Invader_Zim, а что значит выход за пределы массива?попытка использования больше памяти, чем доступно? и как этого избежать?
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
23.06.2012, 23:44     Внешний интерфейс #20
flock, Этого можно избежать только когда следиш чтобы небыло такой ситуации:
C++
1
2
int a[3];
a[5]=5;
Но это в общем случае. Бывает что такая запись канает)
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
23.06.2012, 23:51  [ТС]     Внешний интерфейс #21
Invader_Zim, понятно, спасибо! а как могло произойти в этом примере, здесь же нет подобного
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
23.06.2012, 23:54     Внешний интерфейс #22
flock, Перепроверь, может оно как-то неявно. Я там меняю верхний предел в зависимости от того сколько элементов в файле. Поэтому лучше сделать динамический массив, или заранее неприлично большой массив обьявить
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
24.06.2012, 00:08  [ТС]     Внешний интерфейс #23
Invader_Zim, так это и есть динамический массив
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
24.06.2012, 00:22     Внешний интерфейс #24
его надо переобьявлять после каждого изменения
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
24.06.2012, 00:30  [ТС]     Внешний интерфейс #25
хм.. я думал выделить память, сделать указатели, в конце очистить этого достаточно
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
24.06.2012, 00:59     Внешний интерфейс #26
flock, ан нифига) мучайся называется) постоянно делить и выделяй

Добавлено через 32 секунды
но маллок спасает от этого) почитай ман по нему и по сопустсвующим ему функциям
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2012, 01:59     Внешний интерфейс #27
В 11 строке пишешь: int *p=new int[n]; , а у n нет значения.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.06.2012, 02:07     Внешний интерфейс #28
там оно вводом пользователя задается.
Если вы в с++ пришли надолго, то освойте дебагер. с ним такие да и не только такие ошибки быстро находятся.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2012, 06:27     Внешний интерфейс #29
Цитата Сообщение от DU Посмотреть сообщение
там оно вводом пользователя задается.
Если вы в с++ пришли надолго, то освойте дебагер. с ним такие да и не только такие ошибки быстро находятся.
Он сейчас не этот код делает, который вверху страницы, а тот, который на второй странице (17 пост) Внешний интерфейс. Этот-то у него работает.

Добавлено через 12 минут
flock, открытие файла нужно проверять. Сделай в начале такую конструкцию:
C++
1
2
3
4
5
6
if ((F1=fopen("C:\temp\1.txt","r")) == NULL)
    {
        cout << "Невозможно открыть файл." << endl;
        system("pause");
        exit(1);
    }
Хотя бы убедишься, что у тебя файл открывается. У меня, если так прописать путь, файл не открывается. Нужно так: "C:\\temp\\1.txt", тогда открывается, но там и дальше есть ошибки.

Добавлено через 3 часа 41 минуту
while(!feof(F1)||i<n)
{
fscanf(F1,"%d",p[i]);
i++;
}
Это неправильно. Нужно так:
while (!feof(F1) && i < n)
{
fscanf(F1, "%d", &p[i]);
i++;
}

Это не понятно зачем:
if(i-n!=1)
n=i+1;
Убери.

Приблизительно так:

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
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <cstdio>
using namespace std;
 
FILE *F1, *F2;
 
void main()
{
    setlocale(0, "");
    system("cls");
    if ((F1 = fopen("C:\\Temp\\1.txt","r")) == NULL)
    {
        cout << "Невозможно открыть файл." << endl;
        system("pause");
        exit(1);
    }
    
    int n = 10, ch, nech;
    int *p = new int[n];
    int i = 0;
    
    while (!feof(F1) && i < n)
    {
       fscanf(F1, "%d", &p[i]);
       i++;
    }
    fclose(F1);
 //if(i-n != 1)
    //n=i+1;
    ch = 0; nech = 0;
    for (int i = 0; i < n; i++)
    {
        if (*(p+i)%2)                
        {
            nech++;                
        }
        if (!(*(p + i)%2) && p[i]!=0)  
        {
            ch++;                  
        }
    }
 
    int *p1=new int[nech];      
    int *p2=new int[ch];       
    ch = 0; nech = 0;
 
    for (int i = 0; i < n; i++)
    {
        if (*(p + i)%2)             
        {
            *(p1 + nech)=*(p + i);
            nech++;              
        }
        if (!(*(p+i)%2) && *(p+i)!=0)        
        {
            *(p2+ch)=*(p+i);
            ch++;              
        }
 
    } 
    
    if ((F2=fopen("C:\\Temp\\2.txt","w")) == NULL)
    {
        cout << "Невозможно открыть файл." << endl;
        system("pause");
        exit(1);
    }
    
    fprintf(F2, "%s", "Все:  ");
    for(int i = 0; i < n; i++)
       fprintf(F2, "%d  ", p[i]);              
    
    fprintf(F2, "%s", "\nНечётные:  ");
    for(int i = 0; i < nech; i++)
       fprintf(F2, "%d  ", p1[i]);
    
    fprintf(F2, "%s", "\nЧётные:  ");
    for(int i = 0; i < ch; i++)
       fprintf(F2, "%d  ", p2[i]);
    
    fclose(F2);
    
    system("pause");
    delete(p); delete(p1); delete(p2);
}
В файле 1.txt десять чисел, разделённых пробелами.
Со scanf() и printf() я плохо знаком, поэтому, наверное, запись в txt.2 можно и лучше как-то сделать. Это сам додумай или посоветует кто.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 11:20     Внешний интерфейс
Еще ссылки по теме:

Неразрешенный внешний символ - C++
Здравствуйте!Возникла проблема с классами Вот вообщем мой класс : WorldEdit.cpp #include &quot;WorldEdit.h&quot; #include &quot;Mouse.h&quot; ...

Неразрешённый внешний символ - C++
При компиляции даёт мне ошибку 1&gt;Learn.obj : error LNK2001: неразрешенный внешний символ &quot;&quot;int * arr&quot; (?arr@@3PAHA)&quot; ...

Внешний обработчик события - C++
Всем доброго времени суток. есть класс: TPainter::TPainter(TPanel *panelTmp) { this-&gt;panel = panelTmp; } class TPainter ...

Неразрешённый внешний элемент - C++
Вот собсно: #include &lt;iostream&gt; using namespace std; template&lt;class T&gt; T function(T a,T b) { if(a&gt;b) return (a); else...

Неразрешенный внешний символ - C++
Здравствуйте! Недавно скачала библиотеку DocxFactory и решила, собственно, использовать ее в одном из проектов. В общем, путь к либе...


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

Или воспользуйтесь поиском по форуму:
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
24.06.2012, 11:20     Внешний интерфейс #30
alsav22, fscanf fprintf -ничего сложного. Правила те-же что и для scanf printf только первый агрумент-указатель типа FILEа дальше как обычно)
Yandex
Объявления
24.06.2012, 11:20     Внешний интерфейс
Ответ Создать тему
Опции темы

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