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

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

Войти
Регистрация
Восстановить пароль
 
 
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
#1

Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) - C++

01.11.2012, 17:04. Просмотров 1032. Ответов 15
Метки нет (Все метки)

Дается 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
#include <iostream>
#include <cstring>
using namespace std;
 
int a[100];
 
void func(int *p, int n) {
     for (int i=0; i<n; i++)
         if (*(p+i)%2==1)
            cout << *(p+i) << ' ';
     for (int i=0; i<n; i++)
         if (*(p+i)%2==0)
            cout << *(p+i) << ' ';       
}
 
 
int main() {
    int n;
    cin >> n;
    for (int i=0; i<n; i++)
        cin >> a[i];
    func(&a[0],n);
    cout << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) (C++):

Вывести сначала все нечетные элементы массива, а затем - четные - C++
Дан целочисленный массив размера N. Вывести вначале все его нечетные элементы, а затем — четные.

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания - C++
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а...

Не нарушая порядка следования нужно расположить в начале массива все четные числа а затем нечетные - C++
Помогите пожалуйста с написанием программы. Не нарушая порядка следования нужно расположить в начале массива все четные числа а затем...

Cортировка в массиве: сначала все четные, а потом все нечетные числа - C++
Пользователь вводит элементы массива. Переставить в первую половину элементы, расположенные на четных позициях, а во вторую – на нечетных....

Сначала вывести все цифры строки, а затем все остальные литеры - C++
Помогите пожалуйста с заданием Задан текст, заканчивающийся точкой. Вывести на экран сначала все цифры, входящие в него, а затем все...

Сначала вывести все отрицательные числа, а затем все остальные - C++
написать последовательность операторов: дано 100 чисел..сначала вывести все отрицательные а затем все остальные я нереально путаюсь с...

15
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 17:07 #2
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
#include <iostream>
#include <cstring>
using namespace std;
 
int a[100];
 
void func(int *p, int n) {
     for (int i=0; i<n; i++)
         if ((*p+i)%2==1)
            cout << (*p+i) << ' ';
     for (int i=0; i<n; i++)
         if ((*p+i)%2==0)
            cout << (*p+i) << ' ';       
}
 
 
int main() {
    int n;
    cin >> n;
    for (int i=0; i<n; i++)
        cin >> a[i];
    func(&a[0],n);
    system("pause");
    cout << endl;
    return 0;
}
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 17:11 #3
У меня и в таком виде работает, но вообще в цикле надо равно 0 или не равно 0.
0
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 17:13 #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
#include <iostream>
#include <cstring>
using namespace std;
 const int k=100;
 
 
