Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2010, 22:51   #11
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

а как правильно я не пойму подскажи пожалуйста )))
серг вне форума Ответить с цитированием
Старый 18.02.2010, 23:18   #12
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

ошибки исправил:
Код:
//ВТОРАЯ ЧАСТЬ

int j,N=10,M=6;// Размерность масива 
    srand (time (0));

// Двум. динам. массив создается так
    double** mas;
    mas = new double*[N]; // Резервирование памяти для динамического массива
	for(i=0; i<N; i++)
	       mas[i] = new double[M];

    FILE *massiv2; //В файл "1.txt" //дописывается
    massiv2 = fopen ("1.txt","at") ; //двумерный массив
    fprintf (massiv2,"\n\n");
    // Заполнение массива
	for (i=0;i<N;i++){	
		for (j=0;j<M;j++) {
             mas[i][j] = rand()%200-200;
                    printf ("%d\n",mas[i][j]);
                       fprintf (massiv2,"%d", mas[i][j]);

                      } 
                      printf ("\n") ;                                  
fprintf (massiv2,"%s", "\n") ;
}

fclose (massiv2);

FILE *readmassiv2; //Чтение матрицы из файла //"1.txt"
readmassiv2 = fopen ("2.txt","rt");

for (i=0 ; i<N ; i++){ 
for (j=0 ; j<M; j++){
fscanf(readmassiv2,"%d",&(*(mas+i*M+j)));
}
fscanf(readmassiv2,"\n") ;
}

FILE *obrabotkamassiv2; //Обработка, и результат
obrabotkamassiv2= fopen ("2.txt","at") ; //дописывается в файл //"2.txt" 
fprintf (obrabotkamassiv2,"\n\n" );
// находим отрицательные элементы массива и если элемент меньше нуля то умножается на -1 (получается положительный)
    for (i=0;i<N;i++)	
		for (j=0;j<M;j++)
				if (*(mas+i*M+j)<0)
					mas[i][j]=mas[i][j]*(-1);
	                cout<<"\n";
                   // Вывод массива
		for (i=0;i<N;i++)	
	   	   {
			   for (j=0;j<M;j++)
				{
				printf("%d",*(mas+i*M+j));
				fprintf(obrabotkamassiv2,"%d",*(mas+i*M+j));
				}
                printf("\n");
				fprintf(obrabotkamassiv2,"\n");				
		        }
             fclose (obrabotkamassiv2);
             fclose (readmassiv2);

      // чистка памяти
      for(i=0; i<M; i++)
           delete[] mas[i];
      delete[] mas;

             _getch ();
}

Последний раз редактировалось NiCola999; 18.02.2010 в 23:37.
NiCola999 вне форума Ответить с цитированием
Старый 18.02.2010, 23:37   #13
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

чет 10 ошибок выдает
серг вне форума Ответить с цитированием
Старый 18.02.2010, 23:39   #14
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

стоп не не 10 а так же не запускается
серг вне форума Ответить с цитированием
Старый 18.02.2010, 23:41   #15
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

проверь еще раз, я правил несколько раз код в сообщении, у меня запускается
NiCola999 вне форума Ответить с цитированием
Старый 18.02.2010, 23:52   #16
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

первая часть работает а во второй выдает дофига нулей и отрицательных шестизначных цифр
серг вне форума Ответить с цитированием
Старый 19.02.2010, 00:08   #17
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

Код:
int j,N=10,M=6;// Размерность масива 
    srand (time (0));
	double** mas;
    mas = new double*[N]; // Резервирование памяти для динамического массива
	for(i=0; i<N; i++)
	       mas[i] = new double[M];  
    FILE *massiv2; //В файл "1.txt" //дописывается
    massiv2 = fopen ("1.txt","at") ; //двумерный массив
    fprintf (massiv2,"\n\n");
    // Заполнение массива
	for (i=0;i<N;i++){	
		for (j=0;j<M;j++) {
				mas[i][j]=rand()%200-200;
                    printf ("%d\n",mas[i][j]);
                       fprintf (massiv2,"%d",mas[i][j]);
                       } 
                      printf ("\n") ;
fprintf (massiv2,"%s", "\n") ;
}

fclose (massiv2);

