• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

tabliczka mnożenia-funkcja źle działa

Object Storage Arubacloud
–2 głosów
663 wizyt
pytanie zadane 30 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam

Jestem studentem pierwszego roku informatyki. W związku z tym ,że nadchodzi dużymi krokami egzamin z podstaw programowania postanowiłem  sobie ,że w ramach nauki do egzaminu zrobię raz jeszcze zadania , które robiliśmy 

przez cały semestr na laboratoriach jednak postanowiłem je troszeczkę przerobić. Postanowiłem każde zadanie robić na funkcjach  mimo tego że zadanie tego nie wymaga , żeby jak najlepiej nauczyć się funkcji ale do rzeczy.

Mam takie oto zadanie:Napisz program, ktory wyswietla na ekranie tabliczke mnozenia do 100 w postaci tablicy wyników 10x10, jak pokazano poniżej.

Wszystko działa jak należy tylko wyskakują mi warinngi o treści:   warning: 'x' is used uninitialized in this function [-Wuninitialized]|.Czy ktoś może mi powiedzieć co zrobić żeby tego nie było? z góry dzięki 

/*Napisz program, ktory wyswietla na ekranie tabliczke mnozenia do 100 w postaci tablicy wyników 10x10, jak pokazano poniżej.

   1   2   3   4   5   6   7   8   9  10
   2   4   6   8  10  12  14  16  18  20
   3   6   9  12  15  18  21  24  27  30
   4   8  12  16  20  24  28  32  36  40
   5  10  15  20  25  30  35  40  45  50
   6  12  18  24  30  36  42  48  54  60
   7  14  21  28  35  42  49  56  63  70
   8  16  24  32  40  48  56  64  72  80
   9  18  27  36  45  54  63  72  81  90
  10  20  30  40  50  60  70  80  90 100
*/
#include <stdio.h>
#include <stdlib.h>
 void tab_mnozenia(int x,int y)
{
    for(x=1;x<=10;x++)
    {
        for(y=1;y<=10;y++)
        {
            printf("%d\t",(x*y));
        }
        printf("\n");
    }
}
int main(void)
{
    int x, y;
    tab_mnozenia(x,y);
    system("pause");
    return (0);
}

3 odpowiedzi

+1 głos
odpowiedź 30 stycznia 2018 przez damianeqe Gaduła (4,380 p.)

Zmienne x i y nie mają zainicializowanych wartości, aby warning zniknał musisz przypisać im wartość np x =0, y=0;

 

W tym przypadku proponowałbym zrobienie funkcji która nie przyjmuje parametrów tab_mnozenie(); i wewnątrz funkcji użył

 

void tab_mnozenie() 
{
for(int x=1;x<=10;x++)
    {
        for(int y=1;y<=10;y++)
        {
         //...

Wówczas możesz usunąć x i y z main'a to też rozwiąże problem.

0 głosów
odpowiedź 30 stycznia 2018 przez Ghost Bywalec (2,930 p.)
Używasz zmiennej x bez podania jej wartości.
–3 głosów
odpowiedź 7 listopada 2019 przez mmarszik Mądrala (7,390 p.)

Proszę

https://github.com/mmarszik/eduMultiplicationTable/blob/master/main.cpp

 

/**
  * Program do ćwiczenia tabliczki mnożenia od wartości MINV do MAXV
*/

#include <ctime>
#include <cstdlib>
#include <iostream>

#define SIZE_TEST (10)  // Ilość zadań w teście
#define MINV      (-20) // Minimalna wartość w tabliczce mnożenia
#define MAXV      (+20) // Maksymalna wartość w tabliczce mnożenia

static int getV() {
    return rand() % (MAXV-MINV+1) + MINV;
}


static int getN(const int v1, const int v2, const bool repeat) {
    if( repeat ) {
        std::cout << "Błąd, podaj jeszcze raz";
    } else {
        std::cout << "Podaj";
    }
    std::cout << " wynik <" << v1 << " * " << v2 << " = ???" << std::endl;
    int n;
    std::cin >> n;
    std::cout << std::endl;
    return n;
}

int main(int argc, char *argv[])
{
    const time_t start = time(NULL);
    srand( start );
    for( int i=0 ; i<SIZE_TEST ; i++ ) {
        std::cout << "Test nr " << (i+1) << std::endl;
        const int v1 = getV();
        const int v2 = getV();
        int r = getN(v1,v2,false);
        while( r != v1 * v2 ) {
            r = getN(v1,v2,true);
        }
    }
    std::cout << "Brawo, rozwiazales test w czasie " << (time(NULL)-start) << " sekund." << std::endl;
    return 0;
}

 

komentarz 7 listopada 2019 przez criss Mędrzec (172,590 p.)
jaki to ma związek z tym pytaniem w ogóle
komentarz 7 listopada 2019 przez mmarszik Mądrala (7,390 p.)
Ogólny związek, też jest tabliczka mnożenia, każdy może zobaczyć jak to się robi.

Podobne pytania

0 głosów
3 odpowiedzi 26,165 wizyt
pytanie zadane 14 listopada 2016 w C i C++ przez michal121954 Początkujący (260 p.)
0 głosów
1 odpowiedź 867 wizyt
pytanie zadane 3 lutego 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 364 wizyt
pytanie zadane 30 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...