Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 29.04.2014, 18:24   #1 (permalink)
Vasilisk
Member
 
Аватар для Vasilisk
 
Регистрация: 16.05.2010
Сообщений: 1,194
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 1 сообщении
Репутация: 1649
Unhappy Задание с двумерными массивами C++

1) Вычислить сумму элементов по строкам
2) Вычислить произведение всех положительных элементов
3) Упорядочить строки так чтобы суммы по строкам возрастали от первой строки к последней.

Я пока сделал такое:
Код:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>

void main()
{
int i, n, m, j;
double A[10][10], sum, proiz;

m=4;
n=5;

A[1][1]=-9.6; A[1][2]=2.5; A[1][3]=5.4; A[1][4]=-9.9; A[1][5]=1.7;
A[2][1]=-7.5; A[2][2]=-7.6; A[2][3]=8.5; A[2][4]=8.8; A[2][5]=1.1;
A[3][1]=9.2; A[3][2]=-3.9; A[3][3]=2.1; A[3][4]=2.2; A[3][5]=4.5;
A[4][1]=9.4; A[4][2]=7.3; A[4][3]=-4.5; A[4][4]=4.3; A[4][5]=-7.5;

cout<<endl<<endl<<endl;
cout<<"  Matrix before"<<endl<<endl;
for (i=1; i<=m; i++)
	{
   printf("  ");
   for (j=1; j<=n; j++)
   	printf("%3.1f  ",A[i][j]);
   printf("\n");
   }

cout<<endl<<endl<<endl;
cout<<"  Matrix Sum"<<endl<<endl;


sum=0;
for(i=0; i<m; i++)
	{

   	for(j=0; j<n; j++)
         {
         	sum+=A[i][j];
         }
    	cout<<"Sum "<<sum<<" ";
      sum=0;
      cout<<endl;

	}
1) задание считает не верно, да еще и первое значение "NАN" выдает
2) Все работает
3) 0_0 получается надо пузырьковым методом сделать, что бы считались суммы строк и в зависимости от результата, менялись строки местами
Vasilisk вне форума   Ответить с цитированием

Старый 29.04.2014, 18:24
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

В похожих темах обычно много интересных советов

Работа с массивами на ассемблере
Работа с массивами
Две задачи с массивами в Паскале
Паскаль. Работа с двумерными массивами

Старый 29.04.2014, 20:06   #2 (permalink)
Vasilisk
Member
 
Аватар для Vasilisk
 
Регистрация: 16.05.2010
Сообщений: 1,194
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 1 сообщении
Репутация: 1649
По умолчанию

