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

Подскажите, где я ошибся. Программа принимает ввод и сбрасывается - C++

Восстановить пароль Регистрация
 
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
17.12.2012, 16:51     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #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
#include <cmath>
#include <cstdlib>
#include <iostream>
using namespace std;
int a, pros[100],er;  //ГЅГІГЁ òðè ïåðåìåГ*Г*ûå Г*ГіГ¦Г*Г» Г*Г* ГўГ±ГҐГµ ГЅГІГ*ГЇГ*Гµ Г°Г*áîòû (Гў îáîèõ ГґГіГ*êöèÿõ)
 
int prost_m(int a);  // ññûëêГ* Г*Г* ГґГіГ*êöèþ ñîñòГ*âëåГ*ГЁГї Г¬Г*Г±Г±ГЁГўГ* ïðîñòûõ Г·ГЁГ±ГҐГ« äî Г*.
                                                                                        
int main ()         
{             
    cout<<"vvedite chislo "; cin>>a; int t=0;       
     /*ГІГіГІ ãäå-ГІГ® ГЁ ГҐГ±ГІГј ïðîáëåìГ*. Г*ГҐГёГІГ*ГІГ*îå ïðåêðГ*Г№ГҐГ*ГЁГҐ Г°Г*áîòû ïðîãðГ*ììû
     ( Г*ГҐ Гў îäГ*Гі ГўГҐГІГЄГі if Г*ГҐ âõîäèò. Г*ГҐ ïîéìó ïî÷åìó )*/
     if (a<3) 
     {  if (a<0) {cout<<"error! a<0"; return 0;} else {
     if (a==1) {cout<<"error! a=1"; return 0;} else  {cout<<"1 1"; return 0;}  }              
     }
      else 
 
     {      int i=0,f=0,g=0,h=0,j=0;
         prost_m(a);    if (er>1) {
         for (i=0; i==er/2; i++)
         {  f=pros[i];
            for (j=0; j==er/2; j++)
            {g=pros[j];}
            h=f+g; if (h==a) {cout<<g<<" "<<h<<", "; t--;}
         }                              }
      else {cout<<"error";}            }
       if (t>0) cout<<"rozlozenie nevozmozhno"; 
int ts=0;
     cin>>t;
}
 
int prost_m(int a)
{     int i=0,ii=0, iu=0, iii=0, ie=0, er=1;
for (ie=0; ie<501; ie++) {pros[ie]=0;}
     pros[0]=1;      
    for (i=2; i==a; i++)
    {                     iu++;
        for (ii=2; ii<i; ii++){if (a%ii==0){ iii++;} cout<<"+";}
         if(iii==0) {iu++; pros[iu]=i;er++;cout<<"+";}
    }
}
она запускается и даже запрашивает, но потом сообщение: Подскажите, где я ошибся. Программа принимает ввод и сбрасывается.

прошу, подскажите, что у меня не так. а то я студент первого курса раньше с консолью с++ совсем "не общался", только пару оконных текстовых редакторов написал (и то это было давно и не правда ). если знаете какой-нибудь другой способ, полегче - буду рад выслушать объяснение.

заранее благодарен.
за помощь, могу перевести денег на электронный счет. если хотите.

п.с. преподаватель-практик смотрел и не увидел ошибки. на двух машинах пробовал - ни на одной не работает. WTF?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
17.12.2012, 17:00     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #2
Цитата Сообщение от White_volf Посмотреть сообщение
int a, pros[100]
Цитата Сообщение от White_volf Посмотреть сообщение
for (ie=0; ie<501; ie++) {pros[ie]=0;}
выход за границу мыссива.

Не по теме:

Боже, настолько ужасный по виду код я еще не встречал никогда

sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
17.12.2012, 17:10     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #3
В 36-й строчке for(ie < 501). Хотя массив pros имеет размер 100

Добавлено через 8 минут
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 <cmath>
#include <cstdlib>
#include <iostream>
using namespace std;
int a, pros[100],er;  //эти три переменные нужны на всех этапах работы (в обоих функциях)
 
int prost_m(int a);  // ссылка на функцию составления массива простых чисел до а.
 
