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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2012, 17:06   #1
Lenty
Пользователь
 
Регистрация: 16.06.2010
Сообщений: 16
Радость Найти ошибку 2

Здравствуйте, помогите найти ошибки в 2-ч задачах.

1 задание.
преобразовать массивы F[15] , G[10],расположив в них подряд только положительные элементы.
вместо остальных элементов записать нули используя функцию.Предусмотреть функцию формирования элементов массива.

Код:
#include<iostream.h>
#include<conio.h>
int zam(int a[50], int p)
{
int i;
for(i=0;i<p;i++)
if(a[i]>=0)
cout«" "«a[i];
for(i=0;i<p;i++)
if(a[i]<0)
a[i]=0;
cout«" "«a[i];
return(a[i]);
}

void main()
{
clrscr();
int f[50],g[10],n,i;

cout«"\n BBedute kolu4ectBo 3lementoB: ";
cin»n;
cout«"\n BBedute 3lementbI maccuBa F: ";
for(i=0;i<n;i++)
cin»f[i];

cout«"\n "«zam(f,i);

cout«"\n BBedute kolu4ectBo 3lementoB: ";
cin»n;
cout«"\n BBedute 3lementbI maccuBa G: ";
for(i=0;i<n;i++)
cin»g[i];

cout«"\n "«zam(g,i);

getch();
}
1-й массив, вроде, нормально обрабатывает. Но заместо нулей в ответе выводит непонятно откуда взятые числа.
Lenty вне форума Ответить с цитированием
Старый 15.06.2012, 17:49   #2
Lenty
Пользователь
 
Регистрация: 16.06.2010
Сообщений: 16
По умолчанию

2 задание. удалить часть символьной строки ,заключенной в скобки (вместе со скобками ).Вывести второе и последнее слово.

Код:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
clrscr();
char str1[100];
char str[100];
cout<<"введите слово : ";
cin>>str[100];
int i=0,k=0,strt,f;
for(i=0;i<strlen(str);i++)
{
if(str[i]=='(')
strt=i;
if(str[i]==')')
f=i;
}
for(i=0;i<strt;i++)
{
str1[k]=str[i];
k++;
}
for(i=f+1;i<strlen(str);i++)
{
str1[k]=str[i];
k++;
}
cout<<"второе и последнее слово: "<<str1;
getch();
}
Не пойму, почему выводит непонятные символы в ответе...
Lenty вне форума Ответить с цитированием
Старый 15.06.2012, 18:04   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
удалить часть символьной строки ,заключенной в скобки (вместе со скобками )
Код:
char str[100]={0};
cout<<"введите слово : ";
cin>>str[100];
int i=0;
 for(;str[i] && str[i]!='(';i++) cout<<str[i];
 for(;str[i] && str[i]!=')';i++);
 for(;str[i];i++) cout<<str[i];
cout<<'\n';
//Вывести последнее слово.
 for(; str[i]!=' ';i--);for(;str[i];i++) cout<<str[i];
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.06.2012, 23:41   #4
FreeCat
Пользователь
 
Регистрация: 04.06.2012
Сообщений: 16
По умолчанию

1 задача.
Твоя проблемма: ты не совсем понял как с++ с функциями работает...
ты передаешь функции не переменные и не масивы, а их значения!!!
и функция обрабатывает не сами переменные, а их значения. После завершения работи функции ее переменные выходят из области видимости и удаляются... т.е. результат не сохраняется!!!
Попробуй передать переменные в функцию по ссылке.
Странно как она у тебя вобще пошла... там кроме етого куча синтаксических ошыбок...
Код:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int zam(int* pa)
{if(*pa<0)*pa=0;
}

