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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 19:29   #1
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию проблема с написанием многомодульной программы

программа простенькая
нужно посчитать количество четных и нечетных чисел в строке
каждая функция в отдельном модуле
вот код текст выдаваемой призапуске ошибки в конце компилятор ошибок не видит
в чем проблема ???

Код:
#include<stdio.h>                 
#include<conio.h>                      
#include<stdlib.h>
#include<clocale>
#include <iostream>
using namespace std;


#include "read_m.cpp"
#include "write_m.cpp"
#include "raschet_ch.cpp"
#include "raschet_n.cpp"
#include "write_s.cpp"


void main ()
{ 
int *MAS;
int const p=20;
int mas[p]
MAS=mas;
int ch,n;

read_m(MAS,p);
write_m(MAS,p);
raschet_ch(MAS,p);
raschet_n(MAS,p);
write_s(ch,n);
_getch();
}
read_m.cpp
Код:
void read_m (int *MAS, int p)
{
   	int i;
    for (i=0;i<p;i++)
   *(MAS+i)=rand()%100;
}
write_m.cpp
Код:
void write_m (int *MAS, int p)
   {
    int i;
    for (i=0;i<p;i++)
    printf(" %d",*(MAS+i));
    printf("                      ");
   }
raschet_ch.cpp
Код:
void raschet_ch (int *MAS, int p)
   {
	int i;
	int ch=0;
   for (i=0;i<p;i++)
   if (*(MAS+i)%2==0)
   ch=ch++;
   int a=ch;
   }
raschet_n.cpp
Код:
void raschet_n (int *MAS, int p)
   {
	int i;
	int n=0;
   for (i=0;i<p;i++)
   if (*(MAS+i)%2!=0)
   n=n++;
   int b=n;
   }
write_s.cpp
Код:
void write_s (int a,int b)
{
printf("kolichestvo chetnbIx elementov: %d",a);
printf(" \n");
printf("kolichestvo nechetnbIx elementov: %d",b);
 }
при запуске ошибка такая :Run-time Check Failyre #3 The variable "n" is being used without being intialized
почему она не инициализирована не пойму

Последний раз редактировалось серг; 18.03.2010 в 20:09.
серг вне форума Ответить с цитированием
Старый 18.03.2010, 19:40   #2
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

блин я туплю люди ошибка же простая поправьте меня (((

Последний раз редактировалось серг; 18.03.2010 в 20:22.
серг вне форума Ответить с цитированием
Старый 18.03.2010, 20:23   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

учись искать ошибки сам. Берешь ставишь в подозрительной строке
Код:
cin.get() или system("pause")
если остановилась, то до этой строки код нормально выполнился, и так ищи пока не найдешь место где прога сваливается...


покажи где она тут инициализирована?
Код:
void main ()
{ 
int *MAS;
int const p=20;
int mas[p]
MAS=mas;
int ch,n;

read_m(MAS,p);
write_m(MAS,p);
raschet_ch(MAS,p);
raschet_n(MAS,p);
write_s(ch,n);
_getch();
NiCola999 вне форума Ответить с цитированием
Старый 18.03.2010, 20:33   #4
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

int ch,n хотя я не уверен если не прав объясни плиз
а вообще сваливается она на raschet ch и raschet n потому что не инициализирована это я понялпонял что надо написать
ch=raschet_ch (MAS,p);
n=raschet_n (MAS,p);
но при дописи требует заменить войд на инт заменяю при запуске пишет
error LNK2005: "int __cdecl raschet_n(int *,int)" (?raschet_n@@YAHPAHH@Z) already defined in raschet_n.obj
error LNK2005: "int __cdecl raschet_ch(int *,int)" (?raschet_ch@@YAHPAHH@Z) already defined in raschet_ch.obj почему

Последний раз редактировалось серг; 18.03.2010 в 20:43.
серг вне форума Ответить с цитированием
Старый 18.03.2010, 20:50   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
(*(MAS+i))
имхо так пишут программисты извращенцы. MAS[i] не легче?

это вобще не нужно...
Код:
#include<stdio.h>                                  
#include<stdlib.h>
#include<clocale>
Цитата:
ch=raschet_ch (MAS,p);
n=raschet_n (MAS,p);
у тебя ф-ии возвращают void, а не int


я смотрю ты опять допускаешь теже ошибки, что и в прошлый раз=)
Код:
ch=ch++;
n=n++;

; куда потерял?)
Код:
int mas[p]
кстати после добавления ; программа запустилась

вот это меня удивило
Код:
int ch,n;
write_s(ch,n);
и что же выведет write?)

вот вывод твоей проги
Цитата:
41 67 34 0 69 24 78 58 62 64 5 45 81 27 61 91 95 42 27 36
kolichestvo chetnbIx elementov: 4063232
kolichestvo nechetnbIx elementov: 2009187038

Последний раз редактировалось NiCola999; 18.03.2010 в 21:08.
NiCola999 вне форума Ответить с цитированием
Старый 18.03.2010, 20:57   #6
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

иправил как ты сказал в цитированных тобой двух строчках вот че пишет
error C2440: '=' : cannot convert from 'void' to 'int'
error C2120: 'void' illegal with all types

ток не понял где потерял int mas[p]
в чем ошибка с ch++ и n++ я туплю блин )))
кинь полный код я сравню)) который у тебя запустился

Код:
#include<conio.h>                      
#include<stdlib.h>
#include<clocale>
#include <iostream>
using namespace std;


#include "read_m.cpp"
#include "write_m.cpp"
#include "raschet_ch.cpp"
#include "raschet_n.cpp"
#include "write_s.cpp"


void main ()
{ 
int *MAS;
int const p=20;
int mas[p];
MAS=mas;
int ch,n;

read_m(MAS,p);
write_m(MAS,p);
ch=raschet_ch (MAS,p);у меня не запускается из за этих двух строк да я туплю объясни поподробнее
n=raschet_n (MAS,p);   пишет  error C2440: '=' : cannot convert from 'void' to 'int' 
write_s(ch,n);
_getch();
}
Код:
void raschet_ch (int *MAS, int p)
   {
	int i;
	int ch=0;
   for (i=0;i<p;i++)
   if (MAS[i]%2==0)
   ch=ch++;
   int a=ch;
   }
Код:
void raschet_n (int *MAS, int p)
   {
	int i;
	int n=0;
   for (i=0;i<p;i++)
	   if (MAS[i]%2!=0)
   n=n++;
   int b=n;
   }
Код:
void write_s (int a,int b)
{
printf("kolichestvo chetnbIx elementov: %d",a);
printf(" \n");
printf("kolichestvo nechetnbIx elementov: %d",b);
 }
так правильно или нет???

Последний раз редактировалось серг; 18.03.2010 в 21:20.
серг вне форума Ответить с цитированием
Старый 18.03.2010, 21:13   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
#include<stdio.h>                 
#include<conio.h>                      
#include<stdlib.h>
#include<clocale>
#include <iostream>
using namespace std;






void read_m (int *MAS, int p)
{
   	int i;
    for (i=0;i<p;i++)
   *(MAS+i)=rand()%100;
}

void write_m (int *MAS, int p)
   {
    int i;
    for (i=0;i<p;i++)
    printf(" %d",*(MAS+i));
    printf("                      ");
   }

void raschet_ch (int *MAS, int p)
   {
	int i;
	int ch=0;
   for (i=0;i<p;i++)
   if (*(MAS+i)%2==0)
   ch++;
   int a=ch;
   }

void raschet_n (int *MAS, int p)
   {
	int i;
	int n=0;
   for (i=0;i<p;i++)
   if (*(MAS+i)%2!=0)
   n++;
   int b=n;
   }

void write_s (int a,int b)
{
printf("kolichestvo chetnbIx elementov: %d",a);
printf(" \n");
printf("kolichestvo nechetnbIx elementov: %d",b);
 }
 
 
 
int main ()
{ 
  int *MAS;
  int const p=20;
  int mas[p];
  MAS=mas;
  int ch,n;

  read_m(MAS,p);
  write_m(MAS,p);
  raschet_ch(MAS,p);
  raschet_n(MAS,p);
  write_s(ch,n);
  _getch();
  return 0;
}
NiCola999 вне форума Ответить с цитированием
Старый 18.03.2010, 21:21   #8
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

в чем ошибка с ch++ и n++ я туплю блин )))
вот мой код который не работает что не правильно не понял

Код:
#include<conio.h>                      
#include<stdlib.h>
#include<clocale>
#include <iostream>
using namespace std;


#include "read_m.cpp"
#include "write_m.cpp"
#include "raschet_ch.cpp"
#include "raschet_n.cpp"
#include "write_s.cpp"


void main ()
{ 
int *MAS;
int const p=20;
int mas[p];
MAS=mas;
int ch,n;

read_m(MAS,p);
write_m(MAS,p);
raschet_ch (MAS,p); написал как у тебя все равно вылетает не инициализированы говорит
raschet_n (MAS,p);   
write_s(ch,n);
_getch();
}
Код:
void raschet_ch (int *MAS, int p)
   {
	int i;
	int ch=0;
   for (i=0;i<p;i++)
   if ((*MAS+i)%2==0)
   ch++;поправил
   int a=ch;
   }
Код:
void raschet_n (int *MAS, int p)
   {
	int i;
	int n=0;
   for (i=0;i<p;i++)
	   if (*(MAS+i)%2!=0)
   n++; поправил
   int b=n;
   }
Код:
void write_s (int a,int b)
{
printf("kolichestvo chetnbIx elementov: %d",a);
printf(" \n");
printf("kolichestvo nechetnbIx elementov: %d",b);
 }
как правильно то писать надо
почему не переводит

Последний раз редактировалось серг; 18.03.2010 в 21:42.
серг вне форума Ответить с цитированием
Старый 18.03.2010, 21:24   #9
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

сравни мой код со своим...
NiCola999 вне форума Ответить с цитированием
Старый 18.03.2010, 21:31   #10
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

написал как у тебя при выполнении тупит вылетает в коде красным выделено вылетает в write_s(ch,n)
если пишу ch=raschet_ch(MAS,p);
и n=raschet_n(MAS,p);
где красное пишет
error C2440: '=' : cannot convert from 'void' to 'int'
может не туда вставляю

Последний раз редактировалось серг; 18.03.2010 в 21:40.
серг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с написанием программы-медиаплеера на Delphi (Вывод видео на форму) ЕКА Помощь студентам 5 12.07.2010 14:58
Помоги с написанием программы Adex Общие вопросы C/C++ 2 14.01.2010 19:13
Помогите с написанием программы на Pascal Paket4ik Помощь студентам 9 21.07.2009 12:28
Помогите пожалуйста с написанием программы в Delphi BochinAnton Помощь студентам 13 16.06.2009 21:20
MulCer можешь пожалуйста помочь с написанием программы?(если необходимо то с финансовой поддержкой) Goenich Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 03.06.2009 05:59