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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2012, 19:52   #1
lokis.valxalo
Новичок
Джуниор
 
Регистрация: 06.03.2012
Сообщений: 2
По умолчанию исправить ошибки уже сделанных программ. Разные темы. С++

Всем привет. Тут новичек, решил просить помощи у гуру программистов.
Проблемы.
Есть 4 программы и 3 из них не работают, одна выдает неверное значение.
1 Работ.
Она написана уже. Ее смысл заключается в том чтобы посчитать кол-во слов и вывести в конце строки ответ. (кол - во строк <20) Проблема в том что, если первым в строке стоит пробел, она его считает за слово. Вот код, писалась на CodeBlocks. Программа в 2х файлах.
Код:
main.cpp

#include <iostream>
#include <string>
#define n 20

using namespace std;

void get_text(string (*txt)[n], int num);
void show_text(string (*txt)[n], int num);
void change_text(string (*txt)[n], int num);

int main()
{
    string text[n];
    int s_num;
    cout << "Put number of strings ( =<"<<n<<" ): "; cin >> s_num;
    get_text(&text, s_num);
    change_text(&text, s_num);
    cout << endl;
    show_text(&text, s_num);

    system("PAUSE");
    return EXIT_SUCCESS;
}
 

f.cpp

#include <iostream>
#include <string>
#define n 20

using namespace std;

void get_text(string (*txt)[n], int num)
{
    for (int i=0; i<=num; i++)
        getline(cin, (*txt)[i]);
}

void show_text(string (*txt)[n], int num)
{
    for (int i=1; i<=num; i++)
        cout << (*txt)[i] << endl;
}

void change_text(string (*txt)[n], int num)
{
    string buf_str;
    int i,k, word_num=1;
    char c;
    char number[10];

    for(i=1; i<=num; i++)
    {
        for(k=0; k<=(*txt)[i].length(); k++)
        {
            c=(*txt)[i][k];
            if (c!=' ')
            {
               buf_str+=c;
            }
            else if  ((*txt)[i][k+1]!=' ' && (*txt)[i][k+1]!=0)
            {
                buf_str+=c;
                word_num++;
            }
        }
       
        itoa(word_num, number, 10);
        (*txt)[i]=buf_str;  (*txt)[i]+=" ";
        (*txt)[i]+=number;
        buf_str.clear();
        word_num=1;
    }
}
2 Программа.
Остальные писались практически без компилятора.
В этой работе осуществляется работа с одномерным массивом.
Даны 3 числовых последовательности (они у меня рандомом). Надо сформировать 2 другие х и у.
x[i]=max(a[i],b[i])/2;
y[i]=max(b[i],c[i])/2;
Код:
#include <cstdlib>
#include <iostream>
#define n 10

using namespace std;

void init_array(float *s[n])
{
for(int i=1;i<=n;i++) 
*s[i]=rand()%11;
} 

void list_array(float *s[n])
{
cout « "{";
for(int i=1;i<=n;i++)
{
cout « *s[i];
if (i<n)
cout « ", ";
else
cout « "}" « endl; 
} 
} 

Вычисления и вывод
#include <cstdlib>
#include <iostream>
#define n 10

using namespace std;

void init_array(float *s[n]);
void list_array(float *s[n]);

int main()
{
float a[n],b[n],c[n],x[n],y[n];

srand(time(NULL));

init_array(a);
init_array(b);
init_array(c);

cout « "a[]="; list_array(a); cout « endl;
cout « "b[]="; list_array(b); cout « endl;
cout « "c[]="; list_array(c); cout « endl; 

for(int i=1;i<=n;i++) ««< вот это переделать в функцию надо и выкинуть в другой файл.
{
x[i]=max(a[i],b[i])/2;
y[i]=max(b[i],c[i])/2;
} 

cout « "x[]="; list_array(x); cout « endl;
cout « "y[]="; list_array(y); cout « endl; 
system("PAUSE");
return EXIT_SUCCESS; 
}
2 прога писалась на Dev c++ который почему то отказал работать.

