Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ Sprzwdzanie czy suma liczb jednosci elementow jest wieksza niz 1/10 sredniej


Rekomendowane odpowiedzi

Opublikowano

Niech ai oznacza element znajdujący się na pozycji i(i=1,...,n) w ciagu n liczb całkowitych dodatnich,a.
Napisać program, który sprawdzi, czy suma wartości elementów ciągu utworzonego z najmniej znaczących cyfr (cyfr jedności) kolejnych elementów ciągu a jest większa niż 1/10 średniej arytmetycznej wartości elementów ciągu a. Program powinien umozliwiać użytkownikowi wybranie jednego z dwóch sposobów generowania ciagu a:
1) podanie wartosci ciagu z klawiatury.
2) wygenerowanie ciagu liczb o wartosciach wylosowanych z zadanego przez uzytkownika zakresu

 

WYMAGANIA FORMALNE. Ciag liczb powinien byc zapisany w tablicy. nalezy pogrupowac czesci programu w funkcje, przyjmujace tablice jako jeden z argumentow. 
Komunikaty z wynikami powinny byc wyswietlanie wylacznie w funkcji main().
Program nie powinien zawierac zmiennych globalnych.

ma ktoś jakieś pomysły?

 

Poniżej to co napisałem do tej pory. i stanąłem w miejscu

#include<iostream>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;


char menu(){//deklaracja funkcji menu która zwraca typ char czyli pojedyńczy znak
	char opcja;//deklaracja zmiennej typu char opcja która będzie przechowywać podany przez uzytkownika klawisz
	cout << "Podaj literę opcji:\n";//wyświetlanie menu
	cout << "a. Ciąg generowany automatycznie\n";//wyświetlenie tekstu
	cout << "b. Ciąg wygenerowany z zakresu\n";//wyświetlenie tekstu
	cout << "c. Podanie elementów z klawiatury\n";//wyświetlenie tekstu
	cin >> opcja;//pobranie od użytkowanika wybranego klawisza i przypisanie do zmiennej opcja
	return opcja;//zwrócenie przez funkcje wybranej przez użytkownika opcji
}

//funkcja nic nie zwraca bo jest void ale otrzymuje tablice(wskaźnik) i rozmiar tej tablicy czyli ilość elemnetów
void wypelnij_a(int tab[], int rozmiar){//funkcja wypełnia tablice elemntami generowanymi przez funkcje rand funkc
	for (int i = 0; i<rozmiar; i++){//pętla for działa tyle razy ile wynosi zmienna rozmiar
		tab[i] = rand() % 1000;//przez tą funkcje rand z zakresu od górnie nałożonego
	}
}
//funkcja nic nie zwraca bo jest void ale otrzymuje tablice(wskaźnik) i rozmiar tej tablicy czyli ilość elemnetów
void wypelnij_b(int tab[], int rozmiar){//funkcja wypełnia tablice elemntami generowanymi
	int a, b;//deklaracja zmniennych typu całkowitego int
	cout << "Podaj zakres np. \"100 200\":\n";//wyświetlanie tekstu
	cin >> a >> b;//pobranie zakrsu od użytkownika
	for (int i = 0; i<rozmiar; i++){////pętla for działa tyle razy ile wynosi zmienna rozmiar
		tab[i] = rand() % (b - a) + a;//wypełnienie tablicy liczbami z podanego zakresu
	}
}
//funkcja nic nie zwraca bo jest void ale otrzymuje tablice(wskaźnik) i rozmiar tej tablicy czyli ilość elemnetów
void wypelnij_c(int tab[], int rozmiar){//funkcja wypełnia tablice elemntami generowanymi
	for (int i = 0; i<rozmiar; i++){//pętla for działa tyle razy ile wynosi zmienna rozmiar
		cout << "Podaj " << i + 1 << " liczbę: ";
		cin >> tab[i];//użytkownik sam podaje każdy elemnt tablicy
	}
}

void pokazTablice(int tablica[],int rozmiar){
	char znak;
	cout<<"\n\t\a Czy  chcesz zobaczyć dane zawarte w tablicy (t/n)?";
	cin>>znak;
	if(znak=='t'){
		//pęla od sprawdzanie poprawności działania programu
		for (int i = 0; i<rozmiar; i++){
			cout << tablica[i] << endl;
		}
	}
}


int main(){
	srand(time(NULL));//funkcja dzięki której rand nie będzie powtarzał liczb
	setlocale(LC_ALL, "Polish");//polski język funkcja ustawia nam ogonki w konsoli
	int rozmiar;
	cout << "Podaj rozmiar tablicy: ";
	cin >> rozmiar;//pobranie rozmiaru tablicy od użytkowanika
	int * tablica=new int[rozmiar];//deklaracja tablicy o rozmiarze ze zmiennej rozmiar
	switch (menu()){//przełącznik(switch) wywołuje funkcje menu i otrzymuje od funkcji jaki klawisz został wcisnięty
	case 'a': wypelnij_a(tablica, rozmiar);//wywołanie funkcji jeśli user podał a
		break;
	case 'b': wypelnij_b(tablica, rozmiar);//wywołanie funkcji jeśli user podał b
		break;
	case 'c': wypelnij_c(tablica, rozmiar);//wywołanie funkcji jeśli user podał c
		break;
	}
	pokazTablice(tablica,rozmiar);//funkcja pokazuje zawartość tablicy
	
//	system("cls");//wyczyszczenie ekranu

	system("pause");//wstrzymanie probgramy aby się nie zamknął z automatu jeśli odpalamy exe nie przez kompilator
}

235761444056892195480.gif

Opublikowano
void wypelnij_a( int tab[], int rozmiar, int &wynik1, double &wynik2 )
{
    wynik1 = 0;
    wynik2 = 0;
    for( int i = 0; i < rozmiar; i++ )
    {
        wynik2 = wynik2 + tab[ i ];
        
        while( tab[ i ] != 0 )
        {
            wynik1 = wynik1 + tab[ i ] % 10;
            tab[ i ] = tab[ i ] / 10;
        }
    }
    
    wynik2 = wynik2 / (double)rozmiar;
    wynik2 = wynik2 / 10;
}

Chyba o to chodzi, dodam że nie uruchamiałem wiec może być błąd.

Opublikowano

Patrząc na szybko na kod autora, to zdaje mi się, że za dużo komentarzy pisze.
Zamiast poprawić czytelność kodu to mamy efekt odwrotny.

Oczywiście czemu nie korzysta się z system() to nie będę tłumaczył.

    cout << "Podaj literę opcji:\n";//wyświetlanie menu
    cout << "a. Ciąg generowany automatycznie\n";//wyświetlenie tekstu
    cout << "b. Ciąg wygenerowany z zakresu\n";//wyświetlenie tekstu
    cout << "c. Podanie elementów z klawiatury\n";//wyświetlenie tekstu

Co to za chore połączenie komentarza z coutem.

cout << "Tekst w pierwszej linijce\n"
        << "Druga....\n"
        << "Trzecia....\n";

Nie chciałbyś skorzystać z vectorów?

TuByłaSygnatura.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...