int main()
{
// blok formirovania masivov
int f[15],g[10];
cout<<"vvedite elementy masiva f"<<endl;
for(int i=0; i<15; ++i)
{
        cout<<i<<": ";
        cin>>f[i];
        }
cout<<endl<<"vvedite elementy masiva g"<<endl;
for(int i=0; i<10;++i)
{
         cout<<i<<": ";
         cin>>g[i];
         }
//blok modifikacii masivov za usloviem zadachi
for(int i=0; i<15; ++i)
{zam(&f[i]);
cout<<"f["<<i<<"]: "<<f[i]<<", ";}
cout<<endl;
for(int i=0; i<10; ++i)
{zam(&g[i]);
cout<<"g["<<i<<"]: "<<g[i]<<", ";}
system("PAUSE");
return 0;
}
и, если правильно понял второе задание 1 задачи, организовал формирование елементов масива через функцию...
Код:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
void zam(int* pa)
{if(*pa<0)*pa=0;
}
int form()
{
    int a=0;
    cin>>a;
    return a;
}

    

int main()
{
// blok formirovania masivov
int f[15],g[10];
cout<<"vvedite elementy masiva f"<<endl;
for(int i=0; i<15; ++i)
{
        cout<<i<<": ";
        f[i]=form();
        }
cout<<endl<<"vvedite elementy masiva g"<<endl;
for(int i=0; i<10;++i)
{
         cout<<i<<": ";
         g[i]=form();
         }
//blok modifikacii masivov za usloviem zadachi
for(int i=0; i<15; ++i)
{zam(&f[i]);
cout<<"f["<<i<<"]: "<<f[i]<<", ";}
cout<<endl;
for(int i=0; i<10; ++i)
{zam(&g[i]);
cout<<"g["<<i<<"]: "<<g[i]<<", ";}
system("PAUSE");
return 0;
}
или даже для удобства просмотра результатов:
Код:
// blok modifikacii masivov
for(int i=0; i<15; ++i){
zam(&f[i]);
zam(&g[i]);
cout<<"f["<<i<<"]: "<<f[i]<<", ";
if(i<10)cout<<"           g["<<i<<"]: "<<g[i]<<", ";
cout<<endl;}
2 задача:
заменить стрим си-ин на cin.getline(str,100); - так будет веселее )))
после цыкла, который проганяет слово в скобках еще раз надо ++i;
после дописать:

i=0;for(; str[i]!=' ';++i);for(; str[i]!=' ';++i)cout<<str[i]; - тогда начнем вывод с 2 слова
вуаля... извините, если ето против правил про халяву... но не смог удержаться)))
PS: извините за дабл пост.... я искал способ удалить следующее сообщение но не нашел...

Последний раз редактировалось FreeCat; 16.06.2012 в 01:54.
FreeCat вне форума Ответить с цитированием
Старый 16.06.2012, 00:17   #5
FreeCat
Пользователь
 
Регистрация: 04.06.2012
Сообщений: 16
По умолчанию

Код:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int zam(int* pa)
{if(*pa<0)*pa=0;
}

int main()
{

int f[15],g[10];
cout<<"vvedite elementy masiva f"<<endl;
for(int i=0; i<15; ++i)
{
        cout<<i<<": ";
        cin>>f[i];
        }
cout<<endl<<"vvedite elementy masiva g"<<endl;
for(int i=0; i<10;++i)
{
         cout<<i<<": ";
         cin>>g[i];
         }
for(int i=0; i<15; ++i)
{zam(&f[i]);
cout<<"f["<<i<<"]: "<<f[i]<<", ";}
cout<<endl;
for(int i=0; i<10; ++i)
{zam(&g[i]);
cout<<"g["<<i<<"]: "<<g[i]<<", ";}
system("PAUSE");
return 0;
}
вуаля... извините, если ето против правил про халяву... но не смог удержаться)))
FreeCat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку Lenty Общие вопросы C/C++ 7 15.06.2012 09:44
найти ошибку Alex1911 Общие вопросы C/C++ 2 28.03.2011 00:43
Найти ошибку Uvaroff Помощь студентам 3 13.01.2010 01:45