void func(int a[k], int n) {
     for (int i=0; i<n; i++)
         if ((a[i])%2==1)
            cout << a[i] << ' ';
     for (int i=0; i<n; i++)
         if ((a[i])%2==0)
            cout << a[i] << ' ';       
}
 
 
int main() {
    int a[k];
    int n;
    cin >> n;
    for (int i=0; i<n; i++)
        cin >> a[i];
    func(a,n);
    system("pause");
    cout << endl;
    return 0;
}
0
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:29  [ТС] #5
Суть задания в том что мы проходим указатели и я уже несколько раз пытался первый тест проходит а но втором запорывается( прост не хочу много раз закидывать а то рейтинг среди нашей группы упадет
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:32 #6
Цитата Сообщение от vasiliy21 Посмотреть сообщение
C++
1
         if ((*p+i)%2==1)
может все же *(p + i)
0
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:35  [ТС] #7
Цитата Сообщение от Thinker Посмотреть сообщение
может все же *(p + i)
неа((
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:38 #8
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
неа((

Не по теме:

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


а что касается вас, то такая проверка
C++
1
if (*(p+i)%2==1)
неправильна
0
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:39  [ТС] #9
я бы подумал что учительница не правильно задала что-то но у кого то уже получилось..
вот еще второе задание там нужно найти первый и второй нули и сложить числа между ними, тож указателями и тож на втором тесте у меня партачит(

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 <iostream>
using namespace std;
 
int a[100];
 
void func(int *p, int n) {
     int ch=0,a[2],sum=0,i;
     for (i=0; i<n; i++)
         if (ch==2) 
            break;
         if (*(p+i)==0) {
            ch++;
            a[ch]=i;
            }
     if (ch!=0) {
     for (i=a[2]+1; i<a[1]; i++)
         sum=sum+*(p+i);
     cout << sum << endl;
     }
     else
     cout << 0 << endl;
}
 
 
int main() {
    int n;
    cin >> n;
    for (int i=0; i<n; i++)
        cin >> a[i];
    func(&a[0],n);
    return 0;
}
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
01.11.2012, 17:40 #10
Вотъ правка к 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
#include <iostream>
#include <cstring>
using namespace std;
 
int a[100];
 
void func(int *p, int n) {
     for (int i=0; i<n; i++)
         if (*(p+i)%2==1)
            cout << *(p+i) << " ";
     cout<<endl;
     for (int i=0; i<n; i++)
         if (*(p+i)%2==0)
            cout << *(p+i) << ' ';
}
 
 
int main() {
    int n;
    cin >> n;
    for (int i=0; i<n; i++)
        cin >> a[i];
    func(a,n);
    cout << endl;
    system ("pause");
    return 0;
}
http://f2.s.qip.ru/12aR7inXV.jpg

Та же тема во втором.
C++
1
func(&a[0],n);
на
C++
1
func(a,n);
0
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:41  [ТС] #11
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

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


а что касается вас, то такая проверка
C++
1
if (*(p+i)%2==1)
неправильна
и чем же она неправильна??
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:46 #12
-1 % 2 = ???
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
01.11.2012, 17:48 #13
второе задание там нужно найти первый и второй нули и сложить числа между ними
Собственно, а Вы правильно порешали это задание ?
Можно пример ?
0
ТЕНЬ001
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 24
01.11.2012, 20:53 #14
С кодом беда, программа не должна считать ,если число не четырёхзначное.
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
#include <map>
#include <math.h>
#include <iostream.h>
#include <windows.h>
 
int main(int argc, char* argv[])
{
 SetConsoleOutputCP(1251);
 setlocale(0, "");
 
 int c,x,y,z,v;
 cout<<"Введите четырёхзначное число ===> ";
 cin>>x;
     if(x < 1000 || x>9999)
 
        cout << " Нельзя" << endl;
 c=x/1000;
 y=(x-(c*1000))/100;
 z=(x-((c*1000)+(y*100)))/10;
 v=x-((c*1000)+(y*100)+(z*10));
 
     int a[4]={c,y,z,v};
 
   std::map<int,int> counter;
 
   for(size_t i = 0; i < 4; i++)
   {
        counter[a[i]]++;
   }
 
   std::map<int,int>::iterator it = counter.begin();
   while( it != counter.end() )
   {
       std::cout << it->first << ":" << it->second << std::endl;
       it++;
       }
 
 
 Sleep(500000);
 
 return 0;
 }
0
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
04.11.2012, 17:37  [ТС] #15
Цитата Сообщение от ТЕНЬ001 Посмотреть сообщение
С кодом беда, программа не должна считать ,если число не четырёхзначное.
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
#include <map>
#include <math.h>
#include <iostream.h>
#include <windows.h>
 
int main(int argc, char* argv[])
{
 SetConsoleOutputCP(1251);
 setlocale(0, "");
 
 int c,x,y,z,v;
 cout<<"Введите четырёхзначное число ===> ";
 cin>>x;
     if(x < 1000 || x>9999)
 
        cout << " Нельзя" << endl;
 c=x/1000;
 y=(x-(c*1000))/100;
 z=(x-((c*1000)+(y*100)))/10;
 v=x-((c*1000)+(y*100)+(z*10));
 
     int a[4]={c,y,z,v};
 
   std::map<int,int> counter;
 
   for(size_t i = 0; i < 4; i++)
   {
        counter[a[i]]++;
   }
 
   std::map<int,int>::iterator it = counter.begin();
   while( it != counter.end() )
   {
       std::cout << it->first << ":" << it->second << std::endl;
       it++;
       }
 
 
 Sleep(500000);
 
 return 0;
 }
ты ваще не то пишешь мне уйди прочь)
0
04.11.2012, 17:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 17:37
Привет! Вот еще темы с ответами:

Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры - C++
написать программу на C++ нужно Задан текст, заканчивающийся точкой. Вывести на экран сначала все цифры, входящие в него, а затем все...

Даны 100 чисел. Напечатать сначала все отрицательные из них, а затем все остальные - C++
Даны 100 чисел. Напечатать сначала все отрицательные из них, а затем все остальные воооооооооть=)

Если цифра младшего разряда четная, то вывести все четные цифры числа, в противном случае – все нечетные - C++
Дано n-значное число longInt. Написать программу. Если цифра младшего разряда четная, то вывести все четные цифры числа, в противном...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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