Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Переделать программу на Си

Ответить
Настройки темы
C/C++ - Переделать программу на Си

Новый участник


Сообщения: 24
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Всем доброго времени суток!
Помогите, пожалуйста, переделать программу на язык Си или подскажите хотя бы, какие функции использовать, очень надо. Сам я пробовал, но у меня что-то на получается (особенно, где происходит копирование строк). Программирую на Visual C++ 2008. Заранее спасибо.
Вот, собственно, и программа:

Код: Выделить весь код
var n, Num, Num3, i, j, t: integer;
  Count: array[1..10] of integer;
  a, b, c, s: string;
  Names: array[1..10] of string;
begin
  readln(a); {Считываем аббревиатуру}
  Num:=0; {Число различных фирм}
  ReadLn(N); {Считываем количество фирм}
  for i:=1 to N do
  begin
    ReadLn(s); {считали название фирмы}
    b:=s[1];
    c:=s;
    while (pos(' ',c)>0) and (length(b)<= length(a)) do
    {составляем аббревиатуру из названия}
    begin
      b:=b+c[pos(' ',c)+1];
      delete(c,pos(' ',c),1)
    end;
    if a = b then
    begin
    {Осуществляем поиск названия в списке уже встретившихся}
      j:=1;
      while (j<=Num) and (s<>Names[j]) do j:=j+1;
     {Если фирма найдена}
      if j<=Num then {Увеличиваем счетчик числа повторений}
        Count[j]:=Count[j]+1
      else begin {Иначе добавляем фирму в конец списка}
             Names[j]:=s;
             Count[j]:=1;
             Num:=Num+1
           end
    end
  end;
{Сортируем массивы Names и Count в порядке убывания значений массива Count} 
  for i:=Num downto 2 do 
  for j:=2 to i do if Count[j-1]<Count[j] then 
  begin 
    t:=Count[j]; Count[j]:=Count[j-1]; Count[j-1]:=t;
    s:=Names[j]; Names[j]:=Names[j-1]; Names[j-1]:=s;
  end; 
  if Num < 3 then Num3:=Num else Num3 := 3;
  for i:=1 to Num do
    if Count[i] >= Count[Num3] then
    writeln(Names[i]);
end.

Отправлено: 20:17, 02-05-2013

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


S*2012*, уточните пожалуйста С или С++ ? Вопрос существенный, т.к. в С++ есть инструменты для работы со строками. В простом С AFAIK их нет и приходится строить достаточно сложные конструкции.
В любом случае приведите ваши собственные попытки.
Что то я код читаю, смысла понять не могу. Он что вообще делать то должен?
Цитата S*2012*:
Код: Выделить весь код
b:=s[1];
 c:=s;
 while (pos(' ',c)>0) and (length(b)<= length(a)) do
 {составляем аббревиатуру из названия}
 begin
 b:=b+c[pos(' ',c)+1];
 delete(c,pos(' ',c),1)
 end;
»
Это в частности. Это вообще что-то странное и дикое по моему. Могу ошибаться. Нужны комментарии.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:16, 02-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Писать нужно на Си.

На вход программе в первой строке подаётся аббревиатура – строка из заглавных латинских букв, состоящая не менее чем из двух и не больше чем из пяти букв. Во второй строке находится число N – количество названий, не все из них точно подходят под указанную аббревиатуру. Программа должна вывести список из трёх фирм с нужной аббревиатурой, которые упоминаются чаще всего.

Пример входных данных:
MS
5
MOUNTING SYSTEM
MACRO SOFT COMPANY
MONTANA JEANS
MOUNTING SYSTEM
MACRO SOFT
Пример выходных данных для приведенного выше примера входных данных:
MOUNTING SYSTEM
MACRO SOFT

Я зациклился на функциях gets и strcat, когда пытался переделать. Вот фрагмент:
Код: Выделить весь код
int main(void)
{
	int n, Num, Num3, i, j, t;
	int count[9];
	char *a, *b, *c, *s;
	char names[9];

	gets(a);
	Num = 0;
	scanf("%d", &n);

	for (i = 1; i < 10; i++)
	{
		gets(s);
		strcat(b, s);
	}
	
}

Отправлено: 21:28, 02-05-2013 | #3


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вопрос не по теме: во много ли раз проще работать си строками в Visual Basic, нежели в Си?

Отправлено: 21:44, 02-05-2013 | #4


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


S*2012*,
Цитата S*2012*:
Вопрос не по теме: во много ли раз проще работать си строками в Visual Basic, нежели в Си? »
Строки в Visual Basic
Основы работы со строками Visual Basic
Строки в С и С++(часть 1)
Как я понял из задания, надо отсортировать предложенный массив, и вывести наиболее часто употребляемые значения. Мне сейчас сделать это несколько затруднительно. Разбейте задачу на составляющие и попробуйте поискать готовые фрагментарные решения. Ввод данных / сортировка.
Сортировка массива строк Си может поможет (тема форумная, стартовый код не верен).

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 22:31, 02-05-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Переделать программу на Си

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Создание ОС на Си и Си++ morph-x Программирование и базы данных 2 26-10-2010 20:35
C/C++ - Переделать программу на кассы mephistophel Программирование и базы данных 0 12-06-2010 17:10
C/C++ - Майлер на СИ DaRiYs Программирование и базы данных 10 01-09-2008 12:39
Почему большинство проектов Open Source написаны на СИ, а не на СИ++ Mr666 Программное обеспечение Linux и FreeBSD 2 20-02-2008 23:17
код на си libricon Программирование и базы данных 7 07-04-2004 20:03




 
Переход