Массив (Си) Ошибка

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Nice Plant
Сообщения: 1
Зарегистрирован: 04 окт 2010, 01:13

Здравствуйте не могу исправить 2 ошибки(
Помогите пжлст.

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

void main()
{
  int a[10][10],b,i,j,n,m;
  int k;
  srand(time(NULL));
  printf ("VVedite  N =  ");
  scanf ("%d", &n);
  printf ("VVedite  M =  ");
  scanf ("%d", &m);

  {
	for (i=0; i<n; i++)
		for (j=0;  j<m; j++)
          a[i][j]=rand(5)+1;		
  }
     printf ("ISHODNIY MASSIVE \n");
	 printf ("==================\n");
	 for (i=0; i<n; i++)
	 {for (j=0;  j<m; j++)
         printf ("%d", a[i][j]);
	     printf ("\n");
     }
	 do 
		{
		 for (i=0, k=0; i<n-1; i++)
         for (j=0, k=0; j<m-1; j++)
		   if (a[i]>a[i+1])
		   {
			   b=a[i];
			   a[i]=a[i+1];
			   a[i+1]=b;
			   k=k+1;
           }
		   n--;
		   m--;
		}
	 while (k>0);


     printf ("SORTIROVANNIY \n");
	 printf ("==================\n");
	 for (i=0; i<n; i++)
	 {for (j=0;  j<m; j++)
         printf ("%d", a[i][j]);
	     printf ("\n");
     }
	
	 
     while(!kbhit())getch();
}
azrael
Сообщения: 89
Зарегистрирован: 31 май 2009, 15:30
Контактная информация:

Отформатируйте код, укажите текст ошибок и вам помогут гораздо быстрее.
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Код: Выделить всё

do
{
...
}
while (k>0);
Когда выполнится это условие?
budulaj88
Сообщения: 13
Зарегистрирован: 20 окт 2010, 17:28

К какому циклу относится ето n-- i m-- в условии do {} while(k>0)
budulaj88
Сообщения: 13
Зарегистрирован: 20 окт 2010, 17:28

По друге ти створюєш масив а[][] ---ДВОВИМІРНИМ, а викликаєш тільки вказівник на рядок, як це розуміти. І ще одне - це що метод "бульбашки" в do{}while(k>0)
budulaj88
Сообщения: 13
Зарегистрирован: 20 окт 2010, 17:28

Код: Выделить всё

#include <iostream>
#include <ctime>
#include <iomanip>

using namespace std;

int main()
{
    srand(time(0));
    cout << "vvedit rozmir mas [n][m]\nn = ";
    int n = 0;
    cin >> n;
    cout << "m = ";
    int m = 0;
    cin >> m;
    //створення-динамічного-масиву------------------------------------
    int **mas = new int *[n];
    for (int i = 0; i <= n - 1; i++) mas[i] = new int [m];
    //----------------------------------------------------------------
    for (int i = 0; i <= n - 1; i++)
        for (int j = 0; j <= m - 1; j++) mas[i][j] = rand()%100 + 1;
    for (int i = 0; i <= n - 1; i++)
    {
        for (int j = 0; j <= m - 1; j++) cout << setw(5) << mas[i][j];
        cout << endl;
    }
    //найшвидший-метод-бульбашки--------------------------------------
    int mitka = 0, ccc = 0;
    do
    {
        mitka = 0;
        for (int k = 0; k <= n-1; k++)
            for (int i = m-2; i >= 0; i--)
                if (mas[k][i] > mas[k][i + 1])
                {
                    ccc = mas[k][i];
                    mas[k][i] = mas[k][i + 1];
                    mas[k][i + 1] = ccc;
                    mitka = 1;
                }
    }while(mitka != 0);
    //----------------------------------------------------------------
    cout << endl;
    for (int i = 0; i <= n - 1; i++)
    {
        for (int j = 0; j <= m - 1; j++) cout << setw(5) << mas[i][j];
        cout << endl;
    }
    //видаленн-динамічного-масиву-------------------------------------
    for (int i = 0; i <= n - 1; i++) delete [] mas[i];
    delete []mas;
    //----------------------------------------------------------------
    return 0;
}
chesser
Сообщения: 5
Зарегистрирован: 03 авг 2010, 11:07

Первая ошибка:

Код: Выделить всё

a[i][j]=rand(5)+1;
Должно быть так:

Код: Выделить всё

a[i][j]=rand()%5+1;
Основная состоит в том, что работаете с матрицей a как с одномерным массивом.
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

chesser писал(а): Основная состоит в том, что работаете с матрицей a как с одномерным массивом.
chesser, ни кто не мешает вам работать с двумерным массивом как с одномерным. Массив ТС a[10][10] можно использовать как a[100], просто, в случае с матрицей, это не очень-то удобно.
Ответить