Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с задачкой 
V
    Опции темы
capitas
Дата 19.11.2011, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



условие таково: задан массив, сформируйте два массива: в первый включите элементы исходного массива с четными номерами, а во второй с нечетными.

как бы алгоритм я понял (если не понял поправьте пожалуйста):
допустим есть массив a[20] нам надо сделать из него два такого вида: b[] (в который будут входить следующие элементы: a[2], a[4], a[6], a[8] и т.д.) и c[] (в который будут входить элементы a[1], a[3], a[5] и т.д.).  теперь как все это осуществить в коде.. имеются наброски, но даже стыдно выставлять).. что то типа

for (i=0;i<=20;i=i+2)

или как то так:

a[i+2]

вообщем я запутался окончательно. помогите пожалуйста/


задачу необходимо решить используя одномерные массивы*

Это сообщение отредактировал(а) capitas - 19.11.2011, 08:50
PM MAIL   Вверх
FANATID
Дата 19.11.2011, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Просто нужно индекс массива A перевести в индексы B и C.
В случае с четными номерами, просто разделим на 2.
В случае с нечетными нужно дополнительно вычесть единицу и опять же поделить на 2.

for (int i = 0; i < 20; ++i)
    if (i%2 == 0)
        b[i/2] = a[i];
    else
        c[(i-1)/2] = a[i];
PM WWW ICQ   Вверх
capitas
Дата 19.11.2011, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



вот что получилось: 

Код

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main(void)
{ int i;
int a[20];
int b[10];
int c[10];
for (int i = 0; i < 20; ++i)
if (i%2 == 0)
b[i/2] = a[i];
else
c[(i-1)/2] = a[i];

getch();
}



как теперь заставить программу наглядно показать что она действиетельно сделала то что должна была. пробовал 

Код

printf ("%d , %d, %d", a[i], b[i/2], c[(i-1)/2]);


но получается какая то чушь..
PM MAIL   Вверх
borisbn
Дата 19.11.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(capitas @  19.11.2011,  09:39 Найти цитируемый пост)
пробовал 

где пробовал ? в каком месте программы ?
<Телепатия>
Код

for (int i = 0; i < 20; ++i)
if (i%2 == 0)
b[i/2] = a[i];
else
c[(i-1)/2] = a[i];
printf ("%d , %d, %d", a[i], b[i/2], c[(i-1)/2]);

если так, то printf не входит в цикл for, а переменная i после цикла равна 20. вот и выводится чушь.
а теперь смотри, как выглядела бы твоя программа при нормальном форматировании
Код

for (int i = 0; i < 20; ++i)
{
    if (i%2 == 0)
    {
        b[i/2] = a[i];
    }
    else
    {
        c[(i-1)/2] = a[i];
    }
}
printf ("%d , %d, %d", a[i], b[i/2], c[(i-1)/2]);

сразу !!! видна ошибка.
</Телепатия>


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
capitas
Дата 19.11.2011, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



с телепатией рассмешили))

верно, совсем забыл про скобки внутри цикла. я что то подумал что если по одному оператору внутри if и else то не нужны фигурные скобки, и мне показалось это достаточным судя по всему)


но тем не менее.. вот что у меня получается 
user posted image

с таким кодом:
Код

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main(void)
{
int i;
int a[20];
int b[10];
int c[10];
for (int i = 0; i < 20; ++i){
   if (i%2 == 0)
   {
     b[i/2] = a[i];
   }
else
   {
   c[(i-1)/2] = a[i];
   }
 printf ("%d , %d, %d", a[i], b[i/2], c[(i-1)/2]);
 }
getch();
}




проблема еще в том что я уже просто не знаю что у меня должна получится то в итоге. ну то есть как вообще должна выглядеть эта программа в работе.
PM MAIL   Вверх
borisbn
Дата 19.11.2011, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Массив а ничем не проинициализирован. В нём мусор, который ты и видишь. Вставь эту строчку в самое начало тела цикла
a[ i ] = i;


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
capitas
Дата 19.11.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



borisbn, как ваша помощь неоценима.

помогло, для пущей наглядности сделал так, а то в строчку было как то не очень:

user posted image

есть какие то ошибки, но я думаю это не так важно. другое дело с кол-вом элементов массива в и с. значит ли данный скрин что в массивах в и с по 20 элементов? то есть как бы 10 повторяющихся дважды и чередующимися друг за другом как челнок?
PM MAIL   Вверх
borisbn
Дата 20.11.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(capitas @  19.11.2011,  15:55 Найти цитируемый пост)
есть какие то ошибки, но я думаю это не так важно

с таким подходом программировать качественно не научишься...
по теме: да. элементов в b и c 10, а распечатываешь ты их 20 раз. ( for (int i = 0; i < 20... ).
Распечатывать a можно и в этом цикле, а для b и c создать новый.
Код

//#include <iostream.h> <----- 1) за такое руки оторвать. 2) просто не нужен
#include <stdio.h>
#include <conio.h>
//#include <math.h> <----- не нужен
//void main(void) <----- main должен возвращать int. c void будет работать только в VC
int main(void)
{
    //int i; <----- не нужно
    int a[20];
    int b[10];
    int c[10];
    for ( int i = 0; i < 20; ++i )
    {
        a[ i ] = i;
        if ( i % 2 == 0 )
        {
            b[ i / 2 ] = a[ i ];
        }
        else
        {
            //c[ ( i - 1 ) / 2 ] = a[ i ];
            c[ i / 2 ] = a[ i ]; // можно воспользоваться тем, что
                                 // при целочисленном (!!) делении нечётного числа на 2 будет то же самое, что и чётного минус 1
        }
         printf( "%d ", a[ i ] );
    }
    printf( "\n" );
    for ( int i = 0; i < 10; ++i )
    {
         printf( "%d ", b[ i ] );
    }
    printf( "\n" );
    for ( int i = 0; i < 10; ++i )
    {
         printf( "%d ", c[ i ] );
    }
    printf( "\n" );
    getch();
}

http://liveworkspace.org/code/0d42b0220076...c07aa2bc5fbad66
Цитата

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
0 2 4 6 8 10 12 14 16 18 
1 3 5 7 9 11 13 15 17 19 



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
capitas
Дата 20.11.2011, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



Спасибо огромное!) как всегда именно тут я получаю самую стоящую помощь. очень помогли!

псы: мне не столько научиться програмировать надо сколько просто сдать экзамен) я уже понял что программист из меня как балерина из сантехника. надеюсь больше не потревожу вас и форум своими доставучими распросами.

Это сообщение отредактировал(а) capitas - 20.11.2011, 10:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.