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

Подскажите как исправить ошибку - C++

Восстановить пароль Регистрация
 
baffer55
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
02.10.2013, 19:37     Подскажите как исправить ошибку #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
#include <stdio.h> 
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
int main () 
{   
    int i, a, b=0;
    printf("Vvedite razmernost' massiva: ");
    scanf("%d", &a);//ââîä Г§Г*Г*Г·Г*ГЁГ© ïåðåìåГ*Г*îé Г*
    int mas[a];//ñîñòГ*âëåГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* ГЁГ§ ïåðåìåГ*Г*îé a
    srand(time(NULL));//Г§Г*ГЇГіГ±ГЄ ГЈГҐГ*ГҐГ°Г*òîðГ* Г¬Г*ññèâîâ
    printf("elementy massiva:");
    for (i=0;i<a;i++) 
    {mas[i]=rand()%100;// âûâîäèò Г¬Г*Г±Г±ГЁГў Г·ГЁГ±ГҐГ« Гў ïåðåäГ*Г«Г*Гµ 100 
    printf(" %d", mas[i]);};//âûâîäèò ïîëó÷åГ*Г*ûé Г¬Г*Г±Г±ГЁГў Г*Г* ГЅГЄГ°Г*Г*
    printf("\n");//ïåðåõîä Г*Г* ñëåäóþùóþ ñòðîêó
    printf("indeksy elementov, kotorye kratny 3 i 5:");
    for (i=0;i<a;i++)
     {if (((mas[i]%3)==0)&&((mas[i]%5)==0))//åñëè  Г¬Г*Г±Г±ГЁГў ГЄГ°Г*ГІГҐГ* 3 ГЁ ГЇГїГІГЁ  ГЇГ®Г¤Г№ГЁГІГ»ГўГ*ГҐГІ êîëè÷åñòâî ГЁГ*äåêñîâ
      {printf(" %d", i); b+=1;};}
    if (b==0) printf(" <net elementov>");//åñëì ïðåäûäóùèå óñëîâèå Г*ГҐ âïîëГ*ГїГҐГІГ±Гї ââîäèò ñîîáùåГ*ГЁГҐ
    printf("\n");
    getch( ) ;
    return 0;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
02.10.2013, 19:46     Подскажите как исправить ошибку #2
Цитата Сообщение от baffer55 Посмотреть сообщение
писал программу по заданию и не могу понять где ошибка но у меня она решает не правильно
Сформировать одномерный массив из целых чисел. Вывести на экран индексы тех элементов, которые кратны трем и пяти.

C++
1
2
3
 printf("Vvedite razmernost' massiva: ");
    scanf("%d", &a);//ââîä Г§Г*Г*Г·Г*ГЁГ© ïåðåìåГ*Г*îé Г*
    int mas[a];//ñîñòГ*âëåГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* ГЁГ§ ïåðåìåГ*Г*îé a
для начала- массив можно объявлять так
C++
1
2
3
4
int arr[5];
...
const int a=5;
int arr[a];
если вы хотит вводить размер с клавиатуры нужно по другому объявлять
C++
1
int* arr=new int[a];
baffer55
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
02.10.2013, 19:50  [ТС]     Подскажите как исправить ошибку #3
нет проблема в том что программа порой не правильна считает индексы. допустим есть индексы кратные 3 и кратные 5 но программа ввыводит сообщение что нет элементов.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
02.10.2013, 19:53     Подскажите как исправить ошибку #4
ну больше вроде ошибок нету, пару точек с запятой там где не надо, а так норм и работает все.
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
#include <stdio.h> 
 #include <stdlib.h>
 #include <time.h>
 #include <conio.h>
#include <iostream>
 
 int main () 
 { 
 int i, b=0;
 const int a=10;
 int mas[a];
 
 srand(time(NULL));
 printf("elementy massiva:\n");
 
 for (i=0;i<a;i++)  {
     mas[i]=rand()%100; 
    printf(" %d", mas[i]);
 }
 printf("\n");
 printf("indeksy elementov, kotorye kratny 3 i 5:");
 
    for (i=0;i<a;i++)
    {
        if (((mas[i]%3)==0)&&((mas[i]%5)==0))
        {
            printf(" %d", i); b=1;
        }
    }
    if (b==0) printf(" <net elementov>");
 printf("\n");
 getch( ) ;
 return 0;
 }
Добавлено через 2 минуты
Цитата Сообщение от baffer55 Посмотреть сообщение
нет проблема в том что программа порой не правильна считает индексы. допустим есть индексы кратные 3 и кратные 5 но программа ввыводит сообщение что нет элементов.
elementy massiva:
27 37 4 17 32 6 75 49 69 8
indeksy elementov, kotorye kratny 3 i 5: 6

elementy massiva:
10 23 90 75 24 27 33 62 14 96
indeksy elementov, kotorye kratny 3 i 5: 2 3

все работает
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.10.2013, 19:53     Подскажите как исправить ошибку #5
Цитата Сообщение от baffer55 Посмотреть сообщение
нет проблема в том что программа порой не правильна считает индексы. допустим есть индексы кратные 3 и кратные 5 но программа ввыводит сообщение что нет элементов.
Например?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
02.10.2013, 19:55     Подскажите как исправить ошибку #6
не забывайте что кратность должна быть 3и5 одновременно, а таких чисел мало-15,30,45,75,60,90 и вроде все=)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.10.2013, 19:58     Подскажите как исправить ошибку #7
Цитата Сообщение от newb_programmer Посмотреть сообщение
не забывайте что кратность должна быть 3и5 одновременно
Кстати, это следует из кода, но не следует из задания:
Цитата Сообщение от baffer55 Посмотреть сообщение
которые кратны трем и пяти
Если бы было написано: ...которые кратны и трём, и пяти...
Поэтому, нужно уточнение от ТС.
5Hur1KEN
10 / 10 / 1
Регистрация: 25.09.2013
Сообщений: 64
02.10.2013, 20:02     Подскажите как исправить ошибку #8
ну сразу начну с того что нельзя задавать размерность массива неконстантым выражением, у тебя:
C++
1
2
scanf("%d", &a);
int mas[a];
такое недопустимо

