Форум: Форум C++Разное
Новые темы: 00
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перемножить элементы массива
 
 автор: ols   (05.09.2007 в 12:43)   письмо автору
 
 

дан одномерный массив и необходимо перемножить все его элементы
я сделал так

#include <iostream.h>
void vvod(int n,int array[]);
int proizved(int n,int array[],int rez);
void vivod(int k);
main(){
int n,array[100],rez=1,k;
cout<<"n=";
cin>>n;
vvod(n,array);
k=proizved(n,array,rez);
vivod(k);
return 0;}
void vvod(int n,int array[]){
for(int i=0;i<n;i++){
cout<<"array["<<i<<"]=";
cin>>array[i];}}
int proizved(int n,int array[],int rez){
for(int i=0;i<n;i++){
rez*=array[i];}}
void vivod(int k){
cout<<"rez="<<k<<endl;}

полночи просидел уже неуспеваю, помгите найти ошибку.

и второй вопрос
В массиве А[n] записаны оценки экзаменующихся, полученные на первом экзамене. как подсчитать, сколько человек не допущено ко второму экзамену? Я тут понял необходимо использовать цикл while?

  Ответить  
 
 автор: cheops   (05.09.2007 в 12:57)   письмо автору
 
   для: ols   (05.09.2007 в 12:43)
 

Хм... у вас явно не хватает двух завершающих фигурных кавычек
  #include <iostream.h>

  void vvod(int n,int array[]);
  int proizved(int n,int array[],int rez);
  void vivod(int k);

  main()
  {
    int n,array[100],rez=1,k;
    cout<<"n=";
    cin>>n;
    vvod(n,array);
    k=proizved(n,array,rez);
    vivod(k);
    return 0;
  }
  void vvod(int n,int array[])
  {
    for(int i=0;i<n;i++)
    {
      cout<<"array["<<i<<"]=";
      cin>>array[i];}}
      int proizved(int n,int array[],int rez)
      {
        for(int i=0;i<n;i++)
        {
          rez*=array[i];
        }
      }

  // Здесь явно не хватает двух завершающих
  // фигурных скобок

  void vivod(int k)
  {
    cout<<"rez="<<k<<endl;
  }

  Ответить  
 
 автор: ols   (05.09.2007 в 13:01)   письмо автору
 
   для: cheops   (05.09.2007 в 12:57)
 

cheops, спсибо=))
немного доработал

#include <iostream.h>
void vvod(int n,int array[]);
int proizved(int n,int array[],int rez);
void vivod(int k);
main(){
int n,array[100],rez=1,k;
cout<<"n=";
cin>>n;
vvod(n,array);
k=proizved(n,array,rez);
vivod(k);
return 0;}
void vvod(int n,int array[]){
for(int i=0;i<n;i++){
cout<<"array["<<i<<"]=";
cin>>array[i];}}
int proizved(int n,int array[],int rez){
for(int i=0;i<n;i++){
rez*=array[i];}
//дописал возврат
return rez;}
void vivod(int k){
cout<<"rez="<<k<<endl;}

  Ответить  
 
 автор: cheops   (05.09.2007 в 13:45)   письмо автору
 
   для: ols   (05.09.2007 в 13:01)
 

Хм... лучше всё-таки использовать отступы - сразу будет видно, где фигурных скобок не хватает. По прежнему нет одной завершающий скобки для функции vvod():
#include <iostream.h>

void vvod(int n,int array[]);
int proizved(int n,int array[],int rez);
void vivod(int k);

main()
{
  int n,array[100],rez=1,k;
  cout<<"n=";
  cin>>n;
  vvod(n,array);
  k=proizved(n,array,rez);
  vivod(k);
  return 0;
}

void vvod(int n,int array[])
{
  for(int i=0;i<n;i++){
  cout<<"array["<<i<<"]=";
  cin>>array[i];}}
  int proizved(int n,int array[],int rez)
  {
    for(int i=0;i<n;i++)
    {
      rez*=array[i];
    }
    //дописал возврат
    return rez;
  }

// Ещё одной фигурной скобки не хватает

void vivod(int k)
{
  cout<<"rez="<<k<<endl;
}

  Ответить  
 
 автор: cheops   (05.09.2007 в 12:58)   письмо автору
 
   для: ols   (05.09.2007 в 12:43)
 