FILE *readmassiv2; //Чтение матрицы из файла //"1.txt"
readmassiv2 = fopen ("2.txt","rt");
for (i=0 ; i<N ; i++){ 
for (j=0 ; j<M; j++){
fscanf_s(readmassiv2,"%d",&(*(mas+i*M+j)));
}
fscanf_s (readmassiv2,"\n") ;
}
FILE *obrabotkamassiv2; //Обработка, и результат
obrabotkamassiv2= fopen ("2.txt","at") ; //дописывается в файл //"2.txt" 
fprintf (obrabotkamassiv2,"\n\n" );
// находим отрицательные элементы массива и если элемент меньше нуля то умножается на -1 (получается положительный)
    for (i=0;i<N;i++)	
		for (j=0;j<M;j++)
				if (*(mas+i*M+j)<0)
					mas[i][j]=mas[i][j]*(-1);
	                cout<<"\n";
                   // Вывод массива
		for (i=0;i<N;i++)	
	   	   {
			   for (j=0;j<M;j++)
				{
				printf("%d",*(mas+i*M+j));
				fprintf(obrabotkamassiv2,"%d",*(mas+i*M+j));
				}
                printf("\n");
				fprintf(obrabotkamassiv2,"\n");
		        }
             fclose (obrabotkamassiv2);
             fclose (readmassiv2);
              for(i=0; i<M; i++)
           delete[] mas[i]; // очистка памяти
           delete[] mas;
             _getch ();
}
вот такой код второй части как и у тебя не пойму почему не работает у меня
серг вне форума Ответить с цитированием
Старый 19.02.2010, 00:09   #18
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

найди хоть одно отличие )
серг вне форума Ответить с цитированием
Старый 19.02.2010, 00:09   #19
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

держи )

я не знаю как записывается элемент двум. массива через указатели, уж извини=), но в них была ошибка
нули выдавались, потому что у тебя тип double а ты пытаешься распечатать целые числа

еще у тебя в файл печатаются целые числа, а не double, поменяй во всех fprintf ах чтобы вывод был double, недеюсь сам справишься, я и так много уже сделал...
Код:
// ВТОРАЯ ЧАСТЬ
int j,N=10,M=6;// Размерность масива 
    srand (time (0));
    
	double** mas;
    mas = new double*[N]; // Резервирование памяти для динамического массива
	for(i=0; i<N; i++)
	       mas[i] = new double[M];
	
    FILE *massiv2; //В файл "1.txt" //дописывается
    massiv2 = fopen ("1.txt","at") ; //двумерный массив
    fprintf (massiv2,"\n\n");
    // Заполнение массива
	for (i=0;i<N;i++){	
		for (j=0;j<M;j++) {
             mas[i][j] = rand()%200-200;
                    printf ("%f\n",mas[i][j]);
                       fprintf (massiv2,"%d", mas[i][j]);

                      } 
                      printf ("\n") ;                                  
fprintf (massiv2,"%s", "\n") ;
}

fclose (massiv2);

FILE *readmassiv2; //Чтение матрицы из файла //"1.txt"
readmassiv2 = fopen ("2.txt","rt");

for (i=0 ; i<N ; i++){ 
for (j=0 ; j<M; j++){
fscanf(readmassiv2,"%d",&mas[i][j]);
}
fscanf(readmassiv2,"\n") ;
}

FILE *obrabotkamassiv2; //Обработка, и результат
obrabotkamassiv2= fopen ("2.txt","at") ; //дописывается в файл //"2.txt" 
fprintf (obrabotkamassiv2,"\n\n" );
// находим отрицательные элементы массива и если элемент меньше нуля то умножается на -1 (получается положительный)
    for (i=0;i<N;i++)	
		for (j=0;j<M;j++)
				if (mas[i][j]<0)
					mas[i][j]=mas[i][j]*(-1);
	                cout<<"\n";
                   // Вывод массива
		for (i=0;i<N;i++)	
	   	   {
			   for (j=0;j<M;j++)
				{
				printf(" %0.01f",mas[i][j]);
				fprintf(obrabotkamassiv2,"%d",mas[i][j]);
				}
                printf("\n");
				fprintf(obrabotkamassiv2,"\n");				
		        }
             fclose (obrabotkamassiv2);
             fclose (readmassiv2);

      // чистка памяти
      for(i=0; i<M; i++)
           delete[] mas[i];
      delete[] mas;

             _getch ();
}

Последний раз редактировалось NiCola999; 19.02.2010 в 00:14.
NiCola999 вне форума Ответить с цитированием
Старый 19.02.2010, 00:28   #20
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

мда все сделал как ты сказал и как я думал нифга не работает мож у нас компиляторы разные ?
серг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еще раз массив Divoha Общие вопросы C/C++ 3 27.06.2009 17:49
Еще раз о списках tae1980 Microsoft Office Excel 2 23.05.2009 16:51
С++. Еще раз файлы. androidvsu Помощь студентам 5 28.04.2009 23:16
Еще раз о EAccessViolation. Andre1723 Общие вопросы Delphi 12 23.02.2009 01:39