int main ()
{
    cout<<"vvedite chislo ";
    cin>>a;
    int t = 0;
     /*тут где-то и есть проблема. нештатное прекращение работы программы
     ( не в одну ветку if не входит. не пойму почему )*/
    if (a<3)
    {
        if (a<0) {cout<<"error! a<0"; return 0;}
        else {
        if (a==1) {cout<<"error! a=1"; return 0;}
        else  {cout<<"1 1"; return 0;}  }
    }
 
    else
    {
        int i=0,f=0,g=0,h=0,j=0;
         prost_m(a);
         if (er>1) {
         for (i=0; i==er/2; i++)
         {  f=pros[i];
            for (j=0; j==er/2; j++)
            {g=pros[j];}
            h=f+g; if (h==a) {cout<<g<<" "<<h<<", "; t--;}
         }                              }
      else {cout<<"error";}
      }
       if (t>0) cout<<"rozlozenie nevozmozhno";
int ts=0;
     cin>>t;
}
 
int prost_m(int a)
{     int i=0,ii=0, iu=0, iii=0, ie=0, er=1;
for (ie=0; ie<100; ie++) {pros[ie]=0;}
     pros[0]=1;
    for (i=2; i==a; i++)
    {                     iu++;
        for (ii=2; ii<i; ii++){if (a%ii==0){ iii++;} cout<<"+";}
         if(iii==0) {iu++; pros[iu]=i;er++;cout<<"+";}
    }
}
Так у меня работает

Добавлено через 1 минуту
Цитата Сообщение от Afflicted Посмотреть сообщение
Боже, настолько ужасный по виду код я еще не встречал никогда

Не по теме:

А я встречал и похуже - в одну строчку

White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
17.12.2012, 18:07  [ТС]     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #4
спасибо, товарищи!)))
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
19.12.2012, 19:22  [ТС]     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #5
Короче, решил задачу. оказывается, я усложнил логику самой программы (никакого массива не нужно было), то есть алгоритм, и запутался в нём... а также были проблемы с нюансами...
как только скопирую программку с университетского сервера и размещу в свой блог полностью разобранный код - скину ссылку на статью, чтобы другие меньше мучились и чтобы это программа попала в мой список (который я хочу создать, всё с той же целью - помощь следующим студентам) разобранных программ.

спасибо тем, кто ответил, хоть и ответы не помогли: даже после тех исправлений, которые здесь описали, программа всё-равно не работала (выдавала ошибку "недонабора простых чисел").
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
19.12.2012, 20:30     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
bool prost(int N)
{
    for (int i=2;i<N;i++)
    {
        if (!(N%i)) return false;
    }
    return true;
}
 
int main()
{
int N=1000,count=0,err=0;
int *M=new int[N];
 
    for (int i=2;i<N;i++) 
    {
        if (prost(i))
        {
            M[count]=i;
            count++;
        }
    }
 
    for (int i=2;i<N;i++)
    {
        for (int j=i;j<N;j++)
        {
            if (prost(i)&&prost(j))
            {
                if (i+j==N) 
                {
                    cout<<i<<"+"<<j<<"="<<N<<"\n";
                    err++;
                }
            }
        }
    }
 
    if (!err) cout<<"НЕЛЬЗЯ РАЗЛОЖИТЬ\n";
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 07:12     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается
Еще ссылки по теме:

C++ Ошибка при компиляции!Подскажите где ошибся?
Где я ошибся? C++
C++ Подскажите пожалуйста как написать консольное приложение win32, которое принимает на вход путь к папке

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

Или воспользуйтесь поиском по форуму:
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
20.12.2012, 07:12  [ТС]     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается #7
Цитата Сообщение от daslex Посмотреть сообщение
Как вариант (чтоб было)
скоро и мой код будет... и ссылка на построковоую раскладку...
вечером сделаю... если не сегодня - завтра...
Yandex
Объявления
20.12.2012, 07:12     Подскажите, где я ошибся. Программа принимает ввод и сбрасывается
Ответ Создать тему
Опции темы

Текущее время: 09:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru