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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 10:58   #1
Eliviel
Новичок
Джуниор
 
Регистрация: 26.12.2010
Сообщений: 2
По умолчанию C++.Доработать 2 программы

В одномерном массиве, состоящем из n вещественных элементов, вычислить: количество отрицательных элементов массива; сумму модулей элементов массива, расположенных после минимального по модулю элемента.
Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
Код:
#include<iostream>
#include<math.h>
	using namespace std;
	void main ()
{	const int n=6;
	int i,j,s,min,bufer,k,a[6]={-1,-2,2,3,2,1};
	min=abs(a[0]);
	for(i=1;i<n;i++)
           {
             if(min>abs(a[i])){min=abs(a[i]);j=i;} 
           }
	for(i=j+1;i<n;i++)
           {s=s+a[i];}
	cout<<"Сумма модулей элементов массива, расположенных после минимального по модулю элемента - "<<s;
	for(i=0;i<n;i++){if(a[i]<0){k++;a[i]=(a[i])*(a[i]);}}
	cout<<"Количество отрицательных элементов"<<k;
	for(i=0;i<n;i++)
           {
           if (a[i]>a[i+1]){bufer=a[i];a[i]=a[i+1];a[i+1]=bufer;}
           }
	cout<<"          ";
	for(i=0;i<n;i++){cout<<a[i];}
}
Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.
Код:
#include<iostream>
#include <stdio.h>
#include <conio.h>
	using namespace std;
	void sort (int a[][],int n,int m)
{	int x;
	for(int i=0;i<n;i++)
	{
             for (int j=0;j<m;j++)
                  {
                    for(int l=i;l<n-1;l++)
	              {
                            for (int p=j;p<m-1;p++)
                                 {
                                   if (a[i][j]<a[l][p]){x=a[i][j];a[i][j]=a[l][p];a[l][p]=x;}
                                 }
                          }
                    }
              }
}
	void main ()
{	setlocale (LC_ALL,".1251");
	const int m=2,n=3;
	int i,kol,x,p,l,j,k,a[3][2]={-1,-2,2,3,2,1};
	for(i=0;i<n;i++){for(j=0;j<m;j++){cout<<a[i][j]<<" ";}}
	for(j=0;j<n;j++){for(i=0;i<m;i++)
	{if (a[i][j]>=0){k=j;}
	}}cout<<"Номер первого столбца, не содержащего ни одного отрицательного элемента - "<<k<<endl;
	sort(a,i,j,m,n);
	for(i=0;i<n;i++){for(j=0;j<m;j++){cout<<a[i][j]<<" ";}cout<<endl;}
}
В них ошибок вроде как нет, но программа не хочет работать((Помогите пожалуйста!!!

Последний раз редактировалось Eliviel; 26.12.2010 в 12:25.
Eliviel вне форума Ответить с цитированием
Старый 26.12.2010, 11:43   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Eliviel
форматируйте нормально код, никто не захочет разбираться в этом:
Код:
{if (a[i][j]<a[l][p]){x=a[i][j];a[i][j]=a[l][p];a[l][p]=x;}}}}}
rrrFer вне форума Ответить с цитированием
Старый 26.12.2010, 11:49   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
for(j=0;j<n;j++){for(i=0;i<m;i++)
	{if (a[i][j]>=0){k=j;}
	}}cout<<"Номер первого столбца, не содержащего ни одного отрицательного элемента - "<<k<<endl;
когда выводите k - то у вас оно хранит номер последнего столбца, содержащего хоть 1 положительный элемент(вы забыли break
остальное читать не стал, т.к. считать фигурные скобочки мне лень.
rrrFer вне форума Ответить с цитированием
Старый 26.12.2010, 11:54   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
void sort (int a[][],int n,int m,int i,int j)
...
for(int i=0;i<n;i++)
	{for (int j=0;j<m;j++){for(int l=i;l<n-1;l++)
то-есть внутри циклов у вас исользуются не те i и j что были переданы как параметры, а те, область видимости которых ограничена циклом - так и задумано? -если да - то зачем вообще передавать значения в функцию, ведь те i и j что были переданы ниразу не использовались.
rrrFer вне форума Ответить с цитированием
Старый 26.12.2010, 12:25   #5
Eliviel
Новичок
Джуниор
 
Регистрация: 26.12.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Код:
void sort (int a[][],int n,int m,int i,int j)
...
for(int i=0;i<n;i++)
	{for (int j=0;j<m;j++){for(int l=i;l<n-1;l++)
то-есть внутри циклов у вас исользуются не те i и j что были переданы как параметры, а те, область видимости которых ограничена циклом - так и задумано? -если да - то зачем вообще передавать значения в функцию, ведь те i и j что были переданы ниразу не использовались.

Пардон, невнимательна)

Первая программа при отладке выдает Run-Time Check Failure #3 - The variable 's' is being used without being initialized. Что делать?

Последний раз редактировалось Eliviel; 26.12.2010 в 19:13.
Eliviel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу доработать dagggggger Паскаль, Turbo Pascal, PascalABC.NET 8 17.12.2010 22:25
Доработать движок jcsystem Фриланс 3 12.07.2010 13:58
Доработать программу drama2rg Помощь студентам 2 29.03.2010 19:22
Доработать код Микки Microsoft Office Excel 7 31.03.2009 13:12
доработать кусочек программы Алёна Помощь студентам 1 21.05.2007 13:07