Одномерные и двумерные массивы

  • Автор темы m1pk0
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

m1pk0

Гость
#1
Привет всем, мне нужна помощь в оформлении программ... Ну и проверить правильность написания программ...
Так вот, имеется 2 задачи!
Первая:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) максимальный элемент массива;
2) сумму элементов массива, расположенных до последнего положительного элемента.
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
Вторая:
Дана целочисленная квадратная матрица. Определить:
1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
2) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Код и 1-ой и 2-ой задач имеется!
Первая задача, первый вариант:

[codebox]#include <iostream.h>
#include <math.h>
int mas[10],n,max,number;
main(void)
{
cout<<"Vvedite kol-vo elementov v massive"<<endl;
cin>>n;
cout<<"vvedite element massiva"<<endl;
for(int i=0;i<n;i++)
cin>>mas;
max=mas[0];
number=0;
{
if(fabs(mas)>fabs(max))
{
max=mas;
number=i;
}
}
cout<<"nomer maximalnyh elementov = "<<i+1<<endl;
return 0;
}[/codebox]
Первая задача, второй вариант:
[codebox]#include <iostream.h>
int mas[10],n,max,number;
main(void)
{
cout<<"Vvedite kol-vo elementov v massive"<<endl;
cin>>n;
cout<<"vvedite element massiva"<<endl;
for(int i=0;i<n;i++)
cin>>mas;
max=mas[0];
number=0;
{
if(mas>max)
{
max=mas;
number=i;
}
}
cout<<"nomer maximalnyh elementov = "<<i+1<<endl;
return 0;
}[/codebox]
Вторая задача:
[codebox]#include <stdio.h>
#include <math.h>
#define N 3

main()
{
int A[N][N];
int i, j, z, sum, min;

for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
scanf("%d",&A[j]);

for (j = 0; j < N; j++)
{
sum = 0;
for (i = 0; i < N; i++)
{
if(A[j] >= 0 )
sum += A[j];
else
break;
}
if ( i == N) printf("Column %d Sum = %d\n",j,sum);
}
sum = 0;

for(j = N-2; j > 0; j--,sum = 0)
{
for(i = N-1,z = j; z < N; i--,z++)
sum += abs(A[z]);
if ( j == N-2)
min = sum;
else if (sum < min)
min = sum;
}

for(j = N-2; j > 0 ; j--,sum = 0)
{
for(i = 0,z = j; z >= 0; i++,z--)
sum += abs(A[z]);
if ( j == N-2)
min = sum;
else if (sum < min)
min = sum;
}
printf("Minimum Sum = %d",min);

return 0;
} [/codebox]

По моему в программах чего-то не хватает (проверьте кому не трудно ;) ), хотя они работают...
Скажите какие цифры нужно вводить в программы (я не совсем понял какие - вводил, но не понял...)
И ещё мне нужно оформить алгоритм решения! У меня есть алгоритм решения - он похож на алгоритм первой задачи, но это не то:
1. Начало
2. Объявление N, k, C,A,B, j, i, nSumm, iMax
3. Ввод N
4. Объявление одномерного массива ar размером N
5. i = 0
6. Если i >= N то 9
7. ar = RND(-20,20), Вывод ar
8. i = i +1 и 6
9. iMax = 0, i = 1
10. Если i >= N то 13
11. Если ar > ar[iMax] то iMax = i
12. i = i + 1 и 10
13. Вывод позиции iMax, значения AR[iMax]
14. i = N - 1, nSumm = 0,
15. Если i < 0 то 22
16. Если ar>0 то j=i , nSumm = 0
17. k = 0
18. Если k >= N то 22
19. nSumm = nSumm + ar[k]
20. k++ 18
21. i-- 14
22. Вывод суммы элементов до последнего положительного.
23. Объявление одномерного массива ar2 размером N
24. i=0, j= 0
25. Если i >= N то 29
26. Если abs( ar )>=A && abs( ar ) <=B, то j++ и ar2[j] = ar 25
27. i ++ 25
28. Вывод ar2[j]
29. i = j + 1
30. Если i >= N то 34
31. ar2 = C
32. Вывод ar2
33. i++ 30
34. Конец

Нужно графически оформить алгоритм в MS WORD, я сам все оформлю, помогите просто пошагово составить алгоритм первой и второй задач...
Заранее спасибо тем кто поможет! :rolleyes:
P.S. Тема отображается кривовато из за кодов программ - поэтому я прикрепил *.cpp файлы...
 

Вложения

  • 373 байт Просмотры: 18
  • 340 байт Просмотры: 15
  • 963 байт Просмотры: 13
M

m1pk0