3 Программа. Она с матрицами(двумерными массивами). Вычислить произведение чисел для каждого столбца, удовлетворяющих условию х(i,j)<b. Здесь b – произвольная величина. N <= 5, M <= 10
2 Файла, напутал с функциями. Нормально не назвал и не могу вызвать, так сказать
Код:
main.cpp

#include <cstdlib>
#include <iostream>
#define n 5
#define m 10

using namespace std;

void show_a(int arr[n][m], int st, int tb);
void init_a(int arr[n][m], int st, int tb);
void calc_a(int arr[n][m], int st, int tb, int con);

int main()
{

int a[n][m];
int str, tab, cond;
cout « "Put the number of strings ( <="«n«" ): "; cin » str;
cout « "Put the number of tabs ( <="«m«" ): "; cin » tab;
cout « "put condition ( > ): "; cin » cond;

cout « endl;

init_a(a,str,tab);
show_a(a,str,tab);
calc_a(a,str,tab,cond);

cout « endl;

return 0;
}



f.cpp
#include <cstdlib>
#include <iostream>
#define n 5
#define m 10

using namespace std;

void show_a(int arr[n][m], int st, int tb)
{ int i,j;
cout « endl;
cout « "array[n][m]= ";
for (i=1;i<=st;i++)
{
cout « "{";
for (j=1; j<=tb; j++)
{
if (j<tb)
cout«arr[i][j] «", ";
else
cout«arr[i][j]«"} "«endl«" ";
}
}
cout « endl;
}

void init_a(int arr[n][m], int st, int tb)
{
int i,j;
for (i=1;i<=st;i++)
for (j=1; j<=tb; j++)
{
cout «"array["«i«"]["«j«"]=";
cin » arr[i][j];
}
}


void calc_a(int arr[n][m], int st, int tb, int con)
{
int i, k, mult;
for(k=1;k<=tb;k++)
{
mult=1;
for(i=1;i<=st;i++)
{
if( arr[i][k] > con)
mult *= arr[i][k];
}

cout « "Multiplication of " « k « " tab: "«mult«endl;
}
}
4 напишу потом.

Последний раз редактировалось lokis.valxalo; 06.03.2012 в 19:58. Причина: Не дочитал правила
lokis.valxalo вне форума Ответить с цитированием
Старый 06.03.2012, 19:52   #2
lokis.valxalo
Новичок
Джуниор
 
Регистрация: 06.03.2012
Сообщений: 2
По умолчанию

вот 4.

И последняя, 4 работа с файлами, хотел использовать itoa, но накосячил, не хотелось бы его видеть(
Код:
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <string>
#define n 100

using namespace std;

int main()
{
    ifstream input; .// чтение
    ofstream output; .// запись
    FILE * finput; 
    int str_num=1, i, a, sum=0;
    char text[n][128];
    string txt[n];


    input.open("input.txt");

    while (!input.eof())
    {
        if ( (i=input.get())!='\n')
        {
           input.putback(i);
           input>>a;
           sum+=a;
        }
        else
        {
            txt[str_num]=itoa(sum); txt[i]+=' ';   <<< 100 % не правильно, но другого придумать не смог
            str_num++;
            sum=0;
        }
    }

    input.close();

    finput=fopen("input.txt", "r");

    for (i=1; i<=str_num; i++)
    {
        fgets(text[i],128,finput);
        txt[i]+=text[i];
    }

    fclose(finput);

    output.open("output.txt");

    for(i=1;i<=str_num;i++)
        output<<txt[i]<<endl;

    output.close();

    return 0;
}

Последний раз редактировалось lokis.valxalo; 06.03.2012 в 19:59.
lokis.valxalo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно создать триал версию уже готовых программ? Aqil_f Общие вопросы Delphi 8 27.06.2016 01:14
Первое окно, но уже ошибки L6go1as Win Api 9 01.01.2012 19:03
Исправить уже написанную программу Shiza321 Помощь студентам 1 27.01.2010 12:49
Задачи на разные темы... assams Паскаль, Turbo Pascal, PascalABC.NET 2 18.09.2009 11:21
Несколько очень легких задачек!проверьте себя!!на разные темы,от нах-я суммы до массивов!!прошу решить,кн ruslan55 Паскаль, Turbo Pascal, PascalABC.NET 3 17.06.2008 12:43