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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Заполнение массива стуктур http://www.cyberforum.ru/cpp-beginners/thread227969.html
Мне надо ввести в массив структур фамилии и инициалы студентов (с использованием пробелов). Пытаюсь воспользоваться функцией cin.getline, но не получается. Если вводить через cin, то всё норм. Почему так? Вот код // Задание 6.1 Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы, // номер группы и успеваемость (массив из 5 элементов). Написать программу выполняющие...
C++ Unicode символы Здравствуйте.Каким образом можно вывести на экран символы unicode? http://www.cyberforum.ru/cpp-beginners/thread227958.html
абстрактный класс C++
Всем привет, снова я, только уже с новым вопросом, а что такое абстрактный класс. Читаю книгу, не могу врубиться, рассказывается про какие-то чисто виртуальные методы, можете мне рассказать чем отличается абстрактный класс от простого и привести пример. Заранее спасибо Добавлено через 21 минуту а то просто не всегда понимаю по своей книжке что написано, а вот денег на новую нету
Вывести порядковые номера слов в строке, совпадающих с введенным словом 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. Он делает один рейс в день. Написать программу резервирования мест со следующими характеристиками: а. Программа использует массив из 12 структур. Каждая структура должна содержать номер сиденья (идентификатор места), маркер, указывающий зарезервировано ли место, фамилию пассажира и его имя.... подробнее

Показать сообщение отдельно
Virgilian
Сообщений: n/a
12.01.2011, 22:41     Программа, выводящая прописью чётные числа массива.
В синтаксисе ошибок нет. При вводе кол-ва элементов выдаёт: "Необработанное исключение в "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 минуту
Извиняюсь. Не чётные, а простые.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru