Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Закрытая тема
 
Опции темы Опции просмотра
Старый 21.06.2009, 19:13   #111 (permalink)
Sektor
Новичок
 
Регистрация: 19.06.2009
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Владимир

да обязательно
Sektor вне форума  
Старый 21.06.2009, 19:28   #112 (permalink)
shutti
Новичок
 
Регистрация: 21.06.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Люди помогите решить задачи на PASCAL-е. Заранее спосибо.

1) Дан файл, содержащий текст. Определить, сколько раз встречается в нем самое короткое слово.

2)Дан массив, содержащий как положительные, так и отрицательные числа. Сформировать массив, содержащий только положительные элементы исходного массива.

3)Напишите программу с подпрограммой для ввода с клавиатуры отрицательных чисел и возвращения количества введенных чисел и их суммы. Работа должна завершиться, когда вводится положительное число.
shutti вне форума  
Старый 21.06.2009, 19:41   #113 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 112676
По умолчанию

Цитата:
Сообщение от Sektor Посмотреть сообщение
да обязательно
Ладно. Вот вариант с подпрограммой:

CONST
N=8;
Max:INTEGER=100;

TYPE
AR=ARRAY[1..100] of INTEGER;

VAR
A,B:AR;
i:INTEGER;

PROCEDURE Search_Order(As:AR; Ns,MaxS:INTEGER; VAR Bs:AR);
VAR
Min,i,j,Jmin:INTEGER;
BEGIN
FOR i:=1 TO Ns DO
BEGIN
Min:=MaxS;
FOR j:=1 TO Ns DO
IF As[j]<Min THEN
BEGIN
Bs[i]:=As[j];
Jmin:=j;
Min:=As[j];
END;
As[Jmin]:=MaxS;
END;
END;

BEGIN
Randomize;
FOR i:=1 TO N DO
BEGIN
A[i]:=Random(Max)-(Max div 2);
Write(A[i]:4);
END;
Writeln;
Search_Order(A,N,Max,B);
FOR i:=1 TO N DO Write(B[i]:4);
Writeln;
Readln;
END.
Vladimir_S вне форума  
Старый 21.06.2009, 20:24   #114 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Цитата:
Сообщение от Революционерка Посмотреть сообщение
А не могли бы вы посмотреть вот такую еще задачку. Тоже в C.
Дан текст из нескольких строк. Составить слово из последних букв слов k-ой строки.
Заранее спасибо)
Цитата:
Сообщение от Революционерка Посмотреть сообщение
csbwalker
Да, просто взять набор букв))Текст надо с клавиатуры вводить)
Вот, как-то так)
Код:
#include <STDIO.H>
#include <STRING.H>
#include <STDLIB.H>

void makeWord(char *str, char *result)
{
char *w, d[] = " ";
int i = 0;

        for(w = strtok(str, d); w != NULL; w = strtok(NULL, d))
                if(strlen(w) != 0)
                        result[i++] = w[strlen(w) - 1];

        result[i] = '\0';
}

void ask(char *message, int *n, int minval, int maxval)
{
int x;
        do
        {
                printf("%s [%d...%d]: ", message, minval, maxval);
                scanf("%d", &x);
        } while((x < minval) || (x > maxval));

        *n = x;
}

int main()
{
char *result, *strings;
int count, maxlen, i, a;

        ask("Введите максимальную длину строки", &maxlen, 1, 200);
        ask("Введите количество строк", &count, 1, 200);

        strings = malloc(count * (maxlen + 1));
        if(strings == NULL)
        {
                printf("Не удалось выделить память для текста\n");
                return 1;
        }

        result = malloc(maxlen + 1);
        if(result == NULL)
        {
                printf("Не удалось выделить память для результата\n");
                return 2;
        }

        for(i = 0; i < count; i++)
        {
                printf("Введите строку %d: ", i + 1);
                fflush(stdin);
                gets(strings + i * maxlen);
        }

        do
        {
                ask("Введите номер строки для генерации слова (0 для выхода)", &a, 0, count);
                if(a == 0)
                        break;

                makeWord(strings + (a - 1) * maxlen, result);
                printf("Результат: <%s>\n", result);
        } while(1);
        printf("Работа завершена!\n");

        return 0;
}
csbwalker вне форума  
Старый 21.06.2009, 20:28   #115 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Цитата:
Сообщение от Eniok Посмотреть сообщение
На плоскости задано множество окружностей (способ задания - координаты центра и радиус). Две окружности А и В назовем связанными, если они пересекаются либо существует третья окружность С заданного множества, связанная с А и В. Выбрать максимальное подмножество попарно не связанных друг с другом окружностей.

