Вроде сам смог написать, помогите баги найти пожалуйста. Code: program matrix1; // Программа считает колличество нулевых // элементов матри8цы A ограниченных // единичными. // Автор Ремень И.В.(ИУ7-12) {$APPTYPE CONSOLE} uses SysUtils; const Size = 8; var I, J: Integer; { Переменные цикла } Num: Integer; { Переменная результата } Reading: Boolean; { True - считывать } StartFrom, StopAt: Integer; { Начало и конец цикла } term: array[1..8] of Integer; { Колличество прерывающих последовательностей } k: Integer; { Временная переменная } // Выходная матрица A: array[1..Size, 1..Size] of Integer = ((0, 1, 1, 1, 0, 1, 1, 1), (0, 1, 0, 1, 0, 1, 0, 1), (0, 1, 0, 1, 0, 1, 0, 1), (0, 1, 0, 1, 1, 1, 0, 1), (0, 1, 0, 0, 0, 0, 0, 1), (0, 1, 0, 1, 1, 1, 0, 1), (0, 1, 1, 1, 0, 1, 1, 1), (0, 0, 0, 0, 0, 0, 0, 0)); begin // Инициализация значений Num := 0; Reading := false; StartFrom := -1; StopAt := -1; for I := 1 to Size do Term[i] := 0; // Рассчет начала и конца главного цикла for I := 1 to Size do begin for J := 1 to Size do begin if (a[i,j] = 1) and (StartFrom = -1) then StartFrom := i; if a[i,j] = 1 then begin StopAt := i; continue; end; end; end; StopAt := StopAt - 1; StartFrom := StartFrom + 1; //Рассчет колличества терминирующих последовательностей for I := 1 to Size do for J := 1 to Size do if (A[I,J] = 1) and (A[I,J+1]=0) then Term[i] := Term[i] + 1; //Вывод матрицы A WriteLn('Матрица A:'); for I := 1 to Size do begin for J := 1 to Size do Write(A[I, J]:3); WriteLn; end; WriteLn; // Выволнение подсчета нулевых элементов между единичными for I := StartFrom to StopAt do begin K := 0; Reading := False; for J := 1 to Size - 1 do begin if (A[I, J] = 0) and (Reading = True) then begin Num := Num + 1; A[i,j] := 2; end; if (A[I, J] = 1) and (Reading = False) and (A[I, J+1] = 0) then begin Reading := True; K := K + 1; end else begin if (A[I, J] = 1) and (Reading = True) and (A[I, J+1] = 0) then begin Reading := False; K := K + 1; end; if (A[I, J] = 1) and (Reading = False) and (A[I, J+1] = 0) and (K = 2) and (term[i] = 3) then Reading := True; end; end; end; //Вывод матрицы A WriteLn('Матрица A:'); for I := 1 to Size do begin for J := 1 to Size do Write(A[I, J]:3); WriteLn; end; WriteLn; WriteLn('Огорожено единицами ', Num, ' нулевых элементов'); ReadLn; end.
Всем привет! Помогите с кодом. есть 2 txt файла, в которых содержатся элементы квадртаной матрицы( размер матрицы произвольный) мне нужно считать элементы из каждого файла, чтобы дальше работать с этими матрицами. Спасибо
набросал процедурку, но не проверял: Code: ------------------------------------------ type matrix = array[1..100, 1..100] of real; --------------------------------------------- procedure ReadFileToArray(filename:string; var a:matrix); var f:TextFile; i,j:integer; c:real; begin assignfile(f, filename); reset(f); j:=1; while not eof(f) do begin i:=1; while not eoln(f) do begin read(f, c); a[i,j]:=c; inc(i); end; readln(f); inc(j); end; end;
добрый вечер. напишите пожалуйста программу. С или С++ Дан массив X, создайте массив Y, состоящий из элементов, имеющих четные номера и массив Z, состоящий из элементов, имеющих нечетные номера. Выведите массивы Y и Z на экран.
в каком месте не верно? Посчитай на калькуляторе, потом посмотри, что выводит программа. Потом скажи мне, что там не верно.
Такой вопрос появился: Есть массив чисел количества N. [a0,a1,a2.....aN] Вывести пару имеющую минимальную сумму.
Ой, забыл уточнить. Извините. На чистом Си и без функций :C Просто саму логику в двух словах бы. Местами менять нельзя элементы. Скорее всего понадобится и их индексов вывод.
ну самый простой алгоритм думаю такой,перебор: сравниваем первый элемент с последующими,если находится меньшее число,запоминаем первый и сравниваем оставшиеся элементы с найденным числом и так далее
я тебя не понимаю уже,нормально напиши задание. как найти два наименьших числа я написал.находишь их-это и есть пара,имеющая минимальную сумму.
Примерно так: Code: #include <stdio.h> #define n 50 void main() { int i,x,y, X[] = {1,2,3,4,5}, Y[n], Z[n]; for (i=0,x=0,y=0; i<sizeof(X)/sizeof(X[0]); i++) (i%2 == 0) ? (Y[x++]=X[i]) : (Z[y++] = X[i]); for (i=0; i<x; i++) printf("Y[%d] = %d\n",i,Y[i]); printf("\n"); for (i=0; i<y; i++) printf("Z[%d] = %d\n",i,Z[i]); } Но учти, что в этом примере четный начинается с нуля, т.е. элементы 1, 3 и 5 имеют четные индексы(0,2,4 соотв.). Это чтоб путаницы не возникло (мало-ли).
Code: #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <conio.h> #include <stdio.h> //--------------------------------------------------------------------------- #pragma argsused int main() { int i,j; int X[20]={2,6,4,7,2,7,2,-4,8,5,0,12,4,35,568,14,543,25,-2,-4}; int Y[10]; int Z[10]; cout<<"Элементы с нечетными номерами:"<<endl<<endl; for (i = 0; i<20; i++) { if (i%2) { Z[i]=X[i]; cout<<Z[i]<<endl; } } cout<<endl; cout<<"Элементы с четными номерами:"<<endl<<endl ; //включая нулевой элемент for (j = 0; j < 20; j++) { if (!(j%2)) { Z[j]=X[j]; cout<<Z[j]<<endl; } } getch(); return 0; }
becensed, JohnnyBGoode спасибо парни, все работает а по этому коду что можете сказать Code: #include <iostream> using namespace std; void main() { int n; cout<<"введите длину массива"; cin>>n; int *ms = new int[n]; if(n%2) { int n1 = n / 2; int *ms1 = new int[n1]; int n2 = n / 2; int *ms2 = new int[n2]; } else { int n1 = n / 2 + 1; int *ms1 = new int[n1]; int n2 = n / 2; int *ms2 = new int[n2]; } for(int i=0;i<n;i++) { cout<<"элемент массива"; cin>>ms[i]; if(i%2) { ms1[i/2] = ms[i]; } else ms2[i/2+1] = ms[i]; } // вывести какнибудь эти ms1, ms2 }
Подскажите, все же, пожалуйста. элементы матрицы в txt файле имеют следующий вид: пример открыл я файл, создал поток ifstream m1; m1.open("m1.txt",ios::in); каким образом мне дальше определить размерность массива? т.к. она может меняться затем я так понимаю нужно создавать динамичиский массив и считывать элементы...