Extras din laborator
Chişinău 2014
1.Scrieţi un program care calculează suma cifrelor pentru fiecare număr din consecutivitatea de 100 de numere aleatoare.
Listing:
#include <cstdlib>
#include <stdlib.h>
#include <iostream>
using namespace std;
int calc_num(int num){
int i=0;
if(num<0)num*=(-1);
if(num==0)return 1;
else{
do{ //divizam numar pina cind el o sa fie <0,calculam si
i++; //returnam numar de cicluri care si reprezinta numar
num/=10; //de cifre
}while(num>0);
}
return i;
}
int main(int argc, char** argv) {
int m,i,num;
for(i = 0 ; i<100 ;i++){
num = rand();
m = calc_num(num);
std :: cout <<"n numarul este :"<<num<<"n numarul de cifre este :"<<m <<"nn";
}
return 0;
}
Output (pentru ultimele 2)
numarul este :596516649
numarul de cifre este :9
numarul este :1189641421
numarul de cifre este :10
2. Scrieţi un program care roteşte fiecare element al listei dublu lănţuite n la dreapta cu b poziţii.
//Listing
//list_class.h
#ifndef LIST_CLASS_H
#define LIST_CLASS_H
//definim structura pentru pastararea datelor
typedef struct node{
int val;
node *next,*prev;
}*Node;
class list{ //definim class lista
public :
Node head,tail; //structuri de tip head si tail
list(void): head(NULL),tail(NULL){}; //initial head si tail sunt nule
~list(void){
while(head){ //stergem lista
tail = head->next;
delete(head);
head = tail;
}
}
void add(int val);
void print_list(void);
void offset_list(int b);
};
void list :: add(int v){ //adaugam un nod
Node n1 = new node;
n1->val = v;
n1->next = NULL;
if(head!=NULL){
n1->prev = tail;
tail->next = n1;
tail =n1;
}else{
n1->prev = NULL;
head = tail = n1;
}
}
void list :: print_list(void){
Node temp;
for(temp = head ;temp!=tail;temp = temp->next){
std :: cout<<temp->val<<" ";
}
std :: cout<<tail->val<<" ";
}
void list ::offset_list(int b){
int i;
Node temp1,temp2;
for(i = 0;i<b;i++){
temp1 = tail -> prev;
tail -> prev = NULL;
temp1->next = NULL;
temp2 = tail;
tail =temp1;
temp2->next =head;
head = temp2.
Preview document
Conținut arhivă zip
- Laboratoare la C++.doc