Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
1

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

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

Author24 — интернет-сервис помощи студентам
Дается 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2012, 17:04
Ответы с готовыми решениями:

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

Вывести сначала все четные элементы массива, затем - нечетные
Дан массив а из n чисел.Требуется сначала вывести все четные элементы, затем — нечетные. помогите...

Вывести сначала все чётные, а затем все нечётные буквы слова. Пропустить буквы «п», «и» и «о»
Здравствуйте. Помогите написать программу в Питон. Спрашивает у пользователя слово (в кириллице)....

Разместить сначала все чётные символы строки, а затем - все нечётные в обратном порядке
Ребятушки,дорогие мои,вы нераз выручали меня.Помогите и сейчас! Препод не принимает у меня дз изза...

15
27 / 27 / 9
Регистрация: 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
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 17:11 3
У меня и в таком виде работает, но вообще в цикле надо равно 0 или не равно 0.
0
27 / 27 / 9
Регистрация: 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
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:29  [ТС] 5
Суть задания в том что мы проходим указатели и я уже несколько раз пытался первый тест проходит а но втором запорывается( прост не хочу много раз закидывать а то рейтинг среди нашей группы упадет
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:32 6
Цитата Сообщение от vasiliy21 Посмотреть сообщение
C++
1
         if ((*p+i)%2==1)
может все же *(p + i)
0
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:35  [ТС] 7
Цитата Сообщение от Thinker Посмотреть сообщение
может все же *(p + i)
неа((
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:38 8
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
неа((

Не по теме:

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


а что касается вас, то такая проверка
C++
1
if (*(p+i)%2==1)
неправильна
0
-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
99 / 99 / 22
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
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
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
01.11.2012, 17:41  [ТС] 11
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

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


а что касается вас, то такая проверка
C++
1
if (*(p+i)%2==1)
неправильна
и чем же она неправильна??
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.11.2012, 17:46 12
-1 % 2 = ???
0
99 / 99 / 22
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
01.11.2012, 17:48 13
второе задание там нужно найти первый и второй нули и сложить числа между ними
Собственно, а Вы правильно порешали это задание ?
Можно пример ?
0
1 / 1 / 0
Регистрация: 01.11.2012
Сообщений: 32
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
-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
1 / 1 / 0
Регистрация: 01.11.2012
Сообщений: 32
04.11.2012, 18:45 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 минут
Я с радостью удалил бы свой вопрос здесь.
0
04.11.2012, 18:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2012, 18:45
Помогаю со студенческими работами здесь

Переписать в файл G сначала все нечѐтные его символы, а затем все чѐтные в обратном порядке
Всем привет! Просьба помочь с решением задачи. Я в паскале не сильна ну совсем, поэтому не...

Сформировать массив Y, в который поместить сначала все четные, а затем все нечетные элементы массива Х
Пользователь вводит размер n динамического массива Х, а затем заполняет его целыми числами....

Преобразовать слово P так, чтобы сначала шли все чётные цифры (0 и 2), а затем – все нечётные
3. A={0,1,2,3}. Преобразовать слово P так, чтобы сначала шли все чётные цифры (0 и 2), а затем –...

Переписать в файл G сначала все нечётные его символы, а затем все чётные в обратном порядке
Добрый день. Нужна ваша помощь. Дан символьный файл F. Переписать в файл G сначала все нечётные...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru