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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2012, 23:35   #1
igarexa
 
Регистрация: 07.10.2011
Сообщений: 5
Сообщение Проблемы с функциями, Си

Здравствуйте, господа-программисты.
Начну пожалуй сразу с описания задачи, и проблемы, свазянными с её выполнением.

1. Написать программу, которая должна работать с массивами. (есть)
2. Надо иметь возможность создавать 2 вида массивов. (есть)
3. Иметь возможность заполнять массив рандомно, или в ручную. (есть)
4. Диалог с пользователем. (есть)
5. Использование функций. (нет, частично)

Опишу необходимую функцию:
Заменить все отрицательные значения массива, на среднее арифметическое положительных значений.
ВАЖНО! долнжно быть 2 функции, выполняют одно и то же, но одна использует индексы, а другая указатели.

Вот тут то и проблема. Работаю над этим уже пару недель. Перечитал статьи, лекции, примеры, отрывки из книг, а всё равно не догоняю....
Работа с индексами ещё более-менее, а вот с указателями косяк (хотя в этой программе получилось лучше).

Помогите пожалуйста разобраться хотя бы с нахождением среднего арифметического (и с индексами и указателями), а с заменой думаю я уже соображу.
Функции aizvietoshana_i и aizvietoshana_r


Выкладываю творение:
Заметка. некоторые строки (описание для себя) в программе на латышском языке. А диалог с пользователем перевёл на русский.

Разделю на 2 части код, так как не вмещается в сообщение.

Последний раз редактировалось igarexa; 19.11.2012 в 23:38.
igarexa вне форума Ответить с цитированием
Старый 19.11.2012, 23:36   #2
igarexa
 
Регистрация: 07.10.2011
Сообщений: 5
По умолчанию

Код:
#include <stdio.h>
#include <windows.h>              
#include <conio.h>
#include <iostream>

#define mas1 15  // pirma masiva izmers
#define mas2 21  // otra masiva izmers+1

