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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 20:02   #1
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию

Задание: В одномерном массиве размерностью n найти минимальный элемент, сумму элементов между первым и последним положительным элементом и упорядочить массив, так чтобы первые стояли элементы равные 0 а затем все остальные.
Мой код
Код:
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
	const int n=10;
	double a[n], sum;
	int i, imin, ibek, iend,k;

	for (i=0; i<n; i++) cin >> a[i]; //вводим элементы массива
	for (i=imin=0; i<n; i++) {
		if (a[i]<a[imin]) imin=i; //поиск минимального
	}
	sum=0;

		for (i=n; i>=0; i--) {
		if (a[i]>0) ibek=i; //находим номер первого положительного элемента
	}
	for (i=0; i<n; i++) {
		if (a[i]>0) iend=i; //находим номер последнего положительного элемента
	}
	for (i=ibek+1; i<iend-1; i++) {
		sum+=a[i]; //находим сумму между первым и последним положительным элементом
	}
	cout << a[imin] << sum << endl;
	// pereobraz mas
// pereobraz mas
double b;
k=0;
for(i=0;i<n;i++)
if (fabs(a[i])<=0) 
{ b=a[i];

for(int j=i;j>0;j--)
a[j]=a[j-1];

a[k]=b; k++;
}
for ( i=0;i<n;i++)
cout<<a[i]<<" ";
	  system ("PAUSE");
	  return 0;
}
Входные данные
8 -4 3 0 -7 4 2 5 0 1

Я получаю

-7 4
0 0 10 8 -4 3 -7 4 2 5
А должно быть

-7.000000 3.000000
0.00 0.00 8.00 -4.00 3.00 -7.00 4.00 2.00 5.00 1.00

Подскажите где я ошибаюсь?

From Stilet: Пост поправил.

Последний раз редактировалось Stilet; 10.11.2012 в 20:23.
Tatyana64 вне форума Ответить с цитированием
Старый 10.11.2012, 20:24   #2
bumer7721
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 58
По умолчанию

Код:
	for (i=0; i<n; i++) {
		if (a[i]>0) ibek=i; //находим номер первого положительного элемента
	}
	for (i=n-1; i>=0; i--) {
		if (a[i]>0) iend=i; //находим номер последнего положительного элемента
	}
	for (i=ibek+1; i<iend-1; i++) {
		sum+=a[i]; //находим сумму между первым и последним положительным элементом
	}

double b;
for(i=0;i<n;i++)
    if (a[i]==0) 
    { 
        b=a[i];

        for(int j=i;j<0;j--)
             a[j]=a[j-1];

        a[0]=b;
}
Вот так

Последний раз редактировалось bumer7721; 10.11.2012 в 20:31.
bumer7721 вне форума Ответить с цитированием
Старый 10.11.2012, 20:56   #3
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Что-то не так

У меня вообще неправильный ответ
Tatyana64 вне форума Ответить с цитированием
Старый 10.11.2012, 21:02   #4
bumer7721
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 58
По умолчанию

а кокой теперь ответ?
bumer7721 вне форума Ответить с цитированием
Старый 10.11.2012, 21:32   #5
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию вот такой

-7 4
0 8 -4 3 0 -7 4 2 5 0
а должно быть
-7.000000 3.000000
0.00 0.00 8.00 -4.00 3.00 -7.00 4.00 2.00 5.00 1.00
Tatyana64 вне форума Ответить с цитированием
Старый 10.11.2012, 21:58   #6
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Спасибо работает НО!

Спасибо, работает, виновата сама не так организовала ввод данных.
Код:
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
	int n;
	cin >>n;
	int i, ineg, imin, ibek, iend,k;
	double sum,*a=new double [n];
	for (i=0; i<n; i++) cin >> a[i]; //вводим элементы массива
	for (i=imin=0; i<n; i++) {
		if (a[i]<a[imin]) imin=i; //поиск минимального
	}
	sum=0;

		for (i=n; i>=0; i--) {
		if (a[i]>0) ibek=i; //находим номер первого положительного элемента
	}
	for (i=0; i<n; i++) {
		if (a[i]>0) iend=i; //находим номер последнего положительного элемента
	}
	for (i=ibek+1; i<iend-1; i++) {
		sum+=a[i]; //находим сумму между первым и последним положительным элементом
	}

	cout << a[imin] << sum << endl;
// pereobraz mas
double b;
k=0;
for(i=0;i<n;i++)
if (fabs(a[i])<=0) 
{ b=a[i];

for(int j=i;j>0;j--)
a[j]=a[j-1];

a[k]=b; k++;
}
for ( i=0;i<n;i++)
cout<<a[i]<<" ";
	  system ("PAUSE");
	  return 0;
}
Но подскажите как организовать вывод ответов в нужной форме так чтобы были с нулями
Я получаю

-7 3
0 0 8 -4 3 -7 4 2 5 1

А должно быть

-7.000000 3.000000
0.00 0.00 8.00 -4.00 3.00 -7.00 4.00 2.00 5.00 1.00
Tatyana64 вне форума Ответить с цитированием
Старый 10.11.2012, 22:43   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
cout.setprecision(2);
Если не ошибаюсь дадут вывод с двумя нулями.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2012, 23:04   #8
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию Спасибо

Все получилось. Ошибка в том что не прописала одну библиотеку
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
Ну и морока этот с++
Tatyana64 вне форума Ответить с цитированием
Старый 11.11.2012, 00:09   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ну и морока этот с++
Просто не привыкла )
Тяжело в учении, легко... где? Правильно - в армии на тумбочке )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильный синтаксис dieego6@gmail.com C# (си шарп) 5 03.10.2012 18:59
Неправильный адрес переменной Lotles Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 22.04.2012 19:46
Неправильный рандом Тандер Microsoft Office Word 5 14.02.2012 15:17
проверка на неправильный ввод a.n.o.n.i.m Общие вопросы C/C++ 5 23.10.2011 09:57
неправильный запрос? dedyshka PHP 8 17.11.2009 20:27