Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

преобразование двумерного массива в одномерный на языке Turbo C

32K
02 января 2008 года
Ошка
10 / / 02.01.2008
[FONT="Georgia"]Уважаемые форумчане, помогите пожалуйста разобраться с задачей.
Постановка задачи:
Создать двумерный массив [NxN] и записать его в текстовый файл.
Далее создать одномерный массив по правилу:
1 элемент - максимальное значение массива (описанного выше) минус минимальное, ||max1-min1
2 элемент - следующее максимальное по величине значение двумерного массива (кроме max1) минус самое минимальное значение, исключая min1..... ---> ||max2-min2
Записать массив в новом файле и вывести на экран.....

Код:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>


 FILE *data;
  if((data=fopen("data.txt","w"))==NULL)
    printf("error");
  else printf("massiv: \n");
   printf("\n");
  for(int k=0;k<n;k++)
 {
 zapoLNeNie()
  {
int m;
 int row; //строки
 int col;  //столбцы
 printf("enter amount of elements --> ");  //    Введите количество элементов
   scanf("%d",&row);  
  printf("\n");
          row=col;
        int **m = new int*[row];// матрица
           
// Создаем матрицу
       for(int i = 0; i < row;++i)
       {
    m = new int[col];
    for(int j = 0; j < col;++j)
        m[j] = rand() %100;// заполняем случ.числами...........
[/FONT]
320
02 января 2008 года
m_Valery
1.0K / / 08.01.2007
Cортировка пузырьком,запись в файл при помощи потоков.В остальном должно быть как-то так.
Код:
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
void BSort(int *,int);
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    int row, col;
    int i, j;  
    printf("Enter the amount of rows & columns: ");
    scanf("%d%d", &row, &col);
    int **mass = new int*[row];
    for(i = 0; i < row; i++){
       mass = new int[col];
      for(j = 0; j < col; j++){
         mass[j] = rand() % 100;
      }
    }
    for(i = 0; i < row; i++){
       for(j = 0; j < col; j++)
            printf("%4d    ", mass[j]);
       printf("\n\n");
    }
    int  n = row * col;  
    int *arr = new int[n];
    int k = 0;
    for(i = 0; i < row; i++){
        for(j = 0; j < col; j++){
            arr[k] = mass[j];
            ++k;
        }    
     }
    BSort(arr,n);
    for([COLOR="Red"]int [/COLOR]i = 0;i < n;++i)
        printf("%2d  ",arr);
    printf("\n");
    k = n - 1;
    int *arr1 = new int[n];
    for([COLOR="Red"]int [/COLOR]i = 0;i < n;++i){
        arr1 = arr - arr[k];
        --k;
    }
    for(i = 0;i < n;++i)
        printf("%2d  ",arr1);
    printf("\n");
    ofstream out("f1.txt");
    if(!out){
      printf("Error");
      exit(EXIT_FAILURE);
    }
    for(i = 0;i < n;++i)
        out << arr1 << ' ';
    for(i = 0; i < row; i++)
        delete[] mass;
    delete[] mass;
    delete[] arr;
    return 0;
}
void BSort(int *array,int size)
{
    bool flag = true;      
    int i, j;
    int temp;
    for (j = 1; ; j++)
    {
        for(i = 0; i < size - j; i++)
            if (array < array[i + 1])
            {
                temp = array;
                array = array[i + 1];
                array[i + 1] = temp;
                flag = false;
            }
            if(flag)   
            break; 
        flag = true;
   }
}
32K
02 января 2008 года
Ошка
10 / / 02.01.2008
m_Valery, спасибо!!!! только не могу разобраться до конца..... программа выводится с ошибкой....

Код:
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std; //не совсем понятно для чего....

void BSort(int *,int); // ?...размерность самого массива
int _tmain(int argc, _TCHAR* argv[])          // функция _tmain - макрос, который расширяется
// к соответствующей версии главной функции в зависимости от типа заявления:
{
    srand(time(0));
    int row, col;
    int i, j;
    printf("Enter the amount of rows & columns: ");
    scanf("%d%d", &row, &col);
    int **mass = new int*[row];      // * - уразатель
    for(i = 0; i < row; i++)

    {
    mass = new int[col];
    for(j = 0; j < col; j++)
        {mass[j] = rand() % 100;}
    }
       for(i = 0; i < row; i++)
       {
       for(j = 0; j < col; j++)
       printf("%4d    ", mass[j]);
       printf("\n\n");
       }
    int  n = row * col;
    int *arr = new int[n];
    int k = 0;
    for(i = 0; i < row; i++)
    {
         for(j = 0; j < col; j++)
        {
         arr[k] = mass[j];
     ++k;
     }
    }
    BSort(arr,n);
    for(int i = 0;i < n;++i)
    printf("%2d  ",arr);
    printf("\n");
    k = n - 1;
    int *arr1 = new int[n];
    for(int i = 0;i < n;++i)

        {
      arr1 = arr - arr[k];
      --k;                          // --k;  декримент
    }

    for(i = 0;i < n;++i)
    printf("%2d  ",arr1);
    printf("\n");
        ofstream out("f1.txt");
    if(!out){
        printf("Error");
    exit(EXIT_FAILURE);
    }
    for(i = 0;i < n;++i)
        out << arr1 << ' ';           // вывод ?...
    for(i = 0; i < row; i++)
        delete[] mass;
    delete[] mass;
    delete[] arr;
    return 0;
}


void BSort(int *array,int size)
{
  bool flag = true;
  int i, j;
  int temp;
  for (j = 1; ; j++)
    {
    for(i = 0; i < size - j; i++)
        if (array < array[i + 1])
            {
             temp = array;
             array = array[i + 1];
             array[i + 1] = temp;
             flag = false;
                }
            if(flag)   
        break;
        flag = true;
        }
}
320
02 января 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: Ошка
... только не могу разобраться до конца..... программа выводится с ошибкой....


Ошибка связана с тем,что Turbo C,наверно не все "понимает",я в Visual Studio 2005 делал. Какая конкретно ошибка ? Что пишет ?
1)using namespace std - для ofstream,для С не надо,используй FILE *data
2)int _tmain(int argc, _TCHAR* argv[]) - не знаю какой аналог главной функции в Turbo C ? void main,int main ?
3)размерность самого массива передается вторым параметром

