Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Нужна помощь. Массивы. С++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Нужна помощь. Массивы. С++
Имя
Сообщение << Старые топики   Новые топики >>
Нужна помощь. Массивы. С++ - 2010-10-21 14:49:28.060000   
udde

Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
В одномерном массиве, состоящем из n целочисленных элементов, вычеслить:
1) произведение элементов массива с четными номерами;
2) сумму элеентов массива, расположенных между первым и последними нулевыми элементами;
3) преобразовать массив таким образом, чтобы сначала распологались все положительные элементы, а потом все отрицательные (элементы, равные нулю, считать положительными)

И надо сделать чтоб на экран выводило меню выбора здачи…

Вот код задачи. Пытался сделать и нечего не вышло=(((

#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #define SIZE 10 void main() { int a[SIZE]; int b[SIZE]; int n=0; int i; int pr=1; int z1; int z2; int sum=0; int m=9; int otv1; int otv; m: printf("\n Vvedite massiv celih chisel"); printf("\n Posle vvoda kazhdogo chisla"); printf("\n Nazhimaite &lt;enter&gt;\n") for (i=0;i&lt;SIZE;i++) { printf("a[%i]-&gt;",i); scanf("%i",&a[i]); if (a[i] % 2 == 0 && a[i]!=0) pr=pr*a[i]; } printf("Vi vveli massiv-&gt;\n"); for (i=o;i&lt;SIZE;i++) printf("%i",a[i]); printf("|\n"); printf("\n Vvedite nomer zadachi (1,2,3)"); printf("\n 1 - Proizvedenie chetnih chisel; \n2 - Summa chisel mezhdy nylyami; \n3 - preobrazovanie massiva"); scanf("%i",&otv1); if (otv1==1) goto m1; if (otv1==2) goto m2; if (otv1==3) goto m3; else { printf("Oshibka"); goto m; } m1; printf("Proizvedenie chetnih elementov = %i",pr); goto m4; m2; for (i=0;i&lt;SIZE;i++) { if (a[i]==0) { z1=j; break; } for (i=0;i&lt;SIZE;i++) { if (a[9-i]==0) { z2=i; break; } for (i=z1;i&lt;-z2;i++) { sum=sum+a[i]; } printf("\n Summa elementov - %i",sum); goto m4; m3; printf("\n----------------------------------------------"); printf("\n--------Preobrazovanie massiva--------"); for (i=0;i&lt;SIZE;i++) { if (a[i]&gt;-0) { b[n]=a[i]; n=n+1; }} for (i=0;i&lt;SIZE;i++) { if (a[i]&lt;0) { b[m]=a[i]; m=m-1; } } for (i0;i&lt;SIZE;i++) printf("n%i",b[i]); m4; printf("\n Poprobivat eshe raz?"); printf("\n 1 - Da, 2 - Net,"); scanf("%i",&otv); if (otv==1) goto m; getch(); }
Помогите пожалуйсто. Заранье благодорю.
Post #: 1
RE: Нужна помощь. Массивы. С++ - 2010-10-21 17:17:22.650000   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
Код оформлять научился бы. Пробелы вставлять. Трудно читается.

1)

int a[200]; int i, summ = 0; for(i=0;i&lt;200;i++) if(i % 2 == 0) summ += a[i]; printf("sum == %d", summ);
2)
int a[200]; int i, summ, i1, i2; for(i=0;i&lt;200;i++) if(a[i] == 0) { i1 = i; break; } for(i=i1+1;i&lt;200;i++) if(a[i] == 0) i2 = i; summ = 0; for(i=i1;i&lt;i2;i++) summ += a[i]; printf("summ == %d\n", summ);
Post #: 2
RE: Нужна помощь. Массивы. С++ - 2010-10-21 21:50:23.573333   
SkyLinE215

Сообщений: -986
Оценки: 0
Присоединился: 2007-08-27 10:25:44.570000
3)

int a[200]; int i, gn=0, bn=0, c=0; int g[200], b[200]; for (i=0;i&lt;200;i++)if(a[i]%2!=0){g[gn]=a[i];gn++} else{b[bn]=a[i];bn++;} for (i=0;i&lt;=gn;i++) a[i]=g[i]; for (i=gn+1;i&lt;bn+gn;i++){ a[i]=b[c];c++;} for (i=0;i&lt;200;i++) printf("mass = %d\n", a[i]);
Post #: 3
RE: Нужна помощь. Массивы. С++ - 2010-10-21 22:50:54.706666   
udde

Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
Извините я не опытный в этом деле. Вот только начел изучать с++. Не могли бы вы это все слепить и сделать меню как сделано в моем коде.
Post #: 4
RE: Нужна помощь. Массивы. С++ - 2010-10-22 12:08:04.913333   
EugeneS

Сообщений: 10
Оценки: 0
Присоединился: 2010-09-27 03:34:16.640000

quote:

ORIGINAL: udde
if (otv1==1) goto m1; if (otv1==2) goto m2; if (otv1==3) goto m3; else....

Никогда не используй goto!!!!!!!!!!!!!
Post #: 5
RE: Нужна помощь. Массивы. С++ - 2010-10-22 12:12:34.326666   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
quote:

Никогда не используй goto


Почему?
Post #: 6
RE: Нужна помощь. Массивы. С++ - 2010-10-22 15:51:43.530000   
EugeneS

