Вопрос № 68895: Подскажите, пожалуйста, как решитиь следующую задачу - "Заполнить матрицу (9х9) ЛП, от левого нижнего угла по диагонали: влево-вверх". ЛП-линейная последовательность. Я пытался всяко, последний вариант:
#include <iostream.h>
#...Вопрос № 68918: Здравствуйте, уважаемые эксперты.
Возникла у меня следующая проблема: был проект который собирался компилятором от VC6 (makefile используя GNU make), понадобилось чтоб собиралось все это VC7, все собирается если не указывать рантайма, но стоит ук...Вопрос № 68919: Один файл пытаюсь переписать в другой посимвольно, но ести в файле fp встречается некоторая последовательность символов, например 123, то её не нужно записывать в файл stream.
Как это осуществить?...
Вопрос № 68.895
Подскажите, пожалуйста, как решитиь следующую задачу - "Заполнить матрицу (9х9) ЛП, от левого нижнего угла по диагонали: влево-вверх". ЛП-линейная последовательность. Я пытался всяко, последний вариант:
#include <iostream.h>
#include <conio.h>
int m[9][9];
int i, j, p, last_i, last_j;
int main() {
i=8; // задаю начальные координаты точки
j=0;
getch();
return 0;
}
Однако же, она не работает. Я перерыл весь инет, локалку Уфы, потратил очень много трафика, но ничего стоящего не нашел((
Подскажите, как ее решить, пожалуйста
Отправлен: 28.12.2006, 11:48
Вопрос задал: Waitekk (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Tek
Здравствуйте, Waitekk!
Если я правильно понял задачу (заполнение движущейся диагональной волной, на каждом гребне которой значение увеличивается на единицу - очень похожа на поиск кратчайшего пути в двумерной матрице, правда с приравниваем расстояний по сторонам и диагонали и упрощение начальных условий), то проще понять ее принцип:
1. Смени точку отсчета - пусть началом будет нужная вам клетка - левая нижняя (и ее координаты (1;1))
2. Отсчет по осям вправо и вверх.
3. Тогда легко понять, что каждая клетка имеет значение относительно ее координат - (i+j-1).
4. Переводим в систему отсчета матрицы в привычную для математика-программиста с началом от левого верхнего угла вправо и вниз и отсчетом от нуля. Преобразование координат дает формулу j=j1-1 i=m-i0, где i,j - преобразованные координаты, i0,j0- исходные m - количество строк матрицы(измерение i)
5. Таким образом задача сводится к двум вложенным циклам, сразу вместе с выводом результатов кстати.
А у вас в коде сходу несколько ошибок, хотя я и не совсем понял вааще его смысла, вы видимо собирались на каждой итерации заполнять все клетки, попавшие в очередной гребень волны. Это не есть гут по определению - в каждом гребне разное количество клеток - по-этому нужен как минимум еще вложенный цикл.
Кроме того - следите за кодом и сообщениями компилятора - даже хинтам и ворнингам - присвоение last_j==о - это не присвоение а операция сравнения - результат которой истина или ложь.
Зачем то вы ввели last_i - почему же нигде не используется? Видимо где то вместо нее написали last_j или вааще забыли.
В цикле вывода - вы переносите строку после каждых 8 элементов - только условие j==8 - не исполниться никогда - отсчет идет от 0 до n-1 - не забываем.
Вот это навскидку.
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 4-ый класс)
Ответ отправлен: 28.12.2006, 12:50
Отвечает: DarkDevil
Здравствуйте, Waitekk!
Пришел в голову только такой вариант решения (см. приложение)
Приложение:
Ответ отправил: DarkDevil (статус: 1-ый класс)
Ответ отправлен: 28.12.2006, 12:50
Вопрос № 68.918
Здравствуйте, уважаемые эксперты.
Возникла у меня следующая проблема: был проект который собирался компилятором от VC6 (makefile используя GNU make), понадобилось чтоб собиралось все это VC7, все собирается если не указывать рантайма, но стоит указать в ключах компиляции ключик /MT появляются ошибки (см. приложение). При этом стоит линкеру сказать чтоб он юзал либы от 6 студии, и все собирается.
На путях нет никакого упоминания о шестой студии!
В чем может быть дело?
Заранее благодарен.
Приложение:
Отправлен: 28.12.2006, 14:29
Вопрос задал: Vadim (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, Vadim!
я думаю вам сюда
http://msdn2.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx
The single-threaded CRT (libc.lib, libcd.lib) (formerly the /ML or /MLd options) is no longer available. Instead, use the multithreaded CRT. See [160]Multithreaded Libraries Performance
Ответ отправил: ramok (статус: 3-ий класс)
Ответ отправлен: 28.12.2006, 14:47
Отвечает: kool
Здравствуйте, Vadim!
Не подключены библиотеки - lib-ы,
в кот. определены функции Xran и Xlen.
Ответ отправил: kool (статус: 2-ой класс)
Ответ отправлен: 28.12.2006, 22:57
Вопрос № 68.919
Один файл пытаюсь переписать в другой посимвольно, но ести в файле fp встречается некоторая последовательность символов, например 123, то её не нужно записывать в файл stream.
Как это осуществить?
Отвечает: DarkDevil
Здравствуйте, Иванов Михаил Викторович!
Возможно устроит такой вариант.
Писал в блокноте, так что корректность не гарантирую, но думаю идея будет понятна.
char buff[100];//не меньше чем длина строки, не включаемая в выходной файл
char BadString[]="123";//строка, которую нужно исключить
int n,i;
/* определение файловых дескрипторов и открытие файлов */
while(fread(&ch, 1, 1, fp)) //читаем очередной символ
{
if(ch==BadString[0])
{
if(strlen(BadString)>1)
{
n=1;
buff[0]=ch;
while(fread(&ch, 1, 1, fp))
{
if(ch!=BadString[n])
{
fwrite(buff, 100, n, stream);
break;
}
else
{
buff[n]=ch;
n++;
if(n>strlen(BadString))
break;
}
}
}
}
else
fwrite(&ch, 1, 1, stream);
}
Ответ отправил: DarkDevil (статус: 1-ый класс)
Ответ отправлен: 28.12.2006, 15:04
Отвечает: ramok
Здравствуйте, Иванов Михаил Викторович!
писано на коленке
Приложение:
Ответ отправил: ramok (статус: 3-ий класс)
Ответ отправлен: 28.12.2006, 15:17
Отвечает: kool
Здравствуйте, Иванов Михаил Викторович!
Где-то так (см. приложение).
Но намного быстрее (особенно на больших файлах)
использовать функции поиска
(например strstr, если речь идет о строках) и сразу
записывать в файл stream все что встретилось
от одной до другой найденой последовательности.
Но это уже другой вопрос.
Приложение:
Ответ отправил: kool (статус: 2-ой класс)
Ответ отправлен: 28.12.2006, 23:59