Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.12.2009, 23:18   #1
Delphi-x
 
Регистрация: 15.12.2009
Сообщений: 2
Вопрос Простые операции с одномерными массивами.

Простые операции с одномерными массивами.

В одномерном массиве, состоящим из N вещественных элементов, вычислить:

Сумму элементов массива, расположенных после последнего элемента, равного нулю;

Код:
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <time.h>
using namespace std;

  int main()
{
 double A[1000],summ=0;
 int i,n;
srand(time(NULL));
 cout<<"Vvedite razmernost massiva:\t";cin>>n;
 for(i=0;i<n;i++) {
 A[i]=(rand()-7000)/1000;
 printf("%5.3f ",A[i]); }
 for(i=n;i>0;i--) {
	 if(A[i]!=0) {
	 summ=summ+A[i]; }
 }
  
 if (summ!=0)cout<<"\nsumma elementov:\t"<<summ;
 else cout<<"\nsumma elementov=0";

 _getch();
 return 0; 
}
Начиная с конца считаем сумму элеменов, и когда элемент равен "0" выводим сумму этих элементов
ВОт получилась такая программа, вродь всё правильно, но не показывает сумму элементов

Последний раз редактировалось MaTBeu; 01.01.2010 в 20:10.
Delphi-x вне форума
Старый 30.12.2009, 23:32   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Оформляйте код тегами [сode][/сode] (решётка(#) над полем текста)
Второе: индексация в C начинается с нуля, то есть последний элемент массива индексируется n-1, а первый 0. Поправил программу:
Код:
#include <iostream>
#include <conio.h>
#include <ctime>
using namespace std;

int main()
{
    double A[100];
    double summ = 0;
    int i, n;

    srand(time(NULL));

    cout << "Vvedite razmernost massiva:\t";
    cin  >> n;

    for(i = 0; i < n; i++) {
        A[i] = (rand()-7000)/1000;
        cout << A[i];
    }
    for(i = n-1;i >= 0; i--) {
        if(A[i] == 0)
            break;
        summ += A[i];
    }

    if( A[i] == 0 && i != -1 ) // Потому что может случиться, что сумма как раз будет равна 0 )
        cout << "\nsumma elementov:\t" << summ;
    else
        cout << "\nNet 0 v massive\n";

    _getch();
    return 0;
}
не проверял, но должно работать. Почему в Вашем коде не показывает сумму элементов не знаю, должно вроде. Возможно элемент за пределами массива(тот, который первым считаете) равным нулю
netrino вне форума
Старый 30.12.2009, 23:59   #3
Delphi-x
 
Регистрация: 15.12.2009
Сообщений: 2
По умолчанию

Спасибо, всё работает
Delphi-x вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа на паскале с одномерными массивами Loga Помощь студентам 27 14.01.2010 11:12
Работа с одномерными массивами (Паскаль). Theory Помощь студентам 1 14.12.2009 21:58
проблема с одномерными массивами Ekaterina1989 Помощь студентам 1 13.12.2009 21:34
Нужна помощь с одномерными массивами! SHYRA777 Помощь студентам 1 03.12.2009 16:37
Организация циклов и работа с одномерными массивами Zenit10 Помощь студентам 9 17.01.2008 22:20