>В массиве А[n] записаны оценки экзаменующихся, полученные на первом экзамене. как
>подсчитать, сколько человек не допущено ко второму экзамену? Я тут понял необходимо
>использовать цикл while?
А какой критерий недопуска? Оценка меньшая или равная 2?

  Ответить  
 
 автор: ols   (05.09.2007 в 13:02)   письмо автору
 
   для: cheops   (05.09.2007 в 12:58)
 

Оценка равна 2

  Ответить  
 
 автор: dima_s_d_s   (05.09.2007 в 13:51)   письмо автору
 
   для: ols   (05.09.2007 в 13:02)
 

С подсчетом кол-ва человек которые не допущено


#include <iostream.h>
void vvod(int n,int array[]);
int proizved(int n,int array[],int rez);
void vivod(int k);
void dvoiki(int n, int array[]);
main(){
int n,array[100],rez=1,k,b;
cout<<"n=";
cin>>n;
vvod(n,array);
k=proizved(n,array,rez);


vivod(k);
dvoiki(n,array);
return 0;}

void vvod(int n,int array[]){
for(int i=0;i<n;i++){
cout<<"array["<<i<<"]=";
cin>>array[i];}}

int proizved(int n,int array[],int rez){
for(int i=0;i<n;i++){
rez*=array[i];}
return rez;}

void dvoiki(int n,int array[])
{int kol=0; 
for(int i=0;i<n;i++)
{if (array[i]<=2) {++kol;} }
cout<<"ne dopushenih="<<kol<<"\n";}

void vivod(int k){
cout<<"rez="<<k<<endl;}

  Ответить  
 
 автор: ols   (09.09.2007 в 21:34)   письмо автору
 
   для: dima_s_d_s   (05.09.2007 в 13:51)
 

Спасибо, теперь вопрос. Мне необходимо заключить этот код ф функцию, затем ее вызвать. Это делается также как и в php? Покажите пример.

  Ответить  
 
 автор: cheops   (05.09.2007 в 14:05)   письмо автору
 
   для: ols   (05.09.2007 в 13:02)
 

Можно отталкиваться от такого приложения
#include <iostream.h>

int main()
{
  int A[] = {1, 2, 4, 4, 5, 2, 3, 5, 3, 2, 3, 1, 4, 5, 3, 4, 5};

  int count = 0;

  for(int i = 0; i < sizeof(A)/sizeof(A[0]); i++)
  {
    if(A[i] <= 2) count++;
  }

  cout << "Количество недопущенных до второго экзамена - " << count;

  return 0;
}

  Ответить  
 
 автор: ols   (09.09.2007 в 21:51)   письмо автору
 
   для: cheops   (05.09.2007 в 14:05)
 

А для чего необходима rez=1,k,b;?

  Ответить  
 
 автор: cheops   (10.09.2007 в 08:56)   письмо автору
 
   для: ols   (09.09.2007 в 21:51)
 

Строка
int n,array[100],rez=1,k,b;

объявляет целочисленные переменные, в том числе и массив array и переменную rez инициированную единицей.

  Ответить  
 
 автор: keefree   (13.09.2007 в 18:06)   письмо автору
 
   для: cheops   (10.09.2007 в 08:56)
 

извините что не в новой теме, но у меня почти подобный вопрос.


#include <iostream.h>

int main()
{
  int M=5
  int A[] = {1, 2, 4, 4, 5, 2, 3, 5, 3, 2, 3, 1, 4, 5, 3, 4, 5};

  int count = 0;

  for(int i = 0; i < M; i++)
  {
    /// Здесь перемножаем элементы массива только те которые больше M и выводим результат.
//Если больше M нет, то выводим сообщение об этом

  }



Как правильно реализовать?
}

  Ответить  
 
 автор: dima_s_d_s   (13.09.2007 в 19:14)   письмо автору
 
   для: keefree   (13.09.2007 в 18:06)
 


#include <iostream.h>

void main ()
{
  int M=5,count = 1;
  int A[] = {1, 2, 4, 4, 5, 2, 3, 5, 3, 2, 3, 1, 4, 5, 3, 4, 5};

for (int i=0; i<sizeof(A)/4; i++) {if (A[i]>M) count*=A[i];}
if (count!=1) {cout<<"перемнож элементы больше "<<M<<" = "<<count;}
else {cout<<"Нет элементов больше "<<M;}

}

  Ответить  
 
 автор: keefree   (18.09.2007 в 01:41)   письмо автору
 
   для: dima_s_d_s   (13.09.2007 в 19:14)
 