Гость
#2
Изменил алгоритм решения первой задачи:
1. Начало
2. Объявление n, max, number
3. Ввод N
4. Объявление одномерного массива
5. i < N
6. i = i + 1
7. number = 0,
8. i++
9. Вывод суммы элементов до последнего положительного.
10. Объявление одномерного массива
11. i=0
12. i < N
13. mas > max, max = mas, number = i
14. i ++
15. Вывод i + 1
16. Конец

И создал наброски второго алгоритма:
1. Начало
2. Объявление A[N][N], i, j, z, sum, min
3. Ввод N
4. i = 0, i < N, i++
5. j = 0, j < N, j++
6. sum = 0
7. Если A[j] >= 0 то sum += A[j] иначе сброс

… Вывод sum
… Конец


Вторая программа сложновата для меня... :rolleyes:
 
M

m1pk0

Гость
#3
Народ, пожалуйста, помогите! Тут ничего сверх-трудного нет... Всё почти сделано... Мне просто нужны ваши варианты...
 
D

Dimmuborgir

Гость
#4
С паскаля на Си перешел?)
[codebox]void main()
{
int size;
cout<<"Enter the size:";
cin>>size;
if (size<=0)
return;

double *x=new double[size];

for (int i=0;i<size;i++)
{
cout<<"x["<<i<<"]=";
cin>>x;
}

double max=x[0];
for (i=1;i<size;i++)
if (x>max) max=x;

double sum=0;
for (i=0;i<size;i++)
if (x>0)
sum+=x;
else
break;

double a,b;
cout<<"Enter interval:\na=";
cin>>a;
cout<<"b=";
cin>>b;

/* cout<<"array:\n";
for (i=0;i<size;i++)
cout<<x<<' ';*/

for (i=0;i<size;i++)
if (fabs(x)>=a && fabs(x)<=:)
{
x=0;
double tmp;
for (int j=i;j<size-1;j++)
{
tmp=x[j+1];
x[j+1]=x[j];
x[j]=tmp;
}
}


/*cout<<"max:"<<max<<'\n'<<"sum:"<<sum<<'\n'<<"compressed array:\n";
for (i=0;i<size;i++)
cout<<x<<' ';*/

delete [] x;
getch();
}[/codebox]
 
M

m1pk0

Гость
#5
Пошёл учиться на программиста, ранее действительно работал с Паскалем) Спасибо, это 2-ая программа? Сложновато будет в ней разобраться)
Правильный код первой программы:
[codebox]#include <iostream.h>
int mas[10],n,max,number;
void main ()
{
cout<<"Vvedite kol-vo elementov v massive"<<endl;
cin>>n;
cout<<"vvedite element massiva"<<endl;
for(int i=0;i<n;i++)
cin>>mas;
max=mas[0];
number=0;
for(int i=0;i<n;i++)
if(mas>max)
{
max=mas;
number=i; // максимальный элемент
}
cout<<"nomer maximalnyh elementov = "<<number<<endl;
}
[/codebox]


Кстати твой код не полный, и по моему getch(); там лишний...
 
D

Dimmuborgir

Гость
#6
код был к первому заданию. писал я его в Visual C++ 6 поэтому getch() не лишний)
 
M

m1pk0

Гость
#7
Жестокий код) Не для начинающих) А со второй программой можешь помочь? Или там все и так правильно?
 
M

m1pk0

Гость
#8
Народ, помогите! крайний срок сдачи первой задачи - среда... Помогите доделать до конца... Чтоб выполнялись все три условия! Оч прошу...
 
D

Dimmuborgir

Гость
#9
я ж выложил код к первой задаче, ко второй еще надо чтоли?
 
M

m1pk0

Гость
#10
То, что ты выложил, это только часть задачи! Или часть кода задачи... Или Потому что Потому-что она запрашивает ввести значения и вылетает... Мой вариант второй задачи правильный? Проверь пожалуйста! (она вроде нормально работает...) Если все ок, тогда мне больше ничего не нужно...
 
B

BoSSea

Гость
#11
Дан массив из н элементов , создать программу которая выводит на экран все одинаковые элементы.
Помогите где ошибка ? ... спс заранее

C++:
#include<stdio.h>
#include<conio.h>
void main()
{ clrscr(); int a[10],x[10],j,i,n;
printf("vedite n= ");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{if (a[i]==a[i+1]) i++;
x[j]=a[i]; j++;}
printf("elemente cotorie povtoreaiutsea : %d",x[j]);
getch();
}
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#12
BoSSea
Создай в этом разделе новую тему и напиши то же самое, поставив код в тэг C++.
 
Статус
Закрыто для дальнейших ответов.