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

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

Восстановить пароль Регистрация
 
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:04     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #1
Дается 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 17:04     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку)
Посмотрите здесь:

дано 100 чисел, сначала вывести все отрицательные а затем все остальные C++
Даны 100 чисел. Напечатать сначала все отрицательные из них, а затем все остальные C++
Вывести сначала все нечетные элементы массива, а затем - четные C++
C++ сортировка что бы в массиве сначала были все четные а потом все нечетные числа
Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 17:07     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #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;
}
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
01.11.2012, 17:11     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #3
У меня и в таком виде работает, но вообще в цикле надо равно 0 или не равно 0.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 17:13     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #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;
}
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:29  [ТС]     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #5
Суть задания в том что мы проходим указатели и я уже несколько раз пытался первый тест проходит а но втором запорывается( прост не хочу много раз закидывать а то рейтинг среди нашей группы упадет
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:32     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #6
Цитата Сообщение от vasiliy21 Посмотреть сообщение
C++
1
         if ((*p+i)%2==1)
может все же *(p + i)
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:35  [ТС]     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #7
Цитата Сообщение от Thinker Посмотреть сообщение
может все же *(p + i)
неа((
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:38     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #8
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
неа((

Не по теме:

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


а что касается вас, то такая проверка
C++
1
if (*(p+i)%2==1)
неправильна
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:39  [ТС]     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #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;
}
ШКІПЕР
 Аватар для ШКІПЕР
93 / 93 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
01.11.2012, 17:40     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #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);
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:41  [ТС]     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #11
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

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


а что касается вас, то такая проверка
C++
1
if (*(p+i)%2==1)
неправильна
и чем же она неправильна??
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:46     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #12
-1 % 2 = ???
ШКІПЕР
 Аватар для ШКІПЕР
93 / 93 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
01.11.2012, 17:48     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #13
второе задание там нужно найти первый и второй нули и сложить числа между ними
Собственно, а Вы правильно порешали это задание ?
Можно пример ?
ТЕНЬ001
 Аватар для ТЕНЬ001
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 24
01.11.2012, 20:53     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #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;
 }
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
04.11.2012, 17:37  [ТС]     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #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;
 }
ты ваще не то пишешь мне уйди прочь)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 18:45     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку)
Еще ссылки по теме:

C++ Не нарушая порядка следования нужно расположить в начале массива все четные числа а затем нечетные
C++ Сначала вывести все цифры строки, а затем все остальные литеры
Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания C++

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

Или воспользуйтесь поиском по форуму:
ТЕНЬ001
 Аватар для ТЕНЬ001
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 24
04.11.2012, 18:45     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку) #16
Давно исправил и забыл о проблеме
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
#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) // Если введенное число меньше 10.
        cout << "Это число не четырёх знайное." << endl;
 
      else {
  // Работа
 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;
 }
Я сладостью удалил бы свой вопрос здесь.

Добавлено через 8 минут
Я с радостью удалил бы свой вопрос здесь.
Yandex
Объявления
04.11.2012, 18:45     Дается n чисел, нужно вывести сначала все нечетные а затем все четные (найти ошибку)
Ответ Создать тему
Опции темы

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