предлагаю вместо статического массива запилить динамический:
C++
1
int *mas = new int[a];
а вот и исправленная ошибка:
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
#include <stdio.h> 
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
int main()
{
    int a, b = 0;
    printf("Vvedite razmernost' massiva: ");
    scanf("%d", &a);
    int *mas = new int[a];
    srand(time(NULL));
    printf("elementy massiva:");
    for (int i = 0; i < a; i++)
    {
        mas[i] = rand() % 100;
        printf(" %d", mas[i]);
    };
    printf("\n");
    printf("indeksy elementov, kotorye kratny 3 i 5:");
    for (int i = 0; i < a; i++)
    {
        if (((mas[i] % 3) == 0)&&((mas[i] % 5) == 0))
        {
            printf(" %d", i);
            b += 1;
        };
    }
    if (b == 0) printf(" <net elementov>");
    printf("\n");
    return 0;
}
причина ещё была в том что индекс i я просто инициализировал в цикле
baffer55
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 10
02.10.2013, 20:04  [ТС]     Подскажите как исправить ошибку #9
все равно не правильно подсчитыват
Миниатюры
Подскажите как исправить ошибку  
5Hur1KEN
10 / 10 / 1
Регистрация: 25.09.2013
Сообщений: 64
02.10.2013, 20:21     Подскажите как исправить ошибку #10
Цитата Сообщение от baffer55 Посмотреть сообщение
все равно не правильно подсчитыват
в моей программе, что я тебе написал, всё работает!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 20:26     Подскажите как исправить ошибку
Еще ссылки по теме:

Подскажите, пожалуйста, как исправить ошибку C++
Написала программу, выводит ошибку, подскажите как исправить C++
C++ Подскажите, как исправить 1 ошибку в программе?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.10.2013, 20:26     Подскажите как исправить ошибку #11
Цитата Сообщение от baffer55 Посмотреть сообщение
все равно не правильно подсчитыват
Какие из этих элементов кратны, по-вашему, и 3, и 5?

Добавлено через 2 минуты
Цитата Сообщение от 5Hur1KEN Посмотреть сообщение
такое недопустимо
Не все разработчики компиляторов так считают.
Миниатюры
Подскажите как исправить ошибку  
Yandex
Объявления
02.10.2013, 20:26     Подскажите как исправить ошибку
Ответ Создать тему
Опции темы

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