Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2009, 00:59   #1
Gavrik
 
Регистрация: 20.02.2009
Сообщений: 3
Восклицание Помогите решить задачки по С++

Дан одномерный массив Mas.Окончание ввода элементов является 0.Если элемент массива чётный, то прибавить к нему первый, если нечётный-последний элемент.
# include <iostream.h>
# include <conio.h>
main ()
{
int mas[10]
Gavrik вне форума Ответить с цитированием
Старый 20.02.2009, 01:14   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А что не получается? Это элементарная задачка.
Вижу кусок кода. А где остальное?

Вот основной цикл. len - количество элементов массива.
Код:
for(i=0;i<len;i++)
 if(mas[i]%2==0) mas[i] += mas[0];
 else mas[i] += mas[len-1];
И используйте поиск. Эта задачка проскакивала здесь не один раз.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.02.2009, 12:41   #3
bura
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 15
По умолчанию

Несколько непонятное условие. Как понимаю, к значениям элементов должны прибавляться первоначальные значения первого и последнего элементов массива. Тогда нет смысла добавлять значение последнего элемента, раз он равен 0. Значит, при вводе 0 элемент, равный 0, не добавляется в массив.
Тогда примерно так надо делать:
Код:
# include <iostream.h>
# include <conio.h>
#define MAXSIZE 10
int main(int argc, char* argv[])
{int mas[MAXSIZE];
 int i, len;
 int first, last;

 clrscr();
 cout<<"Vvod elementov massiva"<<endl;
 len=0;
 do
 {cout<<"Element "<<len+1<<": ";
  cin>>mas[len];
  len++;
 }while ((mas[len-1]!=0) && (len<MAXSIZE));
 if (mas[len-1]==0)
   len--;
 cout<<"Massiv: "<<endl;
 for(i=0; i<len; i++)
  cout<<mas[i]<<" ";
 cout<<endl;
 first=mas[0];
 last=mas[len-1];
 for(i=0;i<len;i++)
  if (mas[i]%2==0)
    mas[i] += first;
  else
   mas[i] += last;
 cout<<"Massiv posle izmeneniya: "<<endl;
 for(i=0; i<len; i++)
  cout<<mas[i]<<" ";
 cout<<endl;
 getch();
 return 0;
}
Так понял эту задачу. Вполне возможно, что имелось в виду все-таки другое.
bura вне форума Ответить с цитированием
Старый 20.02.2009, 23:08   #4
Gavrik
 
Регистрация: 20.02.2009
Сообщений: 3
По умолчанию

Помоэму это так только вот чё то не пашит,выдаёт ошибку на строчку while(true),помогите пожалуйста разобраться да и с комментами
#include <iostream.h> // Подключение библиотеки "iostream.h"
#include <conio.h> // Подключение библиотеки "conio.h"

main() //подключение Функция "main"
{
int i, MAS[100], array_size; //размерность массива целого типа
int first_item, last_item;

for (i = 0; i < 100; i++)
MAS[i]=0;

cout << "Enter array items (max 100, min 2 items)\n(0 - end input)\n";

i=0;
while (true)
{
cout << "Item " << i+1 << ": ";
cin >> MAS[i];
if (MAS[i] == 0) break;
i++;
}

array_size = i;

first_item = MAS[0];
last_item = MAS[array_size-1];
cout << "Ok. Array has been entering." << endl; // сообщение об окончание ввода
<< "Array size: " << array_size << " items" << endl; // Выводим сообщение о количестве элементов в веденном массиве
<< "First array item is: " << first_item << endl; // Выводим значение первого элемента массива
<< "Last array item is: " << last_item << endl; // Выводим значение последнего элемента введенного массива

cout << "---------------------------------------" << endl // выводим шабку таблици
<< "| N | MAS_before_mod | MAS_after_mod |" << endl;
<< "---------------------------------------" << endl;
for (i=0; i < array_size; i++) // начало цикла по всем элементам массива
{
cout << "|" << i + 1 << "|"; // в первыю колонку выводим номер элемента массива
cout << MAS[i] << "|"; // выводим значение i-го элемента массива до изменения его значения
if ((MAS[i] % 2) > 0) // проверяем i-ый элемент массива на четность, если имеется остаток от деления на 2 (нечетный)
MAS[i] = MAS[i] + last_item; // то прибавляем значение последнего элемента массива
else
MAS[i] = MAS[i] + first_item; // если разделилось без остатка (четный), то прибаляем первый элемент масссива
cout << MAS[i] << "|" << endl; // выводим в последнюю колонку измененное значение i-го элемента массива
}
cout << "---------------------------------------" << endl; // вывводим конец таблицы

getch; // задержка экрана
} //конец программы
Gavrik вне форума Ответить с цитированием
Старый 20.02.2009, 23:23   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Gavrik
выдаёт ошибку на строчку while(true)
Какой компилятор?
Если Borland C 3.1, то он, как мне известно, не знает что такое true и false (как и самого типа bool).
Замените на
Код:
while(1)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.02.2009, 23:40   #6
Gavrik
 
Регистрация: 20.02.2009
Сообщений: 3
По умолчанию

Помогите пожалуйста с комментариями к каждой строчке.
Gavrik вне форума Ответить с цитированием
Старый 20.02.2009, 23:49   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Gavrik
Помогите пожалуйста с комментариями к каждой строчке.
А вам мало комментариев? Там и так все подробно расписано. Почти для каждой строчки.

Хотя имхо довольно громоздко. Но подозреваю, что это сделано специально, для наглядности.

-------------
Закомментировал код bura
Уж если даже так будет непонятно....

Код:
# include <iostream.h>
# include <conio.h>
#define MAXSIZE 10 
int main(int argc, char* argv[])
{
 int mas[MAXSIZE];  //объявляем массив из MAXSIZE (10) элементов
 int i, len;
 int first, last;    //будут хранить соответсвтенно первый и последний элемент

 clrscr();        //чистим экран. Данная функция присутствует только в компиляторах от Borland
 cout<<"Vvod elementov massiva"<<endl;     //выводим сообщение
 len=0;      //изначально количетсво элементов = 0
 do          //запускаем цикл
 {
  cout<<"Element "<<len+1<<": "; //предлагаем ввести элемент
  cin>>mas[len];        //вводим элемент
  len++;                //теперь элементов на 1 больше
 }while ((mas[len-1]!=0) && (len<MAXSIZE)); /*продолжаем, пока не встретим ноль
            или не упремся в границу массива */
 if (mas[len-1]==0)      //если последний элемент = 0
   len--;                     //то уменьшаем количество элементов, тем самым вычеркивая этот ноль
 cout<<"Massiv: "<<endl;  //теперь выведем массив
 for(i=0; i<len; i++)    
  cout<<mas[i]<<" ";
 cout<<endl; 
 first=mas[0];   //first = первый элемент
 last=mas[len-1];  //last = последний элемент
 for(i=0;i<len;i++)   //проходим по элементам массива
  if (mas[i]%2==0)   //если текущий элемент четный
    mas[i] += first;    //то плюсуем к нему первый элемент
  else            //если нечетный
   mas[i] += last;  //то плюсуем последний
 cout<<"Massiv posle izmeneniya: "<<endl;    //выводим получившийся массив
 for(i=0; i<len; i++)
  cout<<mas[i]<<" ";
 cout<<endl;
 getch();     //ждем нажатия на клавишу
 return 0;    //завершаем программу
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 21.02.2009 в 00:04. Причина: добавил
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить 3 задачки... Goldberg Паскаль, Turbo Pascal, PascalABC.NET 8 08.11.2008 16:36
Помогите решить 2 задачки на С++ KnDmPetr Фриланс 3 11.03.2008 00:15