int main()
{
    //apaksfunkcijas
    void aizvietoshana_i(int masivs1[],int masivs2[]);
    void aizvietoshana_r(int *masivs1, int *masivs2);
    //masivi
    int masivs1[mas1];
    int masivs2[mas2];
    //mainigie
    char menu;
    bool izvelne,aizpilde;
    int i;
    
    do{
        system("cls");   
        printf ("1: Informacija ob avtore.\n");
        printf ("2: Zapolnitj massivi.\n");
        printf ("3: Pokazatj massivi.\n");
        printf ("4: vipolnitj funkcii.\n");
        printf ("5: Zakon4itj rabotu.\n\n\n");
        printf ("Izvelne: ");
        scanf ("%s",&menu);
        switch (menu) {
               //pirma izvele
           case '1':{
                system ("cls");
                
                printf ("imja, familija, variant\n\n");
                system ("pause");
                break;
                }
                //pirma biedzas, otra sakas
           case '2':{
                do{
                     system ("cls");
                     printf ("Kak zapolnitj massiv?\n");
                     printf ("1: Slu4ajnimi 4islami.\n");
                     printf ("2: Vvesti vru4nuju.\n\n\n");
                     printf ("Izvelne: ");
                     scanf ("%s",&menu);
                     switch (menu){
                            case '1':  {
                                 for (i=0;i<mas1;i++){
                                     masivs1[i]=rand()%10 - 6;
                                 //    printf ("%3d",masivs1[i]);
                                     }
                                 //printf ("\nOtrs masivs\n");
                                 printf ("Massivi zapolneni!\n");
                                 for (i=0;i<mas2;i++){
                                     masivs2[i]=rand()%10 - 6;
                                 //   printf ("%3d",masivs2[i]);
                                     }
                           
                                 printf("\n");
                                 system ("pause");
                                 izvelne=true;//cikla beigas
                                 aizpilde=true;
                                 break;
                                 }
                            case '2': {
                                 for (i=0;i<mas1;i++){
                                     printf ("vvedi zna4enija 1go massiva %d :  ",i);
                                     scanf ("%d",&masivs1[i]);
                                     }
                                 printf ("\nPervij massiv zapolnen!");
                                 system ("cls");
                                 for (i=1;i<mas2;i++){
                                     printf ("vvedi zna4enija 2go massiva %d :  ",i);
                                     scanf ("%d",&masivs2[i]);
                                     }
                                 printf ("\nVtoroj massiv zapolnen!\n");
                                 system ("pause");
                                 izvelne=true;//cikla beigas
                                 aizpilde=true;
                                 break;
                                 }
                     }
                                 //break;
                }
                while (izvelne!=true);
                //system ("pause");
                break;
                }
                //otra izvele beidzas un tresa sakas
igarexa вне форума Ответить с цитированием
Старый 19.11.2012, 23:36   #3
igarexa
 
Регистрация: 07.10.2011
Сообщений: 5
По умолчанию

Код:
case '3': {
                system ("cls");
                if (aizpilde!=true){
                   printf ("Massivi ne zapoleni!\n");
                   system ("pause");
                   break;}
                else{
                     printf ("Masivi.\n");
                     for (i=0;i<mas1;i++)
                     printf ("%3d",masivs1[i]);
                     printf ("\n");
                     for (i=1;i<mas2;i++)
                     printf ("%3d",masivs2[i]);
                     //printf ("\n%d",masivs2[1]);
                     printf ("\n");
                     system ("pause");
                     break;
                     }
                } 
                //tresa izvelne beidzas un ceturta sakas
           case '4': {
                      if (aizpilde!=true){
                   printf ("Massivi ne zapoleni!\n");
                   system ("pause");
                   break;}
                else{
                            system ("cls");
                            printf ("Masivi.\n");
                     for (i=0;i<mas1;i++)
                     printf ("%3d",masivs1[i]);
                     printf ("\n");
                     for (i=1;i<mas2;i++)
                     printf ("%3d",masivs2[i]);
                     //printf ("\n%d",masivs2[1]);
                     printf ("\n");
                     }
                     
                                 aizvietoshana_i (masivs1,masivs2);
                                 aizvietoshana_r (&masivs1[0],&masivs2[0]); 
                                 system ("pause");
                                 
                     break;
                     }
        }
        }
        while (menu!='5');
system ("pause");
}

    void aizvietoshana_i (int masivs1[], int masivs2[])
    {         
         int sum, i, m;
         float sr;
                printf ("Peremennie s indeksami\n\n");
         
         for (i=0,sum=0;i<mas1;i++)
          {
              if (masivs1[i]>0){
                sum+=masivs1[i];
                sr = sum / 15;} 
          }
                if (sum>0)
                printf ("Srednee arifmeti4eskoe 1go massiva  %f .\n",sr);
                else
                printf ("Srednee arifmeti4eskoe 1go massiva negativnoe 4islo.\n");
                m=0;
                sum=0;
                sr=0;
         for (i=1,sum=0;i<mas2;i++)
         {
             if (masivs2[i]>0){
                sum+=masivs2[i];
                sr = sum / 20;} 
         }
                if (sr>0)
                printf ("Srednee arifmeti4eskoe 2go massiva %f .\n",sr);
                else
                printf ("Srednee arifmeti4eskoe 2go massiva negativnoe 4islo.\n");
                
         }      
    void aizvietoshana_r (int *masivs1, int *masivs2)
    {
         
         int sum,i, m;
         float sr;
                printf ("Zna4enija s ukazateljami\n\n");
         for (i=0,sum=0;i<mas1;i++)
         {
             if (*(masivs1+i)>0)
             { sum+= sum+i; 
              sr = sum / 15;
                printf ("Srednee arifmeti4eskoe 1go massiva %f .\n",sr); }
                else
                printf ("Srednee arifmeti4eskoe 1go massiva negativnoe 4islo.\n");
         m=0;
         sr=0;
         }
         for (i=1;i<mas2;i++)
         {
             if (*(masivs2+i)>0)
             { sum += sum+i; 
              sr = sum / 20;
               printf ("Srednee arifmeti4eskoe 2go massiva ir %f .\n",sr); }
                else
                printf ("Srednee arifmeti4eskoe 2go massiva negativnoe 4islo.\n");
         m=0;
         sr=0;
         }}
igarexa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с функциями ctype.h Fatal Error Общие вопросы C/C++ 2 02.07.2012 15:50
Возникли проблемы с функциями FRATER1234 Общие вопросы C/C++ 10 08.10.2011 20:51
c++ проблемы с тригонометрическими функциями kukumumu Помощь студентам 4 02.04.2011 18:28
Проблема с функциями! Ислам Помощь студентам 21 03.03.2011 21:35
Работа с функциями !) vladtum Общие вопросы C/C++ 0 28.11.2010 17:25