Нужна помощь. Массивы. С++
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Нужна помощь. Массивы. С++ - 2010-10-21 14:49:28.060000
|
|
|
udde
Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
|
В одномерном массиве, состоящем из n целочисленных элементов, вычеслить: 1) произведение элементов массива с четными номерами; 2) сумму элеентов массива, расположенных между первым и последними нулевыми элементами; 3) преобразовать массив таким образом, чтобы сначала распологались все положительные элементы, а потом все отрицательные (элементы, равные нулю, считать положительными) И надо сделать чтоб на экран выводило меню выбора здачи… Вот код задачи. Пытался сделать и нечего не вышло=((( #include <stdio.h>
#include <conio.h>
#include <iostream.h>
#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 <enter>\n")
for (i=0;i<SIZE;i++)
{
printf("a[%i]->",i);
scanf("%i",&a[i]);
if (a[i] % 2 == 0 && a[i]!=0)
pr=pr*a[i];
}
printf("Vi vveli massiv->\n");
for (i=o;i<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<SIZE;i++)
{
if (a[i]==0)
{
z1=j;
break;
}
for (i=0;i<SIZE;i++)
{
if (a[9-i]==0)
{
z2=i;
break;
}
for (i=z1;i<-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<SIZE;i++)
{
if (a[i]>-0)
{
b[n]=a[i];
n=n+1;
}}
for (i=0;i<SIZE;i++)
{
if (a[i]<0)
{
b[m]=a[i];
m=m-1;
}
}
for (i0;i<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();
} Помогите пожалуйсто. Заранье благодорю.
|
|
|
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<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<200;i++) if(a[i] == 0)
{
i1 = i;
break;
}
for(i=i1+1;i<200;i++) if(a[i] == 0) i2 = i;
summ = 0;
for(i=i1;i<i2;i++) summ += a[i];
printf("summ == %d\n", summ);
|
|
|
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<200;i++)if(a[i]%2!=0){g[gn]=a[i];gn++}
else{b[bn]=a[i];bn++;}
for (i=0;i<=gn;i++)
a[i]=g[i];
for (i=gn+1;i<bn+gn;i++){
a[i]=b[c];c++;}
for (i=0;i<200;i++)
printf("mass = %d\n", a[i]);
|
|
|
RE: Нужна помощь. Массивы. С++ - 2010-10-21 22:50:54.706666
|
|
|
udde
Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
|
Извините я не опытный в этом деле. Вот только начел изучать с++. Не могли бы вы это все слепить и сделать меню как сделано в моем коде.
|
|
|
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!!!!!!!!!!!!!
|
|
|
RE: Нужна помощь. Массивы. С++ - 2010-10-22 12:12:34.326666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
Никогда не используй goto Почему?
|
|
|
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 игнорирует границы циклов, функций и прочих блоков, что может повлиять на использование памяти переменных и их значений. Короче говоря, например, есть шанс, что ты обратишься к переменной, которая еще не проинициализирована и тогда… будет грустно… А если это еще программа - не лабораторная работа в универе, а серьезный проект…. Не нужно привыкать его использовать, он просто заменяется и код без него намного корректней..
|
|
|
RE: Нужна помощь. Массивы. С++ - 2010-10-22 15:57:26.086666
|
|
|
EugeneS
Сообщений: 10
Оценки: 0
Присоединился: 2010-09-27 03:34:16.640000
|
udde Если ты используешь Visual C++, то смогу тебе помочь сегодня вечером, с очень красивой консольной менюшкой… Может и не только в VC будет работать, я просто не пробовал………
|
|
|
RE: Нужна помощь. Массивы. С++ - 2010-10-22 22:59:12.076666
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: Sunzer quote:
Никогда не используй goto Почему? Есть религия Дейкстры, запрещающая правоверным использовать goto.
|
|
|
RE: Нужна помощь. Массивы. С++ - 2010-10-25 17:05:59.303333
|
|
|
udde
Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
|
Сделал первую и вторую задачу, а вот с третьей проблема=( Надо сделать чтобы сначала распологались все положительные элементы, а потом все отрицательные… а у меня только 0 распологаются в конец, а отрицательные нет. Помогите пожалуйста, код рабочий! #include <iostream.h>
#include <conio.h>
#include <stdlib.h>
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 << "1. Proizvedenie 4etnih 4isel\n";
cout << "2. Summa mejdu dvumya nulyami\n";
cout << "3. Perenesti vse nuli v konec\n";
cout << "4. Konec programmi\n";
cout << "vibrat' punkt menu\n";
cin >> 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 << "zadacha #1: proizvedenie 4isel s 4etnimi nomerami\n" ;
cout << "vvedine razmer posledovatelnosti\n";
cin >> size;
cout << "vvedite elementy\n";
for (i = 0; i < size; i++) {
cin >> temp;
mas[i] = temp;
}
pro=1;
for (i = 0; i < size; i++)
if (i%2==0)pro=pro*mas[i];
cout << "proizvedenie = " << pro << "\n";
cout << "vernutsy v nachalo y/n ?\n";
cin >> step;
if (step == 'y')
goto step0;
else
goto step4;
step2:
clrscr();
cout << "zadacha #2: summu mejdu nulyami\n" ;
cout << "vvedine razmer posledovatelnosti\n";
cin >> size;
cout << "vvedite elementy\n";
for (i = 0; i < size; i++) {
cin >> temp;
mas[i] = temp;
}
sum = 0;
k1=0;
k2=0;
for (i = 0; i < size; i++)
if(mas[i]==0){k1=i;goto m10;}
m10:
cout<<" pos 1ogo 0="<<k1<<"\n";
for(i=0; i<size; i++)
if(mas[i]==0) k2=i;
cout<<" pos 2ogo 0="<<k2<<"\n";
for(i=k1+1; i<k2; i++)
sum=sum+mas[i];
cout << "sum = " << sum << "\n";
cout << "vernutsy v nachalo y/n ?\n";
cin >> step;
if (step == 'y')
goto step0;
else
goto step4;
step3:
clrscr();
cout << "zadacha #3: vse nuli perenesti v konec\n";
cout << "vvedite razmer\n";
cin >> size;
cout << "vvedite el-ti massiva\n";
for (i = 0; i < size; i++)
cin >> mas[i];
temp_size = size;
for (i = 0; i < temp_size; i++) {
if (mas[i] == 0) {
for (j = i; j < size - 1; j++) {
mas[j] = mas[j+1];
}
mas[j] = 0;
temp_size--;
i--;
}
}
cout << "Poluchennii massiv: \n";
for (i = 0; i < size; i++){
cout << mas[i] << " ";
}
cout << "\nvernutsy v nachalo y/n ?'\n";
cin >> step;
if (step == 'y')
goto step0;
else
goto step4;
step4:
return 0;
}
|
|
|
|
|