Модераторы: Poseidon

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> [C++]где ошибка программы, помагите исправить ошибку программы 
:(
    Опции темы
Randol
Дата 25.6.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



вообщем дело такое;
начал изучать С++ сомастоятельно. на учебнике было задания найти средную оценку класса,  надо начинать ввести оценки студентов и для оканчаний надо вести -1 и тем самым закочить ввести оценки и вывести средную оценку класса
 на книге было написона так
 
Код
#include<iostream.h>
#include<iomanip.h>
main ()
{
    float average;
    int counter, grade, total;
    total=0;
    counter=0;

    cout << "vedite ocenku ili -1 dlya zoversheniya:";
    cin >> grade;

    while (grade!=-1); {
        total=total+grade;
        counter=counter+1;
    cout << "vedite ocenku ili -1 dlya zoversheniya:";
    cin >> grade;
    }
    if (counter!=0) {
        average= (float)total/counter;
        cout << "srednee znacheniya rovna " <<setprecision (2)
        << setiosflags (ios::fixed | ios::showpoint)
        << average<<endl;
    }
    else 
        cout << "ocenki ne vedeny" <<endl;
        return 0;
    }



(я написал на visual C++ ) жму ctrl+F5 появляется окошка который ведется толька одна оценка, затем enter и ничего больше
подскажите пожалоста в чем ошибка и помагите исправить её
PM MAIL   Вверх
DigitSphinx
Дата 25.6.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Код

while (grade!=-1); {
        total=total+grade;
        counter=counter+1;
    cout << "vedite ocenku ili -1 dlya zoversheniya:";
    cin >> grade;
    }

Убери точку с запятой !
У тебя получился бесконечный цикл !



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
DigitSphinx
Дата 25.6.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Если нет других вопросов по программе , пометь тему как решенную (это сверху кнопочка такая )


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Randol
Дата 26.6.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



ок спосиба.
теперь вопрос такой;
надо написать программу которую считает результаты сдачи эгзамена
1 для отметки здачи, 2 для отметки нездачи 
Код
#include <iostream.h>
main ()
{
    int passes=0, fail=0, student=1, result;
    while (student<=10) {
        cout<< "vedite rezultat (1 zdal 2 nezdal)";
        cin>> result;
        if (result==1)
            passes=passes+1;
        else
            fail=fail+1;
        student=student+1;
    }
    cout<< "zdali "<<passes<<endl;
    cout<< "ne zdali "<<fail<<endl;
    if ( passes>8)
        cout<< "povysit oplatu"<<endl;
    return 0;
}



теперь я хотелбы изменить и добавить такие условия
если вести другие цифры кроме 1 или 2 то вывемти сообщения чтота вроде вы вели другие цифры
как это сделать ?

PM MAIL   Вверх
DigitSphinx
Дата 26.6.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Цикл будет такой
Код

while (student<=10) 
{
        cout<< "vedite rezultat (1 zdal 2 nezdal)";
        cin >> result;
        if (result==1)
            passes++;
        else if (result == 2)
            fail++;
        else 
        {
            cout << "Error" << endl;
            continue;
        }
        student++;
}



Это сообщение отредактировал(а) DigitSphinx - 26.6.2007, 18:36


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Xenon
Дата 26.6.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 19
Всего: 50



Так очевиднее smile
Код

while(student <= 10)
{
    cout << "Vvedite rezultat: 1 - sdal, 2 - ne sdal";
    cin >> result;
    switch(result)
    {
    case 1: ++passes; break;
    case 2: --fails; break;
    default: cout << "Error" << endl; continue;
    }
    ++student;
}



--------------------
user posted image  
PM MAIL   Вверх
DigitSphinx
Дата 26.6.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



Xenon, 
Есть еще очень много способов !
Но человек начинающий а ты ему switch , ++passes   smile 
Кстати что --fails значит ??  smile

Добавлено через 1 минуту и 16 секунд
У тебя может получится количество не сдавших -3  smile  что не есть хорошо  smile  smile 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Xenon
Дата 26.6.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 19
Всего: 50




Модератор: Сообщение скрыто.



--------------------
user posted image  
PM MAIL   Вверх
Randol
Дата 12.7.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



задача такая;
надо наисать программу которая ведется сторона квадрата и затем ресует "*" символом квадрат.

Код
#include <iostream.h>
#include <iomanip.h>
main()
{
    int row=1, row1=1,a, column=1;
    cout <<"vedite storonu ";
    cin >> a;
    while ( row <a) {
        ++row;
        cout << "*";}
    while ( column <a) {
        ++column;
        cout << "*"<< setw(a-1) << "*" <<endl;
    }
    while (row1<=a) {
        ++row1;
        cout << "*" ;}
    cout<<endl;
    
    return 0;
}

программу я написал. но когда она запускается вместе с квадратом из звездачек "*" верху с правой стороны появляется еще одна "*".
отступ между квадратом и лишной звездачкой меняется зависимости стороны заданной квадрата.
подскажите пожалоста где ошибка программы.
PM MAIL   Вверх
bsa
Дата 12.7.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Если честно, не понял. Вводится длина стороны?
С форами было бы намного понятней:
Код
#include <iostream>
#include <iomanip>
using namespace std;
main()
{
    int a;
    cout <<"vedite dlinu storony: ";
    cin >> a;
    for(int i = 0; i < a; ++i)
        cout << "*";
    cout<<endl;
    for(int i = 0; i < a-2; ++i)
        cout << "*"<< setw(a-1) << "*" << setw(1) <<endl;
    for(int i = 0; i < a; ++i)
        cout << "*";
    cout<<endl;
    
    return 0;
}
А проблема со звездочкой была из-за того, что ты не сделал конец строки после рисования горизонтальной стороны.
PM   Вверх
JackYF
Дата 12.7.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Вот, переделал немного:
Код

#include <iostream.h>
#include <iomanip.h>
int main()
{
   int row=1, row1=1,a, column=1;
   cout <<"vedite storonu ";
   cin >> a;
   while ( row <=a) {
      ++row;
      cout << "*";
   }
   cout << "\n";
   while ( column <a-1) {
      ++column;
      cout << "*"<< setw(a-1) << "*" <<endl;
   }
   while (row1<=a) {
      ++row1;
      cout << "*" ;
   }
   cout<<endl;

   return 0;
}




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Randol
Дата 14.7.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



ясно, спосибо.
и вот еще:
некак немогу написать программу которую печатает триугольник из "*".  Чтота вроде такого

*
**
***
****
*****
******

если нетрудно подскажите как надо сделать или напишите ее цикл.
PM MAIL   Вверх
Dov
Дата 14.7.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Код

void Triangle(int n)
{
    if(n > 1)
        Triangle(n - 1);
    for(int i = 0; i < n; i++)
        cout << '*';
    cout << endl;
}

int main()
{
    Triangle(6);

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Randol
Дата 19.7.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



всем спасибо за помощ.
потскажите пожалоста как будет оператор который будет печатать случайно выбронное число из набора.
набор дапустим может бать такой: 2, 4, 6, 8,10.
PM MAIL   Вверх
bsa
Дата 19.7.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Код
#include <stdlib.h>
...
array[(int) (array_size * (rand() / (RAND_MAX + 1.0)))];
где array - это "набор" (массив значений)
array_size - количество значений в "наборе"
PM   Вверх
Randol
Дата 19.7.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



а можна написать это без использования массива?
PM MAIL   Вверх
bsa
Дата 19.7.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



random() выдает целые значения от 0 до RAND_MAX. Вот и разминайся.
PM   Вверх
Randol
Дата 19.7.2007, 19:58 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



никак немогу написать программу с функций который ведедся баллы студентов и печатаестся оценки. если баллы 100-90 то оценка 5, если 80-89 то 4, 70-79 оценка 3, 60-69 оценка 2.
Код

#include <iostream.h>
int quality (int);
main ()
{
    int ball, student;
    cout << " skolka studentov: ";
    cin >> student;
    for (int a=1; a<=student; a++) {
        cout << "vedite ball studenta: ";
        cin >> ball;
        cout << "ocenka rovna: " << quality(ball);
        cout << endl;
    }
    return 0;
}
quality ( int x)
{
    if ( 90 <=x || x<=100)
        cout << "5";
        if ( 80<=x || x<=89) 
        cout << "4";
        if ( 70<=x || x<=79)
            cout << "3";
            if ( 60<=x || x<=69)
                cout << "2";
        return x;
}



потскажите пожалоста как будет выгледеть правильная программа.
PM MAIL   Вверх
DogStyle
Дата 19.7.2007, 20:48 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



Господа, вы убиваете в человеке талант smile 
А если бы он попросил разжевать Hello World???
Я понимаю вопросы разные бывают, но мне кажется здесь банальная лень!!!! 
Остановите беспредел!!!
PM MAIL   Вверх
bsa
Дата 19.7.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Готовые программы делаются здесь.
PM   Вверх
JackYF
Дата 19.7.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Randol, у функции должно быть возвращаемое значение.
Код

#include <iostream.h>
int quality (int);
main ()
{
    int ball, student;
    cout << " skolka studentov: ";
    cin >> student;
    for (int a=1; a<=student; a++) {
        cout << "vedite ball studenta: ";
        cin >> ball;
        cout << "ocenka rovna: " << quality(ball);
        cout << endl;
    }
    return 0;
}
int quality ( int x)
{
    if ( 90 <=x || x<=100)
    return 5;
    if ( 80<=x || x<=89) 
    return 4;
    if ( 70<=x || x<=79)
    return 3;
    else
        return 2;
}



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
zkv
Дата 19.7.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92



JackYF, пара проверок лишних у тебя  smile 
Код

    if ( 90 <=x || x<=100)
    return 5;
    if ( 80<=x ) 
    return 4;
    if ( 70<=x )
    return 3;
    else
        return 2;

PM MAIL   Вверх
Randol
Дата 30.7.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



нужно выполнить следуйше задачу.
надо прочитать 10 чисел и после того, как прочли очередное число, надо напечатать его, но только втом случее если оно не дублирует ранее прочитонные числа.

вот программа:
Код
#include <iostream.h>
int linesearch(int [], int);
main()
{
    int const size=10;
    int a[size], element, count=0;
    for (int i=0; i<size; i++) {
        count++;
        cout << "vedite mssiv: ";
    cin >> a[i];
    element=linesearch(a, count);
    if (element == 0)
        cout << " "<< endl;
    else
        cout << element << endl;
    }
        return 0;
}
linesearch(int array[], int sizen)
{
    int const son=10;
    int mass[son];
    for (int x=0; x<sizen; x++)
        array[sizen]=mass[x];
    for (int n=0; n<sizen; n++)
        if (array[sizen] != mass[n])
            return n;
        else return 0;
}




немогу выполнить задачу. получается совсем нето что задоно. помагите пожалоста найти ошибку и изменить её.
PM MAIL   Вверх
bsa
Дата 30.7.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Вообще-то твоя linesearch делает совсем не то, что ты хочешь.
Во-первых, она зачем-то перезаписывает array[sizen] sizen раз (что может быть неправильно, так как sizen может быть равно 10 - размеру массива), в итоге получая array[sizen] = mass[sizen-1], в то время как, массив mass содержит случайные непроинициализированные данные.
Во-вторых, на втором цикле происходит немедленный выход на первой же итерации (т.е. поиска собственно не происходит).
В третьих, тебе надо выводить значение элемента или его индекс? По заданию - значение, а судя по возвращаемому значению linesearch - индекс в массиве.
PM   Вверх
Randol
Дата 30.7.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



вот, попробовал исправить.

Код
#include <iostream.h>
#include <iomanip.h>
int linesearch(int [], int, int);
main()
{
    int const size=10;
    int a[size], searchkey, element;

    for (int x=0; x<size; x++) {
        cout << "vedite element massiva: ";
        cin >> searchkey;
        a[searchkey];
    element=linesearch(a, searchkey, size);

    if (element ==0)
        cout << setw(26) << " " << endl;
    else
        cout << setw(26) << element << endl;
    }
    return 0;
}
int linesearch(int array[], int key, int sizen)
{
    for (int n=0; n<sizen; n++)
        if (array[n]==key)

            return 0;
    else
        return key;


но все равно неработает.
вчем ошибка?
PM MAIL   Вверх
Earnest
Дата 30.7.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 2
Всего: 183



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
Guedda
Дата 31.7.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78




M
Guedda
Модератор: Пожалуйста, один топик - один вопрос.
Тему закрываю!



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0749 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.