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

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

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

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

23.06.2012, 18:56. Просмотров 1368. Ответов 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.В выходном файле должны находиться все варианты данных в соответствии с входным файлом.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2012, 18:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Внешний интерфейс (C++):

Внешний файл - 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++
Здравствуйте!Возникла проблема с классами Вот вообщем мой класс : WorldEdit.cpp #include &quot;WorldEdit.h&quot; #include &quot;Mouse.h&quot; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
23.06.2012, 21:37 #16
flock, Ошибку в студию!
0
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);
}
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
23.06.2012, 22:33 #18
flock, Грубый доступ. Самая коварная ошибка. Ищется тяжело. надо посмотреть, где есть выход за пределы массива
1
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
23.06.2012, 23:32  [ТС] #19
Invader_Zim, а что значит выход за пределы массива?попытка использования больше памяти, чем доступно? и как этого избежать?
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
23.06.2012, 23:44 #20
flock, Этого можно избежать только когда следиш чтобы небыло такой ситуации:
C++
1
2
int a[3];
a[5]=5;
Но это в общем случае. Бывает что такая запись канает)
0
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
23.06.2012, 23:51  [ТС] #21
Invader_Zim, понятно, спасибо! а как могло произойти в этом примере, здесь же нет подобного
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
23.06.2012, 23:54 #22
flock, Перепроверь, может оно как-то неявно. Я там меняю верхний предел в зависимости от того сколько элементов в файле. Поэтому лучше сделать динамический массив, или заранее неприлично большой массив обьявить
0
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
24.06.2012, 00:08  [ТС] #23
Invader_Zim, так это и есть динамический массив
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 00:22 #24
его надо переобьявлять после каждого изменения
0
flock
3 / 1 / 1
Регистрация: 23.09.2011
Сообщений: 66
24.06.2012, 00:30  [ТС] #25
хм.. я думал выделить память, сделать указатели, в конце очистить этого достаточно
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 00:59 #26
flock, ан нифига) мучайся называется) постоянно делить и выделяй

Добавлено через 32 секунды
но маллок спасает от этого) почитай ман по нему и по сопустсвующим ему функциям
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2012, 01:59 #27
В 11 строке пишешь: int *p=new int[n]; , а у n нет значения.
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.06.2012, 02:07 #28
там оно вводом пользователя задается.
Если вы в с++ пришли надолго, то освойте дебагер. с ним такие да и не только такие ошибки быстро находятся.
0
alsav22
5419 / 4815 / 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 можно и лучше как-то сделать. Это сам додумай или посоветует кто.
1
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
24.06.2012, 11:20 #30
alsav22, fscanf fprintf -ничего сложного. Правила те-же что и для scanf printf только первый агрумент-указатель типа FILEа дальше как обычно)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 11:20
Привет! Вот еще темы с ответами:

Неразрешенный внешний символ - C++
Ребят помогите, пожалуйста, не могу понять в чем заключается ошибка. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...

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

c++ ссылка на внешний символ - C++
Тип проэкта: консольное приложение win32 При компиляции появляются следующие ошибки: Ошибка 1 error LNK2019: ссылка на...

Неразрешённый внешний элемент - 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...


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

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

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