Сообщений: 10
Оценки: 0
Присоединился: 2010-09-27 03:34:16.640000
http://www.drupal.ru/files/php-goto.png

Даже потому, что код становиться трудночитаемый.
А вообще goto игнорирует границы циклов, функций и прочих блоков, что может повлиять на использование памяти переменных и их значений. Короче говоря, например, есть шанс, что ты обратишься к переменной, которая еще не проинициализирована и тогда… будет грустно… А если это еще программа - не лабораторная работа в универе, а серьезный проект….
Не нужно привыкать его использовать, он просто заменяется и код без него намного корректней..
Post #: 7
RE: Нужна помощь. Массивы. С++ - 2010-10-22 15:57:26.086666   
EugeneS

Сообщений: 10
Оценки: 0
Присоединился: 2010-09-27 03:34:16.640000
udde

Если ты используешь Visual C++, то смогу тебе помочь сегодня вечером, с очень красивой консольной менюшкой…
Может и не только в VC будет работать, я просто не пробовал………
Post #: 8
RE: Нужна помощь. Массивы. С++ - 2010-10-22 22:59:12.076666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Sunzer
quote:

Никогда не используй goto

Почему?

Есть религия Дейкстры, запрещающая правоверным использовать goto.
Post #: 9
RE: Нужна помощь. Массивы. С++ - 2010-10-25 17:05:59.303333   
udde

Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
Сделал первую и вторую задачу, а вот с третьей проблема=(
Надо сделать чтобы сначала распологались все положительные элементы, а потом все отрицательные… а у меня только 0 распологаются в конец, а отрицательные нет.
Помогите пожалуйста, код рабочий!


#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; int mas[100]; int size, temp, temp_size, i, j; int min, sum; char step; int pro; int k1; int k2; int main() { step0: clrscr(); cout &lt;&lt; "1. Proizvedenie 4etnih 4isel\n"; cout &lt;&lt; "2. Summa mejdu dvumya nulyami\n"; cout &lt;&lt; "3. Perenesti vse nuli v konec\n"; cout &lt;&lt; "4. Konec programmi\n"; cout &lt;&lt; "vibrat' punkt menu\n"; cin &gt;&gt; step; if (step == '1') goto step1; if (step == '2') goto step2; if (step == '3') goto step3; if (step == '4') goto step4; goto step0; step1: clrscr(); cout &lt;&lt; "zadacha #1: proizvedenie 4isel s 4etnimi nomerami\n" ; cout &lt;&lt; "vvedine razmer posledovatelnosti\n"; cin &gt;&gt; size; cout &lt;&lt; "vvedite elementy\n"; for (i = 0; i &lt; size; i++) { cin &gt;&gt; temp; mas[i] = temp; } pro=1; for (i = 0; i &lt; size; i++) if (i%2==0)pro=pro*mas[i]; cout &lt;&lt; "proizvedenie = " &lt;&lt; pro &lt;&lt; "\n"; cout &lt;&lt; "vernutsy v nachalo y/n ?\n"; cin &gt;&gt; step; if (step == 'y') goto step0; else goto step4; step2: clrscr(); cout &lt;&lt; "zadacha #2: summu mejdu nulyami\n" ; cout &lt;&lt; "vvedine razmer posledovatelnosti\n"; cin &gt;&gt; size; cout &lt;&lt; "vvedite elementy\n"; for (i = 0; i &lt; size; i++) { cin &gt;&gt; temp; mas[i] = temp; } sum = 0; k1=0; k2=0; for (i = 0; i &lt; size; i++) if(mas[i]==0){k1=i;goto m10;} m10: cout&lt;&lt;" pos 1ogo 0="&lt;&lt;k1&lt;&lt;"\n"; for(i=0; i&lt;size; i++) if(mas[i]==0) k2=i; cout&lt;&lt;" pos 2ogo 0="&lt;&lt;k2&lt;&lt;"\n"; for(i=k1+1; i&lt;k2; i++) sum=sum+mas[i]; cout &lt;&lt; "sum = " &lt;&lt; sum &lt;&lt; "\n"; cout &lt;&lt; "vernutsy v nachalo y/n ?\n"; cin &gt;&gt; step; if (step == 'y') goto step0; else goto step4; step3: clrscr(); cout &lt;&lt; "zadacha #3: vse nuli perenesti v konec\n"; cout &lt;&lt; "vvedite razmer\n"; cin &gt;&gt; size; cout &lt;&lt; "vvedite el-ti massiva\n"; for (i = 0; i &lt; size; i++) cin &gt;&gt; mas[i]; temp_size = size; for (i = 0; i &lt; temp_size; i++) { if (mas[i] == 0) { for (j = i; j &lt; size - 1; j++) { mas[j] = mas[j+1]; } mas[j] = 0; temp_size--; i--; } } cout &lt;&lt; "Poluchennii massiv: \n"; for (i = 0; i &lt; size; i++){ cout &lt;&lt; mas[i] &lt;&lt; " "; } cout &lt;&lt; "\nvernutsy v nachalo y/n ?'\n"; cin &gt;&gt; step; if (step == 'y') goto step0; else goto step4; step4: return 0; }
Post #: 10
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Нужна помощь. Массивы. С++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.