Си байлдер... Можно другую разновидность си)
Имеется ввиду C++ Builder? Это не разновидность C, а среда разработки и библиотека для C++.
Итого - какой язык-то должен быть? C или C++?
csbwalker вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 21.06.2009, 21:22   #116 (permalink)
Eniok
Новичок
 
Регистрация: 21.06.2009
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Язык я бы назвал так: С++ без классов, потому что на си надо, но разрешено пользоваться немного средствами с++

Вот мой код:
main.cpp
Код:
/************************Preprocessor's operations***********************/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include "d:\ddz\proc.cpp"
/*****************************Global variables***************************/
FILE *in,*out;                   //Servise variables
char inname[80], outname[80];    //Names of input & output files
int count;                       //Count of circles
int i,j,w;				 //
/******************************Main function*****************************/
int main()
{

	clrscr();
	//Ask the user about name of the input file
	printf("Enter the name of input file, please: ");
	scanf("%s", &inname);
	///////////////////////////////////////////

	//Opening input file
	if ((in = FOpen(inname,"r"))==NULL) return 1;
	////////////////////

	//Reading nomber of circles
	fscanf(in, "%d", &count);
	if (count <1)
	{
		printf("Incorrect format of input file\n");
		fclose(in);
		return 1;
	}
	///////////////////////////
	//Declaring array of CIRCLE
	CIRCLE *circle = new  CIRCLE[count];
	////////////////////////

	//Reading circles information
	printf("Information from input file:\n Count of circles: %i\n",count);
	printf("                                 \n");
	printf("  #     X         Y        R     \n");
	for (i=0;i<count;i++)
	{
		fscanf(in,"%f %f %f", &circle[i].x, &circle[i].y, &circle[i].r);
		printf(" %2i   %5.4f   %5.4f   %5.4f \n",i, circle[i].x,circle[i].y,circle[i].r);
		circle[i].crossflag=0;
	}
	printf("                                 ");
	/////////////////////////////
	//Now test)
	//int **s = new int*[count];
int **s = new int*[count];//тут создали только массив указателей
for(i=0;i<count;++i) s[i]=new int[count];//а вот собственно выделение памяти для элементов массива
for(i=0;i<count;++i) for(j=0;j<count;++j) s[i][j]=0;//обнуление
	for (i=0;i<count;i++) for (j=0;j<count;j++) s[i][j]=0;

	MatrixCreator(s, count, circle);
	printf("\n");
	printf("Matrix of atteinability:\n");
	for (i=0;i<count;i++) {for (j=0;j<count;j++) if (i!=j)printf(" %i",s[i][j]); else printf(" °"); printf("\n");};
	///////////
	getch();
	int *mas=new int[count];

  	Vibor(s, count, mas);
	printf("\n");
	getch();
	for (i=0;i<count;i++) if (mas[i]) printf("%i ", i);
	getch();
	///////////
for(i=0;i<count;++i) delete [] s[i];
delete [] s;
	return 0;
}
proc.cpp
Код:
//Declaring new data type
struct CIRCLE {
    float x, y, r;
    char crossflag;
};
int j1, k1,l,i2;
/////////////////////////
//Folloving we'll have dinamic array of one
/*******************************Opening file****************************/
FILE *FOpen(char *path, char *reg)
{
	FILE *name;
	if ((name = fopen(path,reg))!=NULL) return name;
	printf("Unable to open file '%s'",path);
	return NULL;
}
/*Tests crossing of 2 circles*/
int test(CIRCLE c1,CIRCLE c2)
{
	//printf("%i %i %i %i %i %i", c1.x, c1.y, c1.r, c2.x, c2.y, c2.r);
	if ( sqrt( (fabs(c1.x-c2.x)*fabs(c1.x-c2.x))+(fabs(c1.y-c2.y)*fabs(c1.y-c2.y)))  <(c1.r+c2.r)) return 1;
	return 0;
}
/////
int test2(CIRCLE c1, CIRCLE c2)
{
	if (((sqrt( ((c1.x-c2.x)*(c1.x-c2.x))+((c1.y-c2.y)*(c1.y-c2.y)))+c1.r)<c2.r)||( (sqrt( ((c1.x-c2.x)*(c1.x-c2.x))+((c1.y-c2.y)*(c1.y-c2.y)))+c2.r)<c1.r))
	return 0;
	return 1;
}
int MatrixCreator(int **s, int n, CIRCLE *circle)
{
	int i2,j2,k2;
	for (i2=0;i2<n;i2++)
		for (j2=0; j2<n; j2++)
			if(i2!=j2)
			 if (test (circle[i2],circle[j2]))
			  if (test2(circle[i2],circle[j2])) s[i2][j2]=5    ;

//	for (i2=0;i2<n;i2++)
//		for (j2=0;j2<n;j2++)
//			for (k2=0;k2<n;k2++)
//				if (i2!=j2)
//				 if(s[k2][i2] && s [j2][k2])
//				  s[j2][i2]=4;
//        for (i2=1;i2<n;i2++) for (j2=1; j2<n; j2++) s[n-j2][i2]= s[i2][n-j2];
	for (k2=0;k2<n;k2++)
		for (i2=0;i2<n;i2++)
			for (j2=0;j2<n;j2++)
				s[i2][j2] = s[i2][j2] || (s[i2][k2] && s[k2][j2]);
	return 0;
}
/*int Vibor(int **s, int i, int *mas, int*w, int n)
 {
	for (j1=0;j1<n;j1++)
		///for(k1=0;k1<n;k1++)
		///	if(!s[j1][k1])
		///		{
		///			mas[*w++]=k1;
		///			Vibor(s,k1,mas,w,n);
		///		}
		k1=1;
		for(l=0;l<*w;l++)
		if (j1==mas[l]) k1=0;
		if ((!k1)||(s[i][j1]==0))
		{       *w++;
			mas[*w]=j1;
			Vibor(s,j1,mas,w,n);

		}
 }
  */
  void  Vibor(int **s, int n, int *mas)
  {//     int l=-1;
	int *flags = new int[n];
	for (i2=0;i2<n;i2++) flags[i2] = mas[i2] = 0;
	l2:
	for (i2=0;i2<n;i2++)
		if (!flags[i2])
			{
				flags[i2]= mas[i2]=1;
				for (j1=0;j1<n;j1++)
					if (s[i2][j1]) flags[j1]=1;

			}
	 for (i2=0;i2<n; i2++)
	 if (!flags[i2]) goto l2;

  }
