Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Проблем със задача за обработка на двумерен масив

Featured Replies

Да се състави програма за обработка на двумерния масив A[N,N], където данните са цели числа в интервала [-500;1000]. Програмата да извърши следните действия:
-Отпечатване на условието на задачата;
-Отпечатване на имената на автора на програмата;
-Въвеждане на входните данни;
-Отпечатване на входните данни;
-А) Да се образува едномерен масив C[N], елементите на който са максималните елементи от всеки ред на масива A;
-Б) Полученият масив да се сортира по големина;
-Отпечатване на получените  резултати след обработка А) и след обработка Б).

 

 

Това е което успях да направя, но формулите нещо съм ги объркал.

 

 

#include <stdio.h>
#include <stdlib.h>
int const k = 15;
int i,j,b,br,max;
int a[k][k],c[k],x=0,y=0,temp;
int main()
{
printf("5: Da se sustavi programa za obrabotka na dvumeren masiv A[N,N],\n");
printf("kudeto dannite sa celi chisla v intervala [-500;1000].\n");
printf("A) Da se obrazuva ednomeren masiv C[N],\n");
printf("elementite na koito sa maksimalnite elementi\n");
printf("ot vseki red na masiva A.\n");
printf("B) Polucheniqt masiv da se sortira po golemina.\n");
printf("Otpechatvane na poluchenite rezultati sled obrabotka A)\n");
printf("i sled obrabotka B).\n");
printf("Ivelin Petrov Georgiev\n");
printf("Fak N: 000000000 ; EMF; TT ; 15 grupa.\n");
printf("Vuvedete broi redove i stulbove B=");
scanf("%d",&b);
for(i=0;i<b;i++)
for(j=0;j<b;j++)
do
{
printf("Vuvedete a[%d][%d]=",i,j);
scanf("%d",&a[j]);
}
while(!(a[j]>=-500&&a[j]<=1000));
printf("Izvejdane na vhodni danni:\n");
for(i=0;i<b;i++)
{
for(j=0;j<b;j++)
printf(" %d  ",a[j]);
printf(" \n");
}
for(i=0;i<b;i++)
{
for(j=0;j<b;j++)
if(a[j]<a[j+1])
{
max=a[j+1];
}
c[br]=max;
br++;
}
printf("Elementite na masiva C:\n");
for (i=0;i<br-1;i++)
printf("%d",c[br]);
printf("\n");
printf("Podredeni po golemina:\n");
for (j=i+1;j<br;j++)
if(c>=c[j])
{
temp=c;
c=c[j];
c[j]=temp;
}
for (i=0;i<br;i++)
printf("%d:",c);
printf("\n");
    system("pause");
    return 0;
}
 

Намирането на максимален елемент на всеки ред е сбъркано.

     ...
     for (i=0;i<b;i++) {
         max = a[i][0];
         for (j=1;j<b;i++) 
             if (max < a[i][j])
                max = a[i][j];
         c[i]=max;
     }

От там нататък следва някаква каша, дето най-добре да се изтрие и напише наново.

Редактирано от ined (преглед на промените)

...

Здравейте !

В допълнение на коментара на @ined, следния код също трябва да се прегледа ... 

...
	printf("Podredeni po golemina:\n");
	for (j = i + 1; j < br; j++) 
		if (c[i] >= c[j]) {
			temp = c[i];
			c[i] = c[j];
			c[j] = temp;
		}
...
}

Това е полу-написано решение за сортиране по метода на пряката селекция - за повече информация, прочете тук.

В общи линии, трябва да изглежда нещо подобно на:

for (i = 0; i < br; i++) {
	for (j = i + 1; j < br; j++) {
		if (c[i] >= c[j]) {
			temp = c[i];
			c[i] = c[j];
			c[j] = temp;
		}
	}
}
  • Автор

Благодаря за помощта. Ще се опитам да я пооправя. :)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.