Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Merlin
Задание :
-------------------
Даны итоги выборов в Думу города. По К округам известно число голосовавших за представителей М партий. Считая, что от каждого округа в Думу проходит по одному представителю, составить алгоритм и программу, которые определяют, какая партия провела наибольшее число своих кандидатов (предполагая, что все кандидаты набрали разное число голосов).
------------------------------------
Это задачу мне надо переделать из Паскаля в Си, но возникают ошибки..

Вот задача в Паскале :

Program z;
  const
    K=5;
    M=4;
 Results: array[1..K,1..M] of integer=
     (
      (2,1,3,4),
      (7,1,5,2),
      (4,1,2,5),
      (8,1,8,8),
      (2,1,6,3)
     );
 Var
   Party: array[1..M] of integer;
   i,j:integer;
   maxParty,Posmax:integer;
 begin
  for i:=1 to K do begin
    Posmax:=1;
     for j:=2 to M do
       if Results[i,j]>Results[i,Posmax]
       then Posmax:=j;
     Inc(Party[Posmax]);
  end;
    maxParty:=1;
    for i:=2 to M do
     if Party[i]>Party[maxParty]
      then maxParty:=i;
     writeln('Party#', maxParty);
     readln;
end.



А вот попытка сделать её в Си :


#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int main()
{
const int K=5;
const int M=4;
int Results[0..K][0..M]={ {2,1,3,4},
{7,1,5,2),
{4,1,2,5},
{8,1,8,8},
{2,1,6,3}
};
int Party[M];
int i,j;
int maxParty,Posmax;
for(i=1; i<K; i++)
Posmax=1;
for(j=2; j<M; j++)
{
if( Results[i][j]> Results[i,Posmax])
Posmax=j;
Party[Posmax]++;
}
maxParty=1;
for(i=2; i<M; i++)
{ if( Party[i]>Party[maxParty])
maxParty=i;

}

cout<<"Party#"<<maxParty<<endl;

return 0;
}
Merlin
Извините что вопрос не в тему , но всё же :
-------

Есть ли в С, С++ что нибудь наподобие множеств...или это дело надо объявлять через массив символов ?
volvo
Структуру программы зачем перековеркал?
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int main() {

  const int K = 5;
  const int M = 4;
  int Results[K][M] = {
	{2,1,3,4},
	{7,1,5,2},
	{4,1,2,5},
	{8,1,8,8},
	{2,1,6,3}
  };

  int Party[M] = {0};
  int maxParty;

  for(int i=0; i<K; i++) {
	int Posmax = 0;
	for(int j=1; j<M; j++)
	  if(Results[i][j] > Results[i][Posmax]) Posmax = j;

	Party[Posmax]++;
  }

  maxParty = 0;
  for(i=1; i<M; i++)
	if(Party[i] > Party[maxParty]) maxParty = i;

  cout << "Party #" << maxParty + 1 << endl;
  return 0;
}

(проверялось на TC++ 3.0)

Насчет множеств - в C++ есть замена. В STL... Но это - смотря какой у тебя компилятор.
Merlin
Спасибо за такой быстрый ответ, у меня компилятор TC++ 3.0 .
volvo
Тогда о готовых решениях забудь - в TC++ 3.0 тебе придется все делать ручками...
Merlin
Ну ничего..у меня тут ещё около 5 дисков лежат... good.gif Поставлю ещё что нибудь
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.