Только функция Vibor не верна(
Eniok вне форума  
Старый 21.06.2009, 22:44   #117 (permalink)
Sektor
Новичок
 
Регистрация: 19.06.2009
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибочки огромное Владимир!!!Вы мне очень помогли!!!
Sektor вне форума  
Старый 22.06.2009, 10:57   #118 (permalink)
shutti
Новичок
 
Регистрация: 21.06.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вторую решил , с функицией проблемы и с файлом.
shutti вне форума  
Старый 22.06.2009, 11:31   #119 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 112676
По умолчанию

Цитата:
Сообщение от shutti Посмотреть сообщение
Вторую решил , с функицией проблемы и с файлом.
С файлом - понятно. Попробую, когда посвободнее буду. А вот что за "функиция" - не понял. Вроде как в задачах 1 и 3 никакая "функиция" не упоминается.
Vladimir_S вне форума  
Старый 22.06.2009, 11:32   #120 (permalink)
Бракс
Новичок
 
Регистрация: 22.06.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Здравствуйте помогите пожалуйста срочно решить паскалевские задачи!
1)Дан файл, содержащий текст, и некоторые буквы. Найти слово, содержащее наибольшее количество указанных букв.
2)Среди работников данного предприятия найти тех, чья заработ¬ная плата за месяц ниже средней по предприятию, а также распеча¬тать список тех, кто проработал на предприятии более 10 лет, с ука¬занием их фамилии, зарпла-ты, стажа работы и должности.
3)Даны два массива. Найти число различных элементов и указать их порядковые номера. Если таковых не имеется – сообщить об этом.

За ранее большое спасибо!!!
Бракс вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Закрытая тема

Метки
задачи по информатике, помощь, решение задач, студент

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 00:26.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.