1) исправил, тупые ошибки (
Vasilisk вне форума   Ответить с цитированием
Старый 29.04.2014, 23:16   #3 (permalink)
Vasilisk
Member
 
Аватар для Vasilisk
 
Регистрация: 16.05.2010
Сообщений: 1,194
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 1 сообщении
Репутация: 1649
По умолчанию

Все, я в ступоре, SOS!!!
Vasilisk вне форума   Ответить с цитированием
Старый 30.04.2014, 09:59   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vasilisk Посмотреть сообщение
1) исправил, тупые ошибки (
Антон, ну так покажи, что наисправлял! Пока я вижу явную путаницу с индексацией матрицы: ввод сделан не на сишный, а на паскалевский манер: индексация с 1, в то время как циклы построены, как положено в СИ, т.е. в предположении индексации с 0.
Попробуй исправить так. Вместо
Код:
A[1][1]=-9.6; A[1][2]= 2.5; A[1][3]= 5.4; A[1][4]=-9.9; A[1][5]= 1.7; 
A[2][1]=-7.5; A[2][2]=-7.6; A[2][3]= 8.5; A[2][4]= 8.8; A[2][5]= 1.1; 
A[3][1]= 9.2; A[3][2]=-3.9; A[3][3]= 2.1; A[3][4]= 2.2; A[3][5]= 4.5; 
A[4][1]= 9.4; A[4][2]= 7.3; A[4][3]=-4.5; A[4][4]= 4.3; A[4][5]=-7.5;
запиши
Код:
A[0][0]=-9.6; A[0][1]= 2.5; A[0][2]= 5.4; A[0][3]=-9.9; A[0][4]= 1.7; 
A[1][0]=-7.5; A[1][1]=-7.6; A[1][2]= 8.5; A[1][3]= 8.8; A[1][4]= 1.1; 
A[2][0]= 9.2; A[2][1]=-3.9; A[2][2]= 2.1; A[2][3]= 2.2; A[2][4]= 4.5; 
A[3][0]= 9.4; A[3][1]= 7.3; A[3][2]=-4.5; A[3][3]= 4.3; A[3][4]=-7.5;
Циклы оставь, как есть.
Vladimir_S вне форума   Ответить с цитированием
Старый 30.04.2014, 11:38   #5 (permalink)
Vasilisk
Member
 
Аватар для Vasilisk
 
Регистрация: 16.05.2010
Сообщений: 1,194
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 1 сообщении
Репутация: 1649
Cool

Код:
for(i=0; i<m; i++)
	{

   	for(j=0; j<n; j++)
Забыл "=" поставить, и не учитывались одна строка и один столбец. И
Код:
double A[10][10]
заменил на "double A[5][4]", не знаю, имеет ли это смысл. Что касается индексации, так тут точно нет разницы, я везде пропускаю нулевой столбец и строку.
А вот с третьем заданием... Вообще не понимаю как это реализовать.
Vasilisk вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.04.2014, 12:18   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vasilisk Посмотреть сообщение
Что касается индексации, так тут точно нет разницы, я везде пропускаю нулевой столбец и строку.
Пожалуйста, можно и так, но тогда никаких
Цитата:
Сообщение от Vasilisk Посмотреть сообщение
Забыл "=" поставить
Vladimir_S вне форума   Ответить с цитированием
Старый 30.04.2014, 14:12   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vasilisk Посмотреть сообщение
А вот с третьем заданием... Вообще не понимаю как это реализовать.
А в чем конкретно трудности?
Vladimir_S вне форума   Ответить с цитированием
Старый 30.04.2014, 14:17   #8 (permalink)
Vasilisk
Member
 
Аватар для Vasilisk
 
Регистрация: 16.05.2010
Сообщений: 1,194
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 1 сообщении
Репутация: 1649
По умолчанию

Не хватает понимания процесса, что бы написать такое (
Vasilisk вне форума   Ответить с цитированием
Старый 30.04.2014, 14:32   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vasilisk Посмотреть сообщение
Не хватает понимания процесса, что бы написать такое (
К сожалению, написать код не могу - на С не программирую, а вот с пониманием процесса помочь попытаюсь.
Прежде всего - сюда: Об алгоритмах упорядочения одномерных массивов
Там, правда, Паскаль, но код такой примитивный, что разберешься.
Разница в том, что в твоём случае надо сравнивать суммы строк, а переставлять сами строки, что, по-моему, несложно.
Vladimir_S вне форума   Ответить с цитированием
Старый 30.04.2014, 15:38   #10 (permalink)
Vasilisk
Member
 
Аватар для Vasilisk
 
Регистрация: 16.05.2010
Сообщений: 1,194
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 1 сообщении
Репутация: 1649
Unhappy

Вот такую бредятину я написал:
Код:
for (i=1; i<=m-1; i++)
{
	for (j=1; m-i; j++)
		{
   	if (for(j=1; j<=n; j++) sum+=A[i][j]; > for(j=1; j<=n; j++) sum+=A[i+1][j];)

      	for (k=0; k<=m; k++)
  			{
     			q=A[i][k];
         	A[i][k]=A[i+][k];
    	 		A[i+1][k]=q;
  			}
		}
}
Vasilisk вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 00:24.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.