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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2013, 08:35   #1
maxim3535
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 14
По умолчанию Задача на разрезание прямоугольника(язык С)

Помогите пожалуйста решить:

В файле *in заданы натуральные числа m и n типа int , которые являются сторонами прямоугольника. от прямоугольника отрезают максимальные квадраты до тех пор, пока не остается квадрат. Вывести в файл *out количество отсечений.

наработки имеются:

Код:
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>


int _tmain(int argc, _TCHAR* argv[])
{{ 
   FILE *in;
   FILE *out; 
    in=fopen("qqq.in","r");
    out=fopen("qqq.out","w");
    if (in==NULL) 
{ 
   printf("error open file qqq.in");
   return(1); 
}
   int n, m, k=0; 
   fscanf(in,"%d",&n); 
   fscanf(in,"%d",&m);
	return 0;
}
while(n!=m)
{
if (n<m) m=m-n, k++;
if (n>m) n=n-m, k++;
}
fprintf(out,"%d", k);          // k - переменная-счётчик
fclose(out);
return 0;
}

Последний раз редактировалось maxim3535; 04.04.2013 в 10:34.
maxim3535 вне форума Ответить с цитированием
Старый 04.04.2013, 08:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

очевидно, что вырезаемый максимальный квадрат имеет сторону r = min(n,m)
после вырезания бОльшая сторона прямоугольника уменьшается на величину r
выполнять цикл, пока n<>m
считать итерации.
на мой взгляд, задача очень простая!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.04.2013, 08:55   #3
maxim3535
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 14
По умолчанию

У меня с языком С большие проблемы. Напиши пожалуйста код.
maxim3535 вне форума Ответить с цитированием
Старый 04.04.2013, 09:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Максим, не поверишь, у меня с этим языком C ещё бОльшие проблемы - я его практически не знаю... Поэтому от меня помощи в виде готового кода - не жди!

(максимум, твой код смогу подправить, если соображалки, интуиции и удачи у меня хватит..)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.04.2013, 09:53   #5
maxim3535
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 14
По умолчанию

исключая указатели, открытие, проверку и считывание файла, цикл будет такой:
Код:
while(n!=m)
{
if (n<m) m=m-n, k++;
if (n>m) n=n-m, k++;
}
out=fopen ("qqq.out","w");
fprintf(out,"%d", k)          // k - переменная-счётчик
fclose(out);
return 0;

Последний раз редактировалось maxim3535; 04.04.2013 в 10:34.
maxim3535 вне форума Ответить с цитированием
Старый 04.04.2013, 10:10   #6
maxim3535
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 14
По умолчанию

полный код примерно такой, но он не работает
Код:
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>


int _tmain(int argc, _TCHAR* argv[])
{{ 
   FILE *in;
   FILE *out; 
    in=fopen("qqq.in","r");
    out=fopen("qqq.out","w");
    if (in==NULL) 
{ 
   printf("error open file qqq.in");
   return(1); 
}
   int n, m, k=0; 
   fscanf(in,"%d",&n); 
   fscanf(in,"%d",&m);
	return 0;
}
while(n!=m)
{
if (n<m) m=m-n, k++;
if (n>m) n=n-m, k++;
}
fprintf(out,"%d", k);          // k - переменная-счётчик
fclose(out);
return 0;
}

Последний раз редактировалось maxim3535; 04.04.2013 в 10:46.
maxim3535 вне форума Ответить с цитированием
Старый 04.04.2013, 18:39   #7
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

попробуйте так:
Код:
#include <stdlib.h>
#include <stdio.h>

int main()
{
   FILE *in;
   FILE *out; 
    in=fopen("qqq.in","r");
    out=fopen("qqq.out","w");
    if (in==NULL) 
{ 
   printf("error open file qqq.in");
   return(1); 
}
   int n, m, k=0; 
   fscanf(in,"%d",&n); 
   fscanf(in,"%d",&m);
while(n!=m)
{
if (n<m) m=m-n, k++;
if (n>m) n=n-m, k++;
}
fprintf(out,"%d", k);          // k - переменная-счётчик
fclose(out);
return 0;
}
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по методам прямоугольника и трапеции Flur Паскаль, Turbo Pascal, PascalABC.NET 3 13.02.2013 22:06
задача про координаты прямоугольника tata7393 Помощь студентам 5 29.10.2012 11:53
Задача о разрезании прямоугольника Ильнар70 Помощь студентам 3 25.10.2010 17:42
Задача на дивиденды (язык C++) Negent Помощь студентам 1 12.08.2010 23:25