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

Программа, выводящая прописью чётные числа массива. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнение массива стуктур http://www.cyberforum.ru/cpp-beginners/thread227969.html
Мне надо ввести в массив структур фамилии и инициалы студентов (с использованием пробелов). Пытаюсь воспользоваться функцией cin.getline, но не получается. Если вводить через cin, то всё норм. Почему...
C++ Unicode символы Здравствуйте.Каким образом можно вывести на экран символы unicode? http://www.cyberforum.ru/cpp-beginners/thread227958.html
абстрактный класс C++
Всем привет, снова я, только уже с новым вопросом, а что такое абстрактный класс. Читаю книгу, не могу врубиться, рассказывается про какие-то чисто виртуальные методы, можете мне рассказать чем...
Вывести порядковые номера слов в строке, совпадающих с введенным словом C++
Подскажите пожалуйста и помогите в написание программы и вообще разобраться с заданием,а то честно читаю и не понять=)))Заранее благодарен!!! 1. Ввести строку и слово. Вывести порядковые номера...
C++ Переделать с файлами http://www.cyberforum.ru/cpp-beginners/thread227941.html
Подсчитать количество предложений в файле #include <stdio.h> #include <string.h> #include <conio.h> #include <iostream.h> #include<fstream.h> int main(void) { clrscr(); int nsent;
C++ Программа с меню Дана задача: "Парк авиакомпании «Выборгские авиалинии» состоит из одного самолёта с количеством мест 12. Он делает один рейс в день. Написать программу резервирования мест со следующими... подробнее

Показать сообщение отдельно
Virgilian

Программа, выводящая прописью чётные числа массива. - C++

12.01.2011, 22:41. Просмотров 1458. Ответов 1
Метки (Все метки)

В синтаксисе ошибок нет. При вводе кол-ва элементов выдаёт: "Необработанное исключение в "0x5561d2f3 (msvcr100d.dll)" в "test5.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc" и открывается окно кода ассемблера". Вероятно, где-то некорректный или слишком сложный цикл. Или требуется вынести часть кода в вспомогательный класс.
Кто может, подскажите пожалуйста.
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
 
{
char *towords(int numb);
 
    //массив, для определения разряда, в котором находимся(сотни,десятки,еденицы...)
    int osn[11]={0,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
 
    //массив оснований
    char *basis[11][10]={
        {"","","","","","","","","",""},
        {"","odin","dva","tri","chetire","pyat'","shest'","sem'","vosem'","devat'"},
        {"","desat'","dvadcat'","tridcat'","sorok","pat'desat","shesdesat","semdesat","vosemdesat","devanosto"},
        {"","sto","dvesti","trista","chetiresta","pat'sot","shest'sot","sem'sot","vosem'sot","deviat'sot"},
        {"","odna","dve","tri","chetire","piat'","shest'","sem'","vosem'","devat'"},
        {"","desat'","dvadcat'","tridcat'","sorok","pat'desat","shesdesat","semdesat","vosemdesat","devanosto"},
        {"","sto","dvesti","trista","chetiresta","pat'sot","shest'sot","sem'sot","vosem'sot","deviat'sot"},
        {"","odin","dva","tri","chetire","pyat'","shest'","sem'","vosem'","devat'"},
        {"","desat'","dvadcat'","tridcat'","sorok","pat'desat","shesdesat","semdesat","vosemdesat","devanosto"},
        {"","sto","dvesti","trista","chetiresta","pat'sot","shest'sot","sem'sot","vosem'sot","deviat'sot"},
        {"","odin","dva","tri","chetire","pyat'","shest'","sem'","vosem'","devat'"}};
 
    //массив окончаний
    char *termination[10][10]={
        {"","","","tisach'","","","millionov","","","milliardov"},
        {"","","","tisacha","","","million","","","milliard"},
        {"","","","tisachi","","","milliona","","","milliarda"},
        {"","","","tisachi","","","milliona","","","milliarda"},
        {"","","","tisachi","","","milliona","","","milliarda"},
        {"","","","tisach'","","","millionov","","","milliardov"},
        {"","","","tisach'","","","millionov","","","milliardov"},
        {"","","","tisach'","","","millionov","","","milliardov"},
        {"","","","tisach'","","","millionov","","","milliardov"},
        {"","","","tisach'","","","millionov","","","milliardov"}};
 
    char *dec[10]={"decat'","odinadcat'","dvenadcat'","trinadcat'","chetirnadcat'","patnadcat'","shesnadcat'","semnadcat'","vocemnadcat'","devatnadcat'"};
 
 
 int n,count=0,el=2;
        cin>>n;
        int*ar=new int [n-1];
        
        //заполним массив от 2 до n
        for(int i=0;i<n-1;++i)
        {ar[i]=el++;}
        
        //Найдем все простые числа, не превышающие число n, используя решето Эратосфена.
        for (int i=0;i<n-1;++i)
           {
                   for (int j=i+1;j<n;++j)
                   {
                           if(ar[i]==0)
                           {
                                   count++;
                                   break;
                           }
                           else if(j<n-1&&ar[j]%ar[i]==0)
                           {
                                   ar[j]=0;
                           }
                        }
           }
        
        //перенесем все найденные числа в новый массив и распечатаем их
        int j=0; char result[100]={}; int n1;
        int numb;
        
    int cnt=0;
    int celoe=0;
        int*tmp=new int[n-1-count];
        {
        for (int i=0;i<n-1-count;++i)
           {
                   while(j<n-1)
                   {
                           if(ar[j]){tmp[i]=ar[j];++j;break;}
                           ++j;
                   }
                  n1=tmp[i];numb=tmp[i];//подсчет количесива цифр в числе
    while (numb){
        numb/=10;
        ++cnt;
    }
 
   
 
    while (n1){
          if (!((cnt+1) % 3)){
            if ((n1/osn[cnt])==1){
                    n1%=osn[cnt];
                    --cnt;
                    celoe=n1/osn[cnt];
                    n1%=osn[cnt];
                    strcat(result, dec[celoe]);
                --cnt;
                if (!(cnt % 3)){
                    strcat(result, " ");
                strcat(result, termination[0][cnt]);
                strcat(result, " ");
                }
            }
            if (!cnt) break;
        }
        celoe=n1/osn[cnt];
        n1%=osn[cnt];
        strcat(result, basis[cnt][celoe]);
        --cnt;
        strcat(result, " ");
        if (!(cnt % 3)){
            strcat(result, termination[celoe][cnt]);
            strcat(result, " ");
        }
    }
   cout <<result ;
  
}
           }
        
        delete[]tmp;
        delete[]ar;
        
        getch();
      
   
  
        }
Добавлено через 1 час 21 минуту
Извиняюсь. Не чётные, а простые.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru