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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2016, 23:06   #21
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Нет. В задании написано "....затем M раз случайным образом заменить элементы на -1....". Если же случайно случайно мы попали на тот же элемент матрицы, значит на то воля Бога.

С таким подходим for не не нужен.

Пробуй. Посмотри выше фотографию, где нужно вставлять код. Потом ставь

while (M > 0)
{
i= rand() % N;
A[i]=-1;
cout // ВЫВЕСТИ НА ЭКРАН

M--;
}

Что получилось?


Потом перенаправь от консоли в файл. И заново считай, выведя попутно на экран.
ura_111 вне форума Ответить с цитированием
Старый 28.06.2016, 23:10   #22
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Подожди, а переменную i откуда взять?
Narsky вне форума Ответить с цитированием
Старый 28.06.2016, 23:12   #23
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Объяви выше. Что за детский вопрос.

Ходя нет лучше возьми k:
int k;

Дело в том, i используется в циклах, поэтому может быть конфликт имен.

Последний раз редактировалось ura_111; 28.06.2016 в 23:19.
ura_111 вне форума Ответить с цитированием
Старый 28.06.2016, 23:15   #24
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Или мне надо ещё показать в каком месте её объявлять. Я покажу мне не трудно


int N, M, k ;
cout << "Введите N: ";
ura_111 вне форума Ответить с цитированием
Старый 28.06.2016, 23:21   #25
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file1;
	char *fname1 = "INPUT.txt";

	int S[200];	
	for (int i = 0; i < 200; i++)
	{
		S[i] = 0;
	}
	
	int N, M, k;
	cout << "Введите N: ";
	cin >> N;
	cout << "Введите M: ";
	cin >> M;
	
	// Запись в файл
	file1 = fopen(fname1, "wb");
	for (int i = 0; i < N; i++)
	{
		fwrite(&i, sizeof(int), 1, file1);
	}
	fclose(file1);
	/////////////////
			
	// Чтение из файла и вывод на экран		
	printf("\nЧтение из файла:\n");
	file1 = fopen(fname1, "rb");
	fseek(file1, 0, SEEK_SET);
	for (int i = 0; i < N; i++)
	{
		fread(&S[i], sizeof(int), 1, file1);
		printf("%d ", S[i]);
	}	
	fclose(file1);	
	///////////////////////////////////

	// Замена на значений -1
	srand(time(NULL));

	
while (M > 0)
{
k= rand() % N;
S[k]=-1;
cout << S[k];

M--;
}

	printf("\n\nЯ ВСЕ!  Для выхода нажми любую клавишу...");
	if (!_getch()) _getch();
	return 0;
}
Извини, у меня уже голова плохо соображает)
Получилось: 1 2 3 N -1 -1 -1 -1 и т.д.
Narsky вне форума Ответить с цитированием
Старый 28.06.2016, 23:28   #26
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Давай завтра продолжим, я спать пойду
Narsky вне форума Ответить с цитированием
Старый 28.06.2016, 23:29   #27
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Пробуй в разных комбинациях.

Код:
	// Замена на значений -1
	
	srand(time(NULL));
	while (M > 0)
	{
		k = rand() % N;
		S[k] = -1;
		M--;
	}

	printf("\nЗамена\n");
	for (int i = 0; i < N; i++)
	{
		printf("%d ", S[i]);
	}
	
	printf("\n\nЯ ВСЕ!  Для выхода нажми любую клавишу...");
	if (!_getch()) _getch();
	return 0;
ura_111 вне форума Ответить с цитированием
Старый 28.06.2016, 23:33   #28
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ладно.
ura_111 вне форума Ответить с цитированием
Старый 29.06.2016, 10:17   #29
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Все работает! Теперь нужно скопировать полученный результат во второй файл. Попробовал я, но получился какой-то бред...
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file1, *file2;
	char *fname1 = "INPUT.dat";
	char *fname2 = "OUTPUT.dat";

	int S[200];	
	for (int i = 0; i < 200; i++)
	{
		S[i] = 0;
	}
	
	int N, M, k;
	cout << "Введите N: ";
	cin >> N;
	cout << "Введите M: ";
	cin >> M;
	
	// Запись в файл
	file1 = fopen(fname1, "wb");
	for (int i = 0; i < N; i++)
	{
		fwrite(&i, sizeof(int), 1, file1);
		fread(&S[i], sizeof(int), 1, file1);
		printf("%d ", S[i]);
		srand(time(NULL));

	while (M > 0)
	{
		k = rand() % N;
		S[k] = -1;
		M--;
	}

	printf("\nЗамена\n");
	for (int i = 0; i < N; i++)
	{
		printf("%d ", S[i]);
	}
	}
	fclose(file1);
	/////////////////
			
	// Чтение из файла и вывод на экран		
	

	file1 = fopen(fname2, "rb");
	file2 = fopen(fname2, "wb");
	fseek(file1, 0, SEEK_SET);
	for (int i = 0; i < N; i++)
	{
		fread(&S, sizeof(int), 1, file1);
		printf("%d ",S[i]);
		fwrite(&S, sizeof(int), 1, file2);
	}
		
	fclose(file1);
	fclose(file2);

	printf("\n\nЯ ВСЕ!  Для выхода нажми любую клавишу...");
	if (!_getch()) _getch();
	return 0;
}
Narsky вне форума Ответить с цитированием
Старый 29.06.2016, 10:44   #30
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Вот еще код:
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file;
	char *fname1 = "INPUT.dat";
	char *fname2 = "OUTPUT.dat";

	int S[200];	
	for (int i = 0; i < 200; i++)
	{
		S[i] = 0;
	}
	
	int N, M, k;
	cout << "Введите N: ";
	cin >> N;
	cout << "Введите M: ";
	cin >> M;
	
	for (int i = 0; i < N; i++)
		cout << S[i];

	file = fopen(fname1, "w");
	for (int i = 0; i < N; i++)
		fprintf(file, "%i ", S[i]);
	fclose(file);

	cout << "Исходный массив чисел, записанный в INPUT.txt:";
	for (int i = 0; i < N; i++)
		cout << S[i];

	srand(time(NULL));

	while (M > 0)
	{
		k = rand() % N;
		S[k] = -1;
		M--;
	}

	printf("\nЗамена\n");
	for (int i = 0; i < N; i++)
	{
		S[i];
	}

	file = fopen(fname2, "w");
	for (int i = 0; i < N; i++)
		fprintf(file, "%i ", S[i]);
	fclose(file);

	printf("\n\nОбработанный массив чисел, записанный в OUTPUT.txt:\n");
	for (int i = 0; i < N; i++)
		printf("%i ", S[i]);

	printf("\n\nПримечание: последнее число массива обработки не подлежит и поэтому не выводится!");

	printf("\n\nДля выхода нажмите любую клавишу...");
	if (!_getch()) _getch();
	return 0;
}
Замена получается, но первая исходная комбинация чисел равна нулям. Скорее всего это связано с:
Цитата:
int S[200];
for (int i = 0; i < 200; i++)
{
S[i] = 0;
}
Это можно убрать?
Narsky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память dykee Помощь студентам 2 27.02.2014 01:52
Динамическая память. spotmc13 Паскаль, Turbo Pascal, PascalABC.NET 5 20.09.2010 17:08
Динамическая память PaulSev Общие вопросы Delphi 12 25.03.2010 09:07
динамическая память zhenya.ya Помощь студентам 2 24.02.2010 20:58
динамическая память aka_faith Общие вопросы C/C++ 47 12.06.2009 12:35