32K
02 января 2008 года
Ошка
10 / / 02.01.2008
по идее нам в turbo с нужно писать.... но у меня его нет.... в наличии с++ Builder и Visual С++....

//int _tmain(int argc, _TCHAR* argv[]) --> скорее просто main(int argc, char* argv[]....

выдает ошибку: **'i' : redefinition** переполение.....
320
02 января 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: Ошка
по идее нам в turbo с нужно писать.... но у меня его нет.... в наличии с++ Builder и Visual С++....

//int _tmain(int argc, _TCHAR* argv[]) --> скорее просто main(int argc, char* argv[]....

выдает ошибку: **'i' : redefinition** переполение.....



Я там в коде(выше в посте) красным выделил то,что тебе надо убрать.Пробуй.

32K
02 января 2008 года
Ошка
10 / / 02.01.2008
m_Valery, это просто волшебство какое-то.....
**счастье** ....)))....
там останется только отредактировать немного....
вывод.... ну думаю это уже не проблема!!!!
там дважды разница отображается, только с противоположным знаком....
Visual'e все нормально, попробую под С адаптировать.....
Спасибо наиогромнейшее!!!!!
32K
02 января 2008 года
Ошка
10 / / 02.01.2008
[FONT="Georgia"]Вроде так))))

Код:
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>

#include <iostream.h>
#include <time.h>  //stryktyrw i fiNkcii dL9 operacii с datami i vremenem    

void Sort(int *,int);

main()
   {srand(time(0));    // srand kalibriryet sly4aiNwi generator 4iseLa
    int row, col;
    int i, j;
    printf("Enter the amount of rows & columns: ");
    scanf("%d%d", &row, &col);
      printf("\n");

    int **mass = new int*[row]; /* int **mass -
    eto ykazatel' Na ykazatel = new int*[row];
    - eto vwdeLeNie pamyati pod stroki,
    t.e cozdaNie dvymerNogo massiva s koLi4estvom strok = row.     */

    for(i = 0; i < row; i++)
    // vwdeLyaem stroki pod stoLbcw
      {
      mass = new int[col];
      for(j = 0; j < col; j++)
    // prisvaivaem sLy4aiNoe zNa4eNie ka*domy eLemeNty
      {mass[j] = rand() % 100;}
      }
      printf("Massiv:\n");
       for(i = 0; i < row; i++)
    {
       for(j = 0; j < col; j++)
       printf("%4d    ", mass[j]);      // vwvod matricw
       printf("\n\n");
    }
    int  n = row * col;

   //formirovanue matricw arr
   /* sozdanie massiva i poLy4rNie ykaZateL9 Na Nego */
    int *arr = new int[n];         //new - dinam4eskoe vwdeLeNie pam9ti

        int k = 0;
    for(i = 0; i < row; i++)
    {for(j = 0; j < col; j++)
      {arr[k] = mass[j];
       ++k;}}
    Sort(arr,n);
       printf("ZNa4eniya massiva v poryadke ybwbaNiya:\n");

    for(i = 0;i< n;++i)
    printf("%2d  ",arr);
    printf("\n\n");
    k = n - 1;
        int *arr1 = new int[n];

    for(i = 0;i < n;++i)
    {arr1 = arr - arr[k];
     --k;}

    printf("Novwi Massiv --> Max-MiN\n");
    for(i = 0;i < n;++i)

       if (arr1 > 0)
        printf("%2d  ",arr1);      //vwvod rezyL'tata
    printf("\n");


    for(i=0;i<n;++i)
    for(i = 0; i < row; i++)
       // delete --> ydalay66f9 komaNda; ydaL9et doLu daNNwx iZ faiLa

      delete[] mass; //osvobo*denie pam9ti pod massiv
      delete[] arr;
      return 0;
}
void Sort(int *array,int size)
{
    int flag = 1;
    int i, j;
    int temp;
    for (j = 1; ; j++)


        {for(i = 0; i < size - j; i++)
      if (array < array[i + 1])
          {temp = array;
             array = array[i + 1];
             array[i + 1] = temp;
         flag = 0;}
          if(flag)
      break;
      flag = 1;}
}
[/FONT]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог