21.06.2009, 19:28 | #112 (permalink) |
Новичок
Регистрация: 21.06.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Люди помогите решить задачи на PASCAL-е. Заранее спосибо.
1) Дан файл, содержащий текст. Определить, сколько раз встречается в нем самое короткое слово. 2)Дан массив, содержащий как положительные, так и отрицательные числа. Сформировать массив, содержащий только положительные элементы исходного массива. 3)Напишите программу с подпрограммой для ввода с клавиатуры отрицательных чисел и возвращения количества введенных чисел и их суммы. Работа должна завершиться, когда вводится положительное число. |
21.06.2009, 19:41 | #113 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ладно. Вот вариант с подпрограммой:
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. |
21.06.2009, 20:24 | #114 (permalink) | ||
Member
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
|
Цитата:
Цитата:
Код:
#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; } |
||
21.06.2009, 20:28 | #115 (permalink) | |
Member
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
|
Цитата:
Итого - какой язык-то должен быть? C или C++? |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
21.06.2009, 21:22 | #116 (permalink) |
Новичок
Регистрация: 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; } Код:
//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; } |
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
|
Метки |
задачи по информатике, помощь, решение задач, студент |
|
|