Переменую M сделал ввод с клавиатур. А как вводить лементы масива A с клавы? Тоесть, чтобы в программе не задавать в самом коде int A[] = {1, 2, 4, 4, 5, 2, 3, 5, 3, 2, 3, 1, 4, 5, 3, 4, 5};, а вводить с клавы

#include <iostream.h>
void main ()
{
  int M,count = 1;
  cout<<"M=";
  cin>>M;
  int A[] = {1, 2, 4, 4, 5, 2, 3, 5, 3, 2, 3, 1, 4, 5, 3, 4, 5};

for (int i=0; i<sizeof(A)/4; i++) {if (A[i]>M) count*=A[i];}
if (count!=1) {cout<<"перемнож элементы больше "<<M<<" = "<<count;}
else {cout<<"Нет элементов больше "<<M;}

}

  Ответить  
 
 автор: dima_s_d_s   (18.09.2007 в 20:47)   письмо автору
 
   для: keefree   (18.09.2007 в 01:41)
 


void main ()
{
const int size=17; //кол-во элементов (в динамическом массиве можно задавать кол-во элементов с клавиатуры, в нашем случае кол-во элементов должно определяться константой)

  int M=5,count = 1;
  int A[size];
for (int i=0; i<size; i++) {cout<<"A["<<i<<"]= "; cin>>A[i];  if (A[i]>M) count*=A[i];} // заполняем и сразу проверяем на наше условие
if (count!=1) {cout<<"перемнож элементы больше "<<M<<" = "<<count;}
else {cout<<"Нет элементов больше "<<M;}

}

  Ответить  
 
 автор: ols   (09.10.2007 в 21:15)   письмо автору
 
   для: dima_s_d_s   (18.09.2007 в 20:47)
 


#include <iostream.h>
void vvod(int n,int array[]);
int proizved(int n,int array[],int rez);
void vivod(int k);
void dvoiki(int n, int array[]);
main(){
int n,array[100],rez=1,k,b;
cout<<"n=";
cin>>n;
vvod(n,array);
k=proizved(n,array,rez);


vivod(k);
dvoiki(n,array);
return 0;}

void vvod(int n,int array[]){
for(int i=0;i<n;i++){
cout<<"array["<<i<<"]=";
cin>>array[i];}}

int proizved(int n,int array[],int rez){
for(int i=0;i<n;i++){
rez*=array[i];}
return rez;}

void dvoiki(int n,int array[])
{int kol=0; 
for(int i=0;i<n;i++)
{if (array[i]<=2) {++kol;} }
cout<<"ne dopushenih="<<kol<<"\n";}

void vivod(int k){
cout<<"rez="<<k<<endl;}

А можно ли этот пример в виде класса описать?

  Ответить  
 
 автор: ols   (11.10.2007 в 16:41)   письмо автору
 
   для: ols   (09.10.2007 в 21:15)
 

Написал первый свой класс, правда сырой.
В классе есть еще ошибки. При написании класса опирался на учебник, перечитывал многократно, пытаясь понять суть.

#include <iostream.h>
int n;
class Mas
{
private:
    int array[100], int rez, int k;

public:

void vvod();
int proizved();
void vivod();
void dvoiki();

};

void Mas::vvod()
{
    for (int=0;i<n;i++)
    {
        cout <<"array["<<i<<"]=";
        cin>>array[i];
    }
}
int Mas::proizved(rez)
{
    for (int=0;i<n;i++)
    {
        rez*=array[i];
    }
    return rez;
}
void Mas::dvoiki()
{
    int kol=0;
    for (int=0;i<n;i++)
    {
        if(array[i]<=2) 
        {
            ++kol;
        }
    }
    cout <<"ne dopuchenyh="<<kol<<"\n";
}
void Mas::vivod()
{
    cout <"rez="<<k<<endl;
}

int main()
{
    int rez=1,k,b;
    cout<<"n=";
    cin>>"n";
    Mas S;

    S.vvod();
    S.proizved(rez);
    S.vivod();
    S.dvoiki();
}


Скажите правильно ли я составил алгоритм, или это можно было сделать по проще и лучше?

  Ответить  
 
 автор: ols   (15.10.2007 в 13:45)   письмо автору
 
   для: ols   (11.10.2007 в